From bc4d3a32ebdb53c53e9a5de3e09a4d5ee0f57da6 Mon Sep 17 00:00:00 2001 From: Cirno Date: Sun, 29 Nov 2020 13:11:58 +0100 Subject: [PATCH 001/314] Updated Polish translation --- gamefiles/TEXT/polish.gxt | Bin 239930 -> 241096 bytes utils/gxt/build.bat | 3 +- utils/gxt/polish.txt | 8072 +++++++++++++++++++++++++++++++++++++ 3 files changed, 8074 insertions(+), 1 deletion(-) mode change 100644 => 100755 gamefiles/TEXT/polish.gxt create mode 100755 utils/gxt/polish.txt diff --git a/gamefiles/TEXT/polish.gxt b/gamefiles/TEXT/polish.gxt old mode 100644 new mode 100755 index 1782ef870ab8bdc8f9d306eb71419c2c04146bfb..d31372cf4d9325227ab1c76752d14d8fe910575b GIT binary patch delta 45391 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 delta 43941 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

)!65#6wi+vw+&PO`F)5|(|mP;(k9rA?NTbjWZp zKvxWBFh|G#Q5BRLQQp6*fBO;=o~k)f8KNzQaaD25 zFs{^YTgH{|zo}!fDVU*@O(bZ(JKawNpVH{wrR zK?KX~LJC^;(K^k+L?P{!oQc3(xQ%{U9Z*?cNCz$ZXvLqEJXBLin=Rwf3e7cGu3gg{ z#iLdOt|35j#W`y zb28CLQ#7Y0#c8(WsI)}IRW2vml8)5VF~wMKR?&IQnMfi`H+7;aoS>Y4mj|S4a3L{7 zbG$xE`I-|rLypsu_Pu1i;9yt@oXYiO(Cc!;hVPK0RaH7>s{&CXbIO~(JabOf79 zvvfuzQAaB^S7VcQljdkWHYqjN1+YtQ8Mko%Lls&FvyZY|M1IS-wzOPKt(G&mBViMz zw7_zl)*7z#(E-bKbkT4fHkq&MisQIe)QoFR8eKB2wVb3ino}Wcy&I0yQLn$MW3jZL(T0)t%YHg$WK{CRbQ04( zaa+cJPBhUfBqHHtDpXlV7Yt)8{eM&PbTCK>%OP527@G{242N)2fgD**I)wFv;YgTz z3|CdsO~cg%87gt~0oB-}wG2~RE}}J-{j|$+fNmJZ;w8`3<=|vC#W1c3=NqoCrv-)) z|MyGIBvWa`f7jCoV~OgwTt{;)$7!A77TnmPt%fnDm-UjzBE;6w&N~d(Q>3?MOxMMh zeRSM19?#F11a21fx>Fxe-$VoYXr36NTFVi-VmV4%?lL;{bi;Cj3hp-YBsE%Ypc$51 zXpiPhIvJoNCIjdD?fvw@sT$gE7;C+whH-j5eUH>h2XIm;%TbKGeH1ZV6`*#*DE~vv zAw0pm-!MLeu>M|$_kWV<5DwUJuPUgDHxv3Ru0d>AX*oihHAgF}=!)SgJZOBM(vPB? zJj35ahU+txwB06RbXs#VP(>FFqq5xlRY6GvmNAA=aiif0F`8pI zT2G4&<5audFgkNtGcQ*CxhOM(k4^-z9B$+UGd{97({h|n7{+BeeMafvCM)&TT#4R{_VT^rnpsK7ALA+fv-*Vk;7`qr(48s!c z14^GaEb|Q~V^pg-jEXmCjzIro#kl{3`?<$-MisVJZyCm!aKIo{Xf+NPWf+TynVM@M zpR1Xp-U`EzZ_&&vsQre~h|v$KG7%am{$NHYu+Ug*GSK@InlXHI!7wZ|V6f8XQ}$5J z@jwIl4dW~~*>VFd(mWC6tkawbO`zk3Gce;hlR)dD52*@pcb@iHt|xbhk|)v2e8U*; zxMA3IkzrJ})-tA_Vf5y#Vf4QL!w#?iQ;7fAu|z_03YXlLYiN~ZJW5^@r`|)MQ-izK zQEXCbX7i5M97hGUnv=K+o@W>f)FqmEfx1C*BAiN0$WV_?@KfeT4f6)1V!lmJIgg;? zXdqb~gdZqQ1+imNCOML?<1V^lzV}Gm3>Uyj^Q4aakeg3(rjYMF(s`ZX z2hVv_DHVfnX)XbG4O8+`Fg>QY3|OJL9NeQh03JGA=>(8iq#5ledR)mXf&Pq6V0P0I z&4^ocOEWq~Wh2x97*^`hTn+Y(RPq||I?c7<+EGeA0lZT)R$^50gp$M1v{*Af|AhN; z`6>eoSK6!@{z2C?PXtFkt8^y9riU~qARj(j$>I1k!!UHlJgMc#$Qz@WhqBo)5(~y~ z{Kvw@ZbW)&ET1uCxI&pS&r2&ex@qs;ihGZ<=F2ujIlpy7+P&U zd2G7Sm%)8GlfdBLG>pOTEYeCC{8gH{x=%H;e~j=e9rllRo zPlLdRo@Sk*G+U@maVE_s+NLwgV3*s5VU~^xbwC-+a>+2JN@qaJF;%u3hPgHdwH)TU zU>GLaU8&@3_Q4^=Z1t_7j7qTC$A&c{u~sur%YhLk=V^IBGY?I$O38U>`cy0Cq3P1h zL(^Epa_&1Ctyntd*jg!1v;X0PVJg7}8!|yLAF|dknmQt?eY zb-2ApBQ$d)o+Y^ML>6W&qDnI=5D5~kkG4&fp*T;G_W zA&PmaM`IQ9(w-V6Cj$6{Ej~)c`pktibP}^1R$8bT@rHUdb5t7EqI5WZ1U2(;pU>z7 zkN5PyQ%XF>A8O_?zNneUZ^UG!!{fJ9u?&HiG;_rZ|6c0wGY524v7C$XDN-)IakpYT ze~X{Iw9MeT=tIpsJ>pZPoc)PLO;gNrnl71ri=v9TZM20soT$SZg?gB)>*eYDAah-` zo}Z^XD;ZlGuZLdJsm**mzV^)7XO0Iz%-a`m;;Vs zH1x1xOoP-+t&bpZ$uJyw;1{(VK_Frn@p-;sG`im`=w!GR2+(6W!3;-hHw-i0GK^{C zdrs>hJ})*53tcdb_&j5_)=9!wp4SXhFEfnz9Ge4q0}KQw%FKE}C45MnYSWC~*S2d$ z@Atf@xClCI*@3p$M)R?X8lyju^&}wSR@>p)~Hm({jn!p~TOo zuOR+choksZJ|3M_8F4&UP90rZj*KgY;Y3lR4=1`{7!zve0|7AofX zw@_N-8nMjpcIli+Zn?%#Vsuh2l70jBe1(8J9IrL?SL&Ka-B9kk}y;X_nJ%#Vn@UHBiC= zmHlI{X72vf?<#o___${HB8^(BtvA|6Wr=4 z-&ac9>MfeN)fY5#tGhNS9d2}wWV}NJy#6hgt9OWmHY?@^&DP9y9oEcsHNTDc&j)a2 zN8VNkaAl*nDCWx6YUauYzoX=Ap=!x~S@BuTY>DMtS%)VXE<)Z_%#|(D%ynJRjQgKB z3vE+MTv?fBu57(#u58hJN{5Hzl4SL|ot@iRUM#O6bAF(h%^uXuW}mB>&Avl3H*Uxd z=x1;+w=TsAur#}7wnWYkm7E(F)69)qq?sExc&F0g#+7O2@U~PlUl*K`ER99C70YRy z8Sy?JEIUBWisd}+QY`23N@fn=`03GH2m{ydQgU9?tJL~y z5#yS-DbB>$LHh6JjAXn9SLVaOHK9N?UyzJpu8W78<8f;3mW(++(&6jF z)jw6tQ;YT~=9$%{nP=8s&FsnfAF&She|T!ml!?MLPpu1@d1`g;R|WCZ+NhbQ)~uf? zIZv(gn)#A@#sQYgnME5E!-MdA@Xw`OPW3~Yxj_RnAFB**(MrwSpbs^3gQomK>2QNS z*31p+Jjil3DE5C8OS6BfnVT{Hmr_SI;-Y4@O8k(LWB(fq%U`JkH{yV1X_doD&W*S( zS%wD6`!&lEda+WvWEc}XbVSQh^De_^-xbZ=p!VM=9d7o)-yr^TL0s(Uqbh^_V6SHO zgF&AtIr~9}W?ngL)y(E?Ii_^DXWKP%$L9Q2$+=@anz>_FG)Fl8$Bru{HgD*6%rfZF zEXC5KJ2Z0-PHX0hb5BTpIj+r`x#C{`PszFB)0(;B+LJ8jZeb0Lx$a;luw z%qHsn5ApzMp=Qn8yaSrKsOD2jhb?qgGh1l*@0FYzn$XM^Dmbm=+|bNoo#2)Z`A3z( zE#1XjAC?Qh!<8Yk!B7=9p{w145n-S7sb4aJ))V-KJ2`b zv)OlOX0w<4QOQGm{k`IXO0e0-{i|Z0a;r46V;G;{Bl-e9?kfNK@Y-jDmM zl*`^PGmPFJ(###}eN*Xh$M$RHlICRoOJ#7+u50F=4Zfx1+_PDlxo0aibI%6+x6%H{I8M>AXKl4iD0%Uw!`hwqwUG;~>C$TPUO z3{*Ph&|hd6 zjaaLht&;mdMk%pbN*++mW;vjltG_zHXYG$iUeNgGJlkSnM;>2OaGW1Rz z%sOhfeTQa#|18aXh%?k2-Jn>G{iY#OE-f_pVa06tX3bp1F3o&&uc1nZt#Vv5Tcz(K zO3qdprkQ)c1)M>}a`lqPQ%cT5P$Ru3E04jboG!JM3}8=uPS=EyqAz zuv|oQ3yj=P`z#mJ@5n|MqWhAETa*Y@z#`aMhBl2v|LJkK5yh@ zG|O^1ZMK{VQ0;i56r^*O@!9XEjT}#~S`O2K3L}ruPRmu)7BKQ^I;)wdnLFN69sYQQ0NSc)&TLbx>EY zD#KWRRoetMiY*86vQeW{N%=K~L$uOzm_DpEa(pIyf?^Inotk-RUl4^nF|iWup*F*q zLOqJ{`5Sm(?>emnN9ZsN+nqLyt__Sqr=g~b3+>X(7ZU3XClR=q)2RgC{5e){*hd%R zF4YAhH34i+^_j>V!#|WcF~f-jioxZQ%$Ov3G;?Jrh7Uf{x&(8To1bbc7QW#<{s~VfpyY_Y4rGnVH9+*4RXA|G|-GYB$Df6L2N|y{}SZ5 z_ZX|f$Ml$!&GJ@$0doT{^0EFZlZm8!dZAHqBR=pzbD5j5)`2CCTCSt~b}h%|-$KiE zbV_n0iU;Lr*o&-F+rSSQwlT|x6fjdHs~6q$FlW;00fcKv#KKK!?!t)HbL-CWkeQ{s5Q;oQs2q5Aqnl3M36<6e6s z`hP?wU_5N~+>(s#bC|UH6;^79@mp^?G~?Aiv{^Ea#LsTYcyCWb3$=H$emY)>c8vZq z7;g@$hv}v=H`E33(Gr>ouE)pw_-8J29Phv2cAw=$LrT8rXUKfXyeCglW^KCJl9lOJ zfa7@hf?tz!%yIz@|B8_pQk!Lbe8V!PP?yoc8nX-WUlxRE)@3rFv)3>t<}JfGA&oQo zI3cYtj8ooW!&q+*TcFFtdb>q)x}bojSjGa!aHhaVeZQ&>NaHnWt(LK9w2T+iE;Ks$ zz=~zOJJfO+`Mzd!%4v~d?8%(4Tu2p*v<|k&)`K(L`!rsYmiKj&fwz`gF2;MBjJ$+O z78@?5t(MEE|2K@hoH`8SEom1e;|<8{%1c-$hO2kHd_Xc@PjNNz~tu~59q36=4kAB2$9Hx2vfCbK?$7c6DQ z`?vV%*Dg+k)GM^MFo*F32^!s_IL@!!x~!Pr;!i`q#X55CQj6v!8nK2MZ@1?NxSu)7 zPaENb$ISIn`Ff4(l4EM2ky*wWi4@<3$TN&(O@ZMg&TNL8a4VI0VuO51)pq7YIGDh+ zJf;{=*yCgNlGXde`hS~s)Z4DcORlfw_eD>UoJ!#H57_mPiAEU#4>LEYM{+Jp=C^TA zqCv}DlJ!DAqBvF0(G8pkglg&$pGSSiaFEVguB5dqj66h%SDEYB?P%t!i2t16*uF_; z@M7eUVN`HMaw^8(_t0-8AIw}pd6o;Qz_O2OEf>)g%YK?^xtQ7w^YeF$Oae}~+%V?- zX2Y2GI}Bsq?>CHjf5kB7{cXdT_d~MWP&LFp#k_8%jm-GGDE}N{&fvpk{Bv1mpauBJ zS;b0d0e;3v4r0$MMIp)jzy|h!Ut=BS02QoeR%gqDie;e*A?32rGm2%QbJs{YUz<>- z-*;sK{lXfJS%q!dBRLeUsj8+6lEb*iicLhxRq{PC{$*tF71fB+IUKXy&eM)XZHwsF}MKS*P^5 zYh9Y*T6A4AmJPJ*b)|zDO}k!4+(u<`*L&7_#oUUPH<;DXEKtloN|y~|2#0QvI%zJH z-c-zmZq>}^kFm&ewILH1noX zn`X8OZB;sKiH(}s5`ErPa<)W5Gxz?SW^@?u|Jhz3bH*?4|L&IwIV0$TVp&=44_S$?)^QU; zGgsEBnVWZ5Gao&4r_yK39o5X1>-WBrv*m)CxuID3=-r0VnZZ9+a_+#~A9MUii?|2pIRl%E{Ml@`$1q;E$&7_G z$BBF}pPEn(-O$WETl*8pEAhB5rompx^|<&($0R54Y%=^nF@JK0Zc9#9CZmY|BlhB8 zL_NHFfXWm%;8T_qlN`fy#!;Fo8F3dsvm~pp>zJ>Z7YpkZb9-pJW|kjSEa%@@%`A6+ zihA++FX`d~I05DiKXas6UWCkHuCB*hDXVCyfZ6L^E^eq==DMhC6=88eIm)15t_n4f~~{JCPh?1U~F#@GZu zhP*y7ftO#ck{j5d)Xp52S9P>RayX1{^`JG9qZxkGk2cFhJ#Nl~@G>zzK%G3V{X#Pa zeAX{D!>?~z_S4cskf*Q$!H0_1DUR0Qa%qcV+$_RuQY_zuI^tKX4|}2!CBMpWqF!EW z#bgFPm4qkJr!Y4J@vTmUw7@dn?`ye;j#~E9b;bCYREYW=mdE1ZBs^1O8E;Ux9K%bh zpwkGS%fO5)WTJ|{^n^AuHw9w&RwmlZoQ@~zaUxp%Yr}C`afDgza&7&MVO-@LWp1nq zH(|)YDStC>rc%x)h68lfa*%o-L;P1tl{D_RS_%F;(=y%%cHGE=G~IF~t@)jn!>@N+ z4$#^YMvm|I_&WoUs;@SNVJndi_E%_yJx{)0Mzr^+bJ9IR5B zIan>y%mM0C&3K%cZl6-e@{`qreh&`gHLwT{Qzd5_urC6>BLjNe`X^wj9HFMOvqM6HCbw=rMP^$QYVijL6G z3gs^;qA?fL0eFQ2bs9!VJ({_pCI6~)xS^Xhb3-p_=7tWxsC3x8Gc>bxmuQyO)m+2- zKO_E49l++T)yzw)Gn#p6HRqDj;ic6v!|1}`KWRByx7ILPS8!R$F{5d+VRUS%WK0{U6WJldFkie>o~ z|H(S)A=gcc`T2L83U80ovbk;;j??cpm!mGl%b1hcAj_c3DU-lgY)xU-pMc8!n_(XvWo`({mCro# zBxCq!m7|y^{t%Zr7UOTX-D^2cC&3LdyjKOYY^cYKSN)=wr#sp0RNqQl_EKn!ngiPOwGJi@sQXLWoNf@b!> zL~kWe2QmMK+^G}rx>bfTW*ZH|LOTt^DO&nyeKMc}&EaF}NIXAW2LQfYHWCa^(`ZO}gVaRwM`%XZ5?I&B$? zhyfme*;(>lQcr{!U#!~y4|WcGX9f>A6RG;1j9$Zyu89h$j8&5tNKZ%QB5 z%ndq}r{s813Jrc#F*j&4a|Q*$TC_)Ja3cl`Q%bz!wa_ryaaA)%!1l+K4xgMp)XXQR z-ourgPdqJ>r9Ek(V%dQUhEaZI^5cAf`o7i;hPelZQE~GKrNh1X&@gmzMk+b?W}Ig3 z%u>zVnM0b{qWwlGeeOU)F+cx~19S$5p97lt6rA^jI)HmQMKkxZN3uGzT~sU`DmS0? z{nDROnt7oy%P<;4c6PEJ@LbJPPsU; z&KY8VO&9Yk+$&=2I%l{@?REy#q{i4%d5_Xn(V#zpXm{?Nlj2DYS z&cN=I)y@t_%<#FxMShbvBwO%Sw7XZe+v+~@9KDS1iF%fvp)oMlNQzT}TJVj6F?mI!S5 z4idhEGh3`~^^S^pbxuk5sF<_M6_Y1AGepHir&ZjT;4BsRv~)j_o8xU4ol$44IMvUa zEpqFeshrzS#P0ESii3sTSTW})telr}LSlBVmm@l!_3}h(gR@h#rkq*gTFPk`hf-+5 zz(!|)SeJ0Ni*xsS3q)Q_B)HSo8BGbbXJ> zQ{Ecq?jTB?jFmi}{j$@)KQ-HT>u?c?dwKV=LOXqd=HT!-^lbK(w|*|J zl)1U0>qm}X42^rEo=Rf8G191G0@cu1ctL<(LQP!qOQ;hMHNb8G3L!s0k7mF6c9FPN za;`K)D~m&jx(O%M~|oxkJT@X>iXy2b?I|A}Vr!iC>3)iOJFWB2)(a5)UT$qJ`cO`dt#{WWonaS)sg+|)+4?n5AKpXx`+S4z0gk#zl4Ebcpk^ByW}qG-ts3mbyxS8|8(0bYRub(5vuJkr%Pyc47*G^sH4cC2C+;%au zHn<3{v$wlrUR&-KWX~NQmL2<>LD~67J28_!@42sJmu?&^@M$BT$m>Sg3-^N(`<()D z^G9%?btT?Vv2qUvV*DOwRQBwupes)#Y zSaETQSMhiVqmsgSuwzwHEq?P9P%gIsk{YUl!v&5w&xl!VD1XUs5X1WNuT4js)(0yw zdjgb%Td|Lt0~#>A*~891i?y%0obo>g|~9 z&;QJMTD1Sn@n?s=GfeD!3uiaD!l-P{?!NDDKepTzQyi~%_Rz_;?3hoEIeFQ?eexA2 zB?8}a9}vC!yPMu0_q#2Q*xKLSDmMJLyYT&UCzd*5*lo8hJLhDh*fiMPA?EDHn72&! zZg$U@=^aFKyPurpJ>Yogzo>l9`!WPSdCq&A`|-^4-YfX?d-W$d$NM!>kG$ah5`X^q zg7;Ub{-MqLkrN0bBF>O=?itL#cGxM7)NF*j=U^**MFpr$=1hYo2SnUOfVG?OKZL;^ zn+<&QME2TG7otZ@a}QJ~68?x6)WS0d6n!>Z`|}bhdosK2=c6T!%-;TaLet!jCxbru zxL&6tzZeJl>My>a)9dzyH02x|p{eDdD)EWzhX;pB*%M+;jW5jIxso65|GrMo|C#Ov7h9bjb0CkiH$Ie|vu)r5JWWC{20LLD zErd}Pup0{Ty7%bn^gn=6MQteOdRh(=_}rG`ieyYr-?l;dSk@A*Stn?aD_KS50UyIkrw$DsBYv>jdr+)f z?e!JQRv%R%>Y_sY=c?EiZ7_c)s1^43-d5-7J9!jep!Fg%*Q*pWUi4CTnN~a{KKPbbB--bp zTj$?(hKl9$ya9Js!(ZwsEM8zspZgWgs^@>@W3zGS&cg^s zQQm#;I!_AsU96nXyz2EA$G_^$Ts;q-cj0A>;c*@+-@7>dx4q`|7Rz7uVxr<*r3;dE9!>_YV&OY}o;MtA$>Az<#Ob+Sg@@LQj|8d-zJ_x54?-K^5-p;n z0&4NsaAe8LUWFLG#>>Co3tR{4}|13 zfjKM+^RlxW|B_}FnU}nW#NpS_v*vGkBOX%9tWpEJHqbX=Sq>2~nk0Vz9n^I^<5i1; z3%s!&R^;N7jMwzJxSWVDN`F#Qc{(cLHQVzrWE=jrA|00=(23vwi^a4T;o!I1m80f~ z)M{_Q13VY2PV)^u-8}i(lc&*lMIm>^{i=6N?0OZ(#IFIO z-wH41jv6#zjrgZ`Fefg&=#_}E9bVoYPZR!$i51?%ciE+_xMvLlUjH>-zdI{2lM)o= z8Tj~J?7uu?riov7puHR3#g*rwU*Q+#^#D!|6+OZm^qB-&okFVu&IX%cQHPR6weIHe{? z@e+rP!VTh!f)1q280Sml^0a;)c`qUwPZPiWCL-9mm%N4dsH+5gj~|*fTRho?nLcI% zBGHjmaGe9IFbGHvzVi!M-?!82;*$>eWuGq8zwjjlpLs9AbXVqq7I)$z8ZjbQl>7>F z;OHuEpgJ7R(O-v0qyxi`UBfZ{^=(W)u zA@;wC_3@<&RNuVOE%?mm5rBAw$D_&D#dY9X@%%>jAyyx>+Cj}{-o$akE7A7t)u;~? z<6k4h&NtoBV%M9vS{$;`&53Uj3{;Us2l<5hb@AL1 z#J8c_u?WAu-I*y4z3m0X(H}UCV#iciXY>|Svv7;ILX6)JQ|{np_tJGR@3o&I?8LWY z#Xe#O;`@>xfTsMw$$x;?xp5dFiO%2=JQ##8?IvMQ#CxQB%fnv2Bl>M|=8DG6sIs%t z-R8u_53|nwqTpGlclXN84wmo>w>XJ=IS9+M1^&Wq#V1>whC8^lnE2>X_kOYcZD)!& z_m%1q`mD{KDy>+5}J_6r{ov>7Vhcn_cI5VMT4N`X@UWDAleH6c6>y3O=IUdhW z?h1!PK6@;bp|Xkpio2G0BSrgKG;ZDwEV37W&FkMi=xbhuBli6eHr>7!C;s6((X3%R zaV<6YeJl&`D@SbK;Z(1FA4i3^hSMbWpt&)=Dp-n33UyA+G39o)64KXC@%IZdv9riuHO@v7k4UZ3vXU-qgU zaitS&-MY+Mc6W%ritf~4?`MMe-dix=VO~15d;?Rd0Q0H4eUTS&#I6!IC1#emQ8Bk1 zyBOEY+;L)DncK`6A<xI2Id^^#oQ%@Tje^ZrHbdjQTJ&GS}^Se~~^ z%o*k`7h|6B^7(wy{odo=eU7;L7@9GE5n}j`>0Xx@`3Gv)w zoUM;;@G9W6FJNb9EjzdP{5QN}v5l`37OzJ2^WXGR;>=pKrvIBTFM2pw9KrHNw5-DU za}f^%?3j0dmF!6ZgIbSa=52tmc>dd%CGv<3i=q5KpEMDt1i*rj68!*!b zip^Opsm?s=wu=kj@&8+=bhuB>z?tXv(XWkrs9(7=y0b+9QvEPw|m1#XQw0P40pz@j$?ai z{Nv7aw>$BKQ|sN4$1_t*d&~Wd*frW&EN&IRK=DGa_Z`?zrLOFsPmL4<%A6G;9Lws+?An8>RiMf(>Ycc=Ok4D48!Wse>i zB|c7i1^-8a-tm6gM_b)TMc%uvPaN5bUsHOyL$f!IToirY$5370g|kf82TmW+z6%%f zxvK{9d10s+R*G8!@mJ@HJ}cdX*m{rK+C6B4v&j`XIc}>sQ|?U{JsX|XPE+=$n;sOQ z8CYm+iQuXtdXGD$yWn+aro)?o-Tfa#$Gg|8cNRDg$K;&gMI_%^Q2QxW*jRmmFS5nc z-^1L+3dMil|BkA>I9M$H*yB7Z_Wl%S#-3fy*zA_=p*x$&@-#zixa)q&7Lnvn#)cEyz3EHQBuz^4>qaVY?&F?#7D$K#@Bzd*u}V zXL^fWTQHnUm){VVwz!kC3%|4OjsRxoE8>l3u)J)12K!-)bKRV5{|&vxmBUV-?9t`D z#Db^2-BSGimPK3L_v7DKbBDOO*u9uN`t34tcri|?I<-gi9pdU=dp>Z+yuUYdx|cZc zjypswdB^Q1@Cb05xU$P#EH1o*b0{)~i@6`T>qW;TgsV@Ryr^ht!b%o2RcvWO^d8fU zu(n|mmhlUkFsUv#j4Oq&|5?`uw9~b`bVo!Phciowy&v)G(rpw&} zt~i~J*uB<`i$t4y0fSrqCHG;q{rAEqHy}=|gg+F#;12HI{ugJ7)7{+eo_587Z{gn8 zx_@^@JE*d`OQo2Pq?k4#FT$`Ms+Wn>sE8_Z(nww6XT}4AB$l(Fp1AxbLI>8 z8P_i^_C?Rf&vR#b@HFwadgn8uXP$eCQ`vjZe@1M3#hoIvKB~c@cW9@(0HwX&>HbVC z_>;3h?A+uIM`-5rR||ftUE7h_zrFofHom2=7;xEHp53rBBJzsee9?N$8JeA$?Z?x5 z0B)3d1G|^Uyum%`JR8V~?1cox7!f_P~1s z#Lgcf()7x6hh>*%eA#P<%Cbkg*5BQPvn9_%-st)yh{ZtLc<;&seCcQYV~%1xc&luT z_-O%FOuSqC{^Eb@az*ZPcgFj@E}wV0|G%oP2CS+wTeH@ONJxlyBqBT=k(5Ze$Pjr+ zDGA94h^UK($}os%>LB7@<0VEM$4X6+4_RC@b%+qnagf8X9VA2s$;^j~KaVpSDVNCW zHA{1BG$g(6cNm*{A0H2UZ}!<|@9$gRyWaJ_%VTB+r!Z#XqghJJJy$#HzY8MyYZYQ9rjvYi=HHJ?LIB%zFTOF%;oSMRJ*<7c4zm_b z;ZAb;^-Urvc%Dmj%AKpyn!vTr&|6nnPy9MX$9~|UL+{4xnEurg5T4hYwBGPuAYj^}Fpltu96U z8z@#+Rr*S3Ix<{ZA#$*7CUDbhHZ@6(W}94(IrXZGaN}ZKSe*+L*&u35RaEDLU^K)2%iRqZi?$6kZq+>4L zgH4;2SIQA2ul@+8kEP_RJHPahn{%kaxD)|;{`mmuDgm5e@%c$Z4j{Xtnxo}v4s~0w zFmhQ+=1_|4&!(OS4LdOkhN%U|%BXqtJ3Pjl^XZj=(MWv`;U7PrCRv^HO+KkS0Hj#} zQ#f`3B}&vnkb|~)w7NW(HVV6|8gWcR=B>@8Wh2at8~xMN=cZ~ioOG-#-^5Qz#bgy} z6)iTVd;(K|)x3#)$eOhfemb7^^+hy7jW)J$nwdY`m?=H)yOa(D&v?wgF#%tmfce;U zgaRK(bbB8&50O}`;~-ZR|Ed!7?KijUj(y;|(aLX#xy%{_jKl3!J$cVa9diy^zf9<) zhn>FXFOwWB08pjGsP$qqLl<(7{q+2Ek2}+@G@Ng+C#k9+26eggQ4g3d@4PmY9ltse>oe((5Rsah<>BAj+LL?W6`I& z0_AuidFfeS_3GAhvC{Xn@^PkIPG^0!&PO~asa9QeC1QlB-OVga|EY$6S>l|0=|@aM zxuGDBt8yJ!KFjLurxub5R%H+U-$iExtaLMrAaYMdsz z6g4;Br5b5%;Y|vBTux3^;G3J!)PS`Y1Y^tq{#f~R3;i1|JhGI&a6z9$=HN;o#%jksQ z+o0?cO1PTmXZ%+w)UX)Wj!?%ia~X(bqeu*Z-!En&W7XfKR=q;|Kt95gW87AW?`bZ# z?(X0ias=OdTg zN6Gv?Ky2fOD2U8O2i(^BKH&4ZCG0OPYf$@?eUE%l*biMRcq&dYT_j@f!(BG@Y*8bq$o#8ZxqZ33FovI(=1`8Yy2o=n7E}{OKa~t}V5}EYCK?Ie z4dGOPw@!B*orkxZBd?&3(bY=f+CyuFJo7P)68FOx+CqzvP2^V=y&(Aq$rsxvEt)>? z36;4ZH6l8TX+Aqqa(3^ybC7QpZZpZ3@>dWe&Z)EJO!X z#Ob_kJ0$#3KI_b=u(8#V#wCL#C0hB9G?qo4tLQc=yRn}BNwLE8?!BXjn==Y9qUNav zs)>C0SrZJXwh8Pj(N$REFw(1C<(|}5AddH!ae~o>0;GEk+?|wnRF>@fGldOH#YK!I znukBHwuILO|<=1o)K}RtGBJ9S5+7fA7IJ`0tOIl6gn1; zOoIl#CJk%3F%8tI#%z_Dt<-0b&HSI`Tv_xC@71Sv`|EKB@+CbI8PFbum4>T_NJI*s zvb<9`%UxQNAjbC=s_-Fc7^}G;)EG5+{u7!awpI#*qB9*L%G-c%pr;IdkSFUt9XMnf z1}Yyzh4v*m84X*bCm&DZv6OcFqwYRX0GRl;lH05c%^Xcu))J~l7fmF1*qNo2Csj)+ z!fFXqB}jqGs8y22sU70EoN5q~7b78S*DXi$NAGYHUFj<*T_S8i_I)d8yEM6@2%5GM z@Z_-sC)DHJ+4?m=)=P!7QLSrn)YMMy0L!iT_qi>um>Laurt+I0|&;><7Hvw0HzdLphbpYEo+@Vk8Cz=D1!=iv_)6P{{uJCfA)cJdn>GGO1z&cnd@%)|Jwf_B7h8-6G5 zo#aO^N^uPet=b7}8@v(`Xlj%x&48ZNX85p?%?P-)&G0_5n?bxA%vKq;z;LZ*dQ3tN zLsK~MNuWd>#UYQQ=pVxMVdu6}pw;T5P!FUIRhwKdR#uQv$MM=N=Yy4(B#u;>QWS`) zH!VQr%T2qQAvw`1`2We~caG4*4;y#QgqMNafyNSJjJ)FZqCTf_r&GB?ZamFpF2qir z%1Z~Zd(;#)njV}2JTS0hj7c=YMd4x7XRAV8|9juZvT@9qGCQoP_5sVkm+2dCq*aJS{;V?4ptm$qv>dsro7IDm!6@VNWOp0#d= z;`?7Ed<+yQ)4yiU6P!0ukZatnuqPPxf$1aEm50M6Vyijfy_|xT#q|IEMC`-l83vv3EC9xvR5H1 zZ~Bt#Xs9qEuxTHe4xlkT)CPVHzHEcAJ35|!p{q(4>E3+-gV25qgrY_SZ_fq}at41^ zNLJEQDv5P$b)~+(2g~s&CFuOUK-vfh7B2ZF=4s&EjTr1U$Dj;sn}%F!dqG9%6%sGa zGu3w8vL(mq{a)Q5v70_<{I3SVLyhxe%qBx0k?-~3-;b2i2RKqLSEyb&w$nI|UJy>| zD^!%+{STERd0wDjUYW|<%71{PSo`W2sT#uQv3pwCbcZuWM>%iM8?yKU{l%&~2N4G& z`o!mSREJ#ivkJP%12OP9Es%tZ=-O*NYLmTDJZ{8m2=Y8v^cr_N2}6?&;Qg<~^hjw< zgp{7fz~`R>n{PT}WTDD)T zCdXJ=c#)RlhAv*DZ!oQ&b8NgN??(Kg8yy#|x diff --git a/utils/gxt/build.bat b/utils/gxt/build.bat index 17eb7983..a674850e 100644 --- a/utils/gxt/build.bat +++ b/utils/gxt/build.bat @@ -4,4 +4,5 @@ gxt -g III -i "french.txt" -o "../../gamefiles/TEXT/french.gxt" gxt -g III -i "german.txt" -o "../../gamefiles/TEXT/german.gxt" gxt -g III -i "italian.txt" -o "../../gamefiles/TEXT/italian.gxt" gxt -g III -i "spanish.txt" -o "../../gamefiles/TEXT/spanish.gxt" -gxt -g III -r -i "russian.txt" -o "../../gamefiles/TEXT/russian.gxt" \ No newline at end of file +gxt -g III -r -i "russian.txt" -o "../../gamefiles/TEXT/russian.gxt" +gxt -g III -p -i "polish.txt" -o "../../gamefiles/TEXT/polish.gxt" diff --git a/utils/gxt/polish.txt b/utils/gxt/polish.txt new file mode 100755 index 00000000..a44115d4 --- /dev/null +++ b/utils/gxt/polish.txt @@ -0,0 +1,8072 @@ +[LETTER1] +abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789'$,.'-?!!SDBF + +[DEFNAM] +Claude---------------------- + +[IN_VEH] +~g~Hej! Wracaj do samochodu! + +[IN_VEH2] +~g~Do tej roboty jest ci potrzebna jakaś gablota! + +[IN_BOAT] +~g~Do tej roboty jest ci potrzebna łódź! + +[HEY] +~g~Nie idź sam, trzymaj się całej paczki! + +[HEY2] +~g~Nie rozdzielajcie się, niech cała grupa porusza się razem! + +[HEY3] +~g~Straciłeś z oczu swojego podopiecznego - wracaj i odszukaj 8-Balla! + +[HEY4] +~g~Jeżeli stracisz Misty, to Luigi zadba, abyś stracił życie! Wracaj po nią! + +[HEY5] +~g~One of the girls is AWOL, Go back and round her up! + +[HEY6] +~g~Twój honor jest związany z osobą Kanbu z Yakuzy. Musisz go chronić! + +[HEY7] +~g~Przydałaby się dodatkowa spluwa. Wracaj i zabierz ze sobą swój kontakt! + +[HEY8] +~g~Ochrona oznacza właśnie to, co podejrzewasz - ochraniaj starego dżentelmena z dalekiego wschodu! + +[HEY9] +~g~Chcesz posłuchać, co się dzieje w mieście? Odszukaj swój kontakt! + +[HELP2_A] +Jeżeli w trakcie biegu chcesz ~h~przyspieszyć~h~, naciśnij klawisz ~h~/~w~. + +[HELP3] +Sprintem można pokonywać wyłącznie krótkie odcinki, dopóki postać ma zapas sił. + +[HELP4_A] +Aby ~h~przyspieszyć~w~, naciśnij klawisz ~h~ ~k~~VEHICLE_ACCELERATE~~w~. + +[HELP4_D] +Aby ~h~przyspieszyć~w~, popchnij ~h~prawy drążek analogowy~w~ do góry. + +[HELP5_A] +Naciśnij klawisz ~h~ ~k~~VEHICLE_BRAKE~~w~, aby ~h~zahamować~w~ lub włączyć ~h~wsteczny bieg~w~, jeżeli pojazd już stoi. + +[HELP5_D] +Pociągnij ~h~prawy drążek analogowy~w~ do tyłu, aby ~h~zahamować~w~ lub włączyć ~h~wsteczny bieg~w~, jeżeli pojazd już stoi. + +[HELP6_A] +Aby skorzystać z ~h~hamulca ręcznego~w~, naciśnij klawisz ~h~ ~k~~VEHICLE_HANDBRAKE~~w~. + +[HELP6_C] +Aby skorzystać z ~h~hamulca ręcznego~w~, naciśnij klawisz ~h~ ~k~~VEHICLE_HANDBRAKE~~w~. + +[HELP6_D] +Aby skorzystać z ~h~hamulca ręcznego~w~, naciśnij klawisz ~h~ ~k~~VEHICLE_HANDBRAKE~~w~. + +[HELP7_A] +Aby ~h~wycelować~w~ karabin snajperski, naciśnij i przytrzymaj klawisz~h~ ~k~~PED_LOCK_TARGET~~w~. + +[HELP7_D] +Aby ~h~wycelować~w~ karabin snajperski, naciśnij i przytrzymaj klawisz~h~ ~k~~PED_LOCK_TARGET~~w~. + +[HELP8_A] +Naciśnij klawisz~h~ ~k~~PED_SNIPER_ZOOM_IN~~w~, aby ~h~przybliżyć ~w~widok przez lunetkę karabinu oraz klawisz~h~ ~k~~PED_SNIPER_ZOOM_OUT~~w~, aby ~h~oddalić~w~ widok. + +[HELP9_A] +Naciśnij klawisz~h~ ~k~~PED_FIREWEAPON~~w~, aby oddać ~h~strzał~w~ z karabinu snajperskiego. + +[HELP10] +Gwiazda szeryfa oznacza, że jesteś poszukiwany przez policję. + +[HELP11] +Im więcej gwiazdek, tym wyższy jest poziom twojej złej sławy. + +[HELP13] +Niekiedy trzeba będzie skorzystać z tras, które nie są zaznaczone na radarze. + +[TIMER] +Jest to misja na czas - musisz ją wykonać, zanim licznik czasu osiągnie zero. + +[MISTY1] +~r~Misty nadaje się już tylko na łóżko w kostnicy! + +[OUT_VEH] +~g~Wysiądź z samochodu! + +[GARAGE] +Wprowadź samochód do garażu, a potem wyjdź na zewnątrz. + +[WANTED1] +~g~Zgub gliniarzy i obniż swój poziom złej sławy! + +[NODOORS] +~g~To nie są sardynki! Załatw furę, która pomieści więcej osób. + +[TRASH] +~g~Doprowadziłeś gablotę do ruiny! Połataj ją trochę! + +[WRECKED] +~r~Samochód jest zniszczony! + +[HORN] +~g~Naciśnij klakson. + +[NOMONEY] +~g~Masz za mało forsy! + +[OUTTIME] +~r~Za wolno, koleś, za wolno! + +[SPOTTED] +~r~Gonią cię! + +[REWARD] +NAGRODA $~1~ + +[GAMEOVR] +KONIEC GRY + +[Z] +Wartość osi Z: ~1~ + +[M_FAIL] +MISJA NIEUDANA! + +[M_PASS] +MISJA ZALICZONA! $~1~ + +[O_PASS] +ROBOTA ZAKOŃCZONA + +[O_FAIL] +ROBOTA NIEUDANA + +[DEAD] +KONIEC Z TOBĄ! + +[BUSTED] +WPADKA! + +[S_PROMP] +Kiedy nie jesteś w trakcie misji, możesz w tym miejscu ~h~zapisać stan gry~w~. Wiąże się to z upływem sześciu godzin w grze. + +[NUMBER] +~1~ + +[SCORE] +$~1~ + +[LOADCAR] +ŁADOWANIE POJAZDU (NACIŚNIJ L1, ABY ANULOWAĆ) + +[CARSOFF] +Wyłączone samochody: + +[CARS_ON] +Uruchomione samochody: + +[TEXTXYZ] +Zapisywanie współrzędnych w pliku... + +[CHEATON] +Tryb ułatwień WŁĄCZONY + +[CHEATOF] +Tryb ułatwień WYŁĄCZONY + +[UZI_IN] +Amu-Nacja zaczyna sprzedawać uzi! + +[IMPORT1] +Wyjdź na zewnątrz i poczekaj na swój samochód. + +[PAGEB1] +Pistolet dostarczony do kryjówki + +[PAGEB2] +Uzi dostarczone do kryjówki + +[PAGEB3] +Pancerz dostarczony do kryjówki + +[PAGEB4] +Obrzyn dostarczony do kryjówki + +[PAGEB5] +Granaty dostarczone do kryjówki + +[PAGEB6] +Koktajle Mołotowa dostarczone do kryjówki + +[PAGEB7] +AK 47 dostarczony do kryjówki + +[PAGEB8] +Karabin snajperski dostarczony do kryjówki + +[PAGEB9] +M16 dostarczony do kryjówki + +[PAGEB10] +Wyrzutnia rakiet dostarczona do kryjówki + +[PAGEB11] +Miotacz ognia dostarczony do kryjówki + +[WANT_A] +Aresztowanie grozi ci dopiero wtedy, kiedy posiadasz ~h~złą sławę. + +[WANT_B] +Twój ~h~poziom złej sławy~w~ przedstawia rząd gwiazdek znajdujących się w prawym górnym rogu ekranu. + +[WANT_C] +W tym momencie twój ~h~poziom złej sławy~w~ wynosi jeden... + +[WANT_D] +dwa... + +[WANT_E] +trzy... + +[WANT_F] +W miarę wzrostu ~h~złej sławy~w~ ścigać cię będą coraz potężniejsze siły policyjne. + +[WANT_G] +Kiedy zaliczysz ~h~'wpadkę'~w~, zostajesz odwieziony na najbliższy posterunek policji. + +[WANT_H] +Gliniarze zarekwirują ci całą broń i będziesz musiał wypłacić im małą łapówkę. + +[WANT_I] +Misja, którą właśnie wykonywałeś, zostanie uznana za nieudaną. + +[WANT_J] +W miarę rozwoju gry odkryjesz sposoby zmniejszania swojego poziomu złej sławy. + +[WANT_K] +Jeżeli jesdziesz samochodem, ~h~WARSZTATY LAKIERNICZE~w~ umożliwiają ~h~usunięcie złej sławy. + +[HEAL_B] +Kiedy zostajesz ~h~'załatwiony'~w~, trafiasz do najbliższego szpitala. + +[HEAL_C] +Tracisz całą broń oraz musisz zapłacić lekarzom trochę forsy za ich wysiłki. + +[HEAL_E] +W trakcie gry poznasz rozmaite metody leczenia bądź chronienia głównego bohatera. + +[DAM] +USZKODZENIA: + +[KILLS] +OFIARY: + +[FARES] +PRZEJAZDY: + +[BULL] +SZTABKI: + +[EVID] +DOWODY: + +[HEALTH] +STAN POJAZDU: + +[COLLECT] +ZEBRANO: + +[BOMB] +Wprowadź samochód do garażu, aby przymocować do niego ~h~bombę~w~. Cena - ~h~$1000. + +[SAVE1] +Aby ~h~zapisać stan gry~w~, przejdź przez drzwi. Jeżeli jesteś w trakcie misji, nie można zapisać gry. + +[SAVE2] +Samochody pozostawione w tym garażu zostaną zachowane wraz z zapisem stanu gry. + +[AMMU] +Wejdź do Amu-nacji, aby zakupić broń. + +[BRIDGE1] +Kiedy naprawa Mostu Callahan zostanie ukończona, będziesz mógł przejechać nim na Wyspę Staunton. + +[TUNNEL] +Kiedy Tunel Porter zostanie otwarty, będziesz mógł przejechać na Wyspę Staunton. + +[LUIGI] +MISJE LUIGIEGO + +[TONI] +MISJE TONIEGO + +[JOEY] +MISJE JOEYA + +[FRANK] +MISJE SALVATORE + +[DIABLO] +MISJE DIABLO + +[ASUKA] +MISJE ASUKI + +[B_SITE] +MISJE PODMIEJSKIE ASUKI + +[KENJI] +MISJE KENJIEGO + +[RAY] +MISJE RAYA + +[LOVE] +MISJE LOVE'A + +[YARDIE] +MISJE DLA GANGU YARDIE + +[HOOD] +MISJE DLA GANGU HOOD + +[CITYZON] +Liberty City + +[IND_ZON] +Portland + +[PORT_W] +Callahan Point + +[PORT_S] +Atlantic Quays + +[PORT_E] +Portland Harbor + +[PORT_I] +Trenton + +[S_VIEW] +Portland View + +[CHINA] +Chinatown + +[EASTBAY] +Plaza Portland + +[LITTLEI] +Saint Mark's + +[REDLIGH] +Dz. Czerwonych Świateł + +[TOWERS] +Wzgórza Hepburn + +[HARWOOD] +Harwood + +[ROADBR1] +Most Callahan + +[ROADBR2] +Most Callahan + +[TUNNELP] +Tunel Porter + +[BOMB1] +Warsztat 8-Balla. + +[COM_ZON] +Wyspa Staunton + +[STADIUM] +Aspatria + +[HOSPI_2] +Rockford + +[UNIVERS] +Kampus Liberty + +[CONSTRU] +Fort Staunton + +[PARK] +Park Belleville + +[COM_EAS] +Newport + +[SHOPING] +Bedford Point + +[YAKUSA] +Torrington + +[SUB_ZON] +Shoreside Vale + +[AIRPORT] +Port Lotniczy Francis + +[PROJECT] +Wichita Gardens + +[SUB_IND] +Pike Creek + +[SWANKS] +Cedar Grove + +[BIG_DAM] +Tama Cochrane + +[SUB_ZO2] +Shoreside Vale + +[SUB_ZO3] +Shoreside Vale + +[CAR_1] +Karetka + +[CAR_2] +Straż pożarna + +[CAR_3] +Radiowóz + +[CAR_4] +Enforcer + +[CAR_5] +Barracks + +[CAR_6] +Hipcio + +[CAR_7] +Samochód FBI + +[CAR_8] +Konwojowóz + +[CAR_9] +Moonbeam + +[CAR_10] +Autokar + +[CAR_11] +Flatbed + +[CAR_12] +Linerunner + +[CAR_13] +Śmieciożer + +[CAR_14] +Patriot + +[CAR_15] +Pan Smakołyk + +[CAR_16] +Muł + +[CAR_17] +Yankee + +[CAR_18] +Pony + +[CAR_19] +Bobcat + +[CAR_20] +Rumpo + +[CAR_21] +Blista + +[CAR_22] +Dodo + +[CAR_23] +Autobus + +[CAR_24] +Sentinel + +[CAR_25] +Cheetah + +[CAR_26] +Demon + +[CAR_27] +Stinger + +[CAR_28] +Infernus + +[CAR_29] +Esperanto + +[CAR_30] +Kuruma + +[CAR_31] +Stretch + +[CAR_32] +Perennial + +[CAR_33] +Landstalker + +[CAR_34] +Manana + +[CAR_35] +Idaho + +[CAR_36] +Ogier + +[CAR_37] +Taksówka + +[CAR_38] +Taksówka + +[CAR_39] +Buggy + +[LUIGIS] +Lokal Luigiego + +[GOAWAY] +~g~Już podjąłeś się jednej misji! + +[LUIGGO] +~g~Luigi sprawdza nowe dziewczyny. Przyjdź później! + +[JOEYGO] +~g~Joey wyszedł do miasta z Misty. Przyjdź później. + +[TONIGO] +~g~Toni zabrał swoją Mamuśkę do opery - wpadnij kiedy indziej! + +[KEMUGO] +~g~Maria i Kemuri mają chwilowo inne obowiązki - wpadnij później! + +[KENJGO] +~g~Kenji jest na naradzie Yakuzy. Wpadnij innym razem! + +[RAYGO] +~g~Ray kręci się przy innych kiblach - wpadnij później! + +[LOVEGO] +~g~Donald Love chwilowo zajmuje się innymi sprawami. Umów się z nim na późniejszą godzinę! + +[KENSGO] +~g~Kenji jest zajęty! Wpadnij później! + +[HOODGO] +~g~Hoods są aktualnie niedostępni! + +[WRONGT1] +~g~Jeżeli szukasz zajęcia, wróć między 5:00 a 21:00. + +[WRONGT2] +~g~Jeżeli szukasz zajęcia, wróć między 6:00 a 14:00. + +[WRONGT3] +~g~Jeżeli szukasz zajęcia, wróć między 15:00 a 00:00. + +[GUN_1A] +Użyj klawiszy ~h~~k~~PED_CYCLE_WEAPON_RIGHT~~w~ oraz ~h~~k~~PED_CYCLE_WEAPON_LEFT~ ~w~, aby przełączać się między kolejnymi rodzajami broni. + +[GUN_2A] +Przytrzymaj klawisz ~h~~k~~PED_LOCK_TARGET~ ~w~, aby ~h~wykonać autocelowanie~w~ i naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~otworzyć ogień! Spróbuj postrzelać do celu... + +[GUN_2C] +Przytrzymaj klawisz ~h~~k~~PED_LOCK_TARGET~ ~w~, aby ~h~wykonać autocelowanie~w~ i naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~otworzyć ogień! Spróbuj postrzelać do celu... + +[GUN_2D] +Przytrzymaj klawisz ~h~~k~~PED_LOCK_TARGET~ ~w~, aby ~h~wykonać autocelowanie~w~ i naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~otworzyć ogień! Spróbuj postrzelać do celu... + +[GUN_3A] +Trzymając wciśnięty klawisz ~h~~k~~PED_LOCK_TARGET~,~w~ naciśnij klawisz ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~ lub klawisz ~h~~k~~PED_CYCLE_TARGET_RIGHT~ , aby przełączać się między celami. + +[GUN_3B] +Trzymając wciśnięty klawisz ~h~~k~~PED_LOCK_TARGET~,~w~ naciśnij klawisz ~h~~k~~PED_CYCLE_TARGET_LEFT~~w~ lub klawisz ~h~~k~~PED_CYCLE_TARGET_RIGHT~ , aby przełączać się między celami. + +[GUN_4A] +Trzymając wciśnięty klawisz ~h~~k~~PED_LOCK_TARGET~~w~, możesz chodzić lub biegać, a celownik cały czas pozostanie zablokowany na wybranym celu. + +[GUN_4B] +Trzymając wciśnięty klawisz ~h~~k~~PED_LOCK_TARGET~~w~, możesz chodzić lub biegać, a celownik cały czas pozostanie zablokowany na wybranym celu. + +[GUN_5] +Możesz przećwiczyć wybieranie celów i prowadzenie ognia na tych papierowych celach. Po treningu wróć do wykonywania misji. + +[TAXI1] +~g~Poszukaj pasażera. + +[FARE1] +~g~Cel podróży ~w~'Klub Seksownego Kociaka Miauu'~g~ w Dzielnicy Czerwonych Świateł. + +[FARE2] +~g~Cel podróży ~w~Super Przecena~g~ w Portland View. + +[FARE3] +~g~Cel podróży ~w~'stara szkoła'~g~ w Chinatown. + +[FARE4] +~g~Cel podróży ~w~'kawiarenka Tłustego Joe'~g~ w Callahan Point. + +[FARE5] +~g~Cel podróży ~w~'Amu-Nacja'~g~ w Dzielnicy Czerwonych Świateł. + +[FARE6] +~g~Cel podróży ~w~'Auta na Kredyt'~g~ w Saint Mark's. + +[FARE7] +~g~Cel podróży ~w~'bar topless 'U Woody'ego''~g~ w Dzielnicy Czerwonych Świateł. + +[FARE8] +~g~Cel podróży ~w~'Bistro Marcos'~g~ w Saint Mark's. + +[FARE9] +~g~Cel podróży ~w~'warsztat importowo-eksportowy'~g~ w Portland Harbor. + +[FARE10] +~g~Cel podróży ~w~'Smażony Makaron'~g~ w Chinatown. + +[FARE12] +~g~Cel podróży ~w~'stadion piłkarski'~g~ w Aspatrii. + +[FARE13] +~g~Cel podróży ~w~'kościół'~g~ w Bedford Point. + +[FARE14] +~g~Cel podróży ~w~'kasyno'~g~ w Torrington. + +[FARE15] +~g~Cel podróży ~w~biblioteka Liberty~g~ w Kampusie Liberty. + +[FARE16] +~g~Cel podróży ~w~galeria handlowa~g~ w okolicach Belville Park. + +[FARE17] +~g~Cel podróży ~w~muzeum~g~ w Newport. + +[FARE18] +~g~Cel podróży ~w~siedziba AmCo~g~ w Torrington. + +[FARE19] +~g~Cel podróży ~w~Bolt Burgers~g~ w Bedford Point. + +[FARE20] +~g~Cel podróży ~w~park~g~ w Belville. + +[FARE21] +~g~Cel podróży ~w~Port Lotniczy im. Francisa. + +[FARE22] +~g~Cel podróży ~w~'Tama Cochrane'. + +[FARE24] +~g~Cel podróży ~w~'szpital' ~g~w Pike Creek. + +[FARE25] +~g~Cel podróży ~w~'park'~g~ w Soherside Vale. + +[FARE26] +~g~Cel podróży ~w~'North West Towers'~g~ w Wichita Gardens. + +[NEW_TAX] +WIĘKSZE! SZYBSZE! MOCNIEJSZE! Nowe taksówki Borgnine rozpoczynają pracę w Harwood. Dzwoń już dziś: 555-BORGNINE. + +[TSCORE2] +$~1~ + +[IN_ROW] +~1~Premia za SEKWENCJĘ! $~1~ + +[TTUTOR] +Naciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~~w~, aby włączyć lub wyłączyć misje w taksówce. + +[TTUTOR2] +Naciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~~w~, aby włączyć lub wyłączyć misje taksówkarskie. + +[A_TIME] ++~1~ sekund + +[A_FULL] +~r~Karetka jest pełna! + +[A_RANGE] +~g~Radiostacja w karetce ma zbyt mały zasięg, zbliż się bardziej w stronę szpitala! + +[FTUTOR] +Naciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~~w~, aby włączyć lub wyłączyc misje strażackie. + +[FTUTOR2] +Naciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~~w~, aby włączyć lub wyłączyc misje strażackie. + +[F_PASS1] +Pożar ugaszony! + +[F_RANGE] +~g~Radiostacja w samochodzie strażackim ma zbyt mały zasięg - zbliż się bardziej w stronę remizy! + +[C_BREIF] +~g~Podejrzany ostatnio widziany był w rejonie ~a~. + +[C_RANGE] +~g~Radiostacja w samochodzie ma zbyt mały zasięg, zbliż się bardziej w stronę komisariatu! + +[DODO_FT] +Leciałeś przez ~1~ sekund! + +[EBAL_A] +Znam takie miejsce na skraju Dzielnicy Czerwonych Świateł, w którym możemy się zamelinować na jakiś czas, + +[EBAL_A1] +ale moje ręce są do niczego, więc lepiej ty prowadź, brachu. + +[EBAL_1] +Naciśnij klawisz ~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, aby ~h~wsiąść ~w~lub ~h~wysiąść~w~ z pojazdu. + +[EBAL_1B] +Naciśnij klawisz ~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, aby ~h~wsiąść ~w~lub ~h~wysiąść~w~ z pojazdu. + +[EBAL_2] +~g~Wracaj do samochodu! + +[EBAL_3] +To jest ~h~radar~w~. Korzystaj z niego podczas poruszania się po mieście. Jedź za ~h~kropką~w~ na ~h~radarze~w~, aby dotrzeć do kryjówki! + +[EBAL_D] +Jest tu taki jeden gość, który zna kogo trzeba. Nazywa się Luigi. + +[EBAL_D1] +Niejedno razem przeszliśmy. Dla ciebie też pewnie znajdzie się jakaś robota. Zajrzyjmy do niego! + +[EBAL_E] +Wpadniemy tam, a ja przedstawię cię komu trzeba. + +[EBAL_I] +Szef zaraz wyjdzie do ciebie... + +[EBAL_J] +8-Ball ma jakiś interes na górze. + +[EBAL_K] +Może zrobisz coś dla mnie? + +[EBAL_L] +Trzeba podwieźć jedną z moich dziewczynek. Załatw gablotę i odbierz Misty z kliniki. Przywieź ją tutaj. + +[EBAL_N] +I lepiej cały czas gap się tylko na drogę! + +[EBAL_4] +~r~8-Ball nie żyje~! + +[EBAL_5] +~g~Załatw samochód! + +[EBAL_6] +~g~Zabierz Misty! + +[LM1] +'DZIEWCZYNKI LUIGIEGO' + +[LM2] +'MOJE DZIWKI NIE ĆPAJĄ!' + +[LM3] +'WOŻĄC PANNĘ MISTY' + +[LM5] +'ACH, CÓŻ TO BYŁ ZA BAL...' + +[LM1_2] +~g~Zabierz Misty do klubu 'U Luigiego'. + +[LM1_3] +~g~Naciśnij klakson, aby zaprosić dziewczynę do samochodu. + +[LM1_6] +~g~Wracaj do samochodu! + +[LM1_7] +Zatrzymaj samochód obok Misty i poczekaj, aż wsiądzie. + +[LM1_8] +Możesz wrócić do Luigiego i zapytać go o pracę albo pozwiedzać Liberty City. + +[LM2_A] +Na ulicy pojawił się nowy towar, HEROINA. + +[LM2_E] +Jakiś mądrala wciska ten syf moim dziewczynkom na Portland Harbor. + +[LM2_B] +Jedź tam i zapoznaj jego twarz z bejsbolem! + +[LM2_G] +Należy mi się jakaś rekompensata za tę zniewagę! + +[LM2_1] +~g~Weź jego samochód i przemaluj go. + +[LM2_2A] +Użyj klawisza ~h~ ~k~~PED_FIREWEAPON~~w~, aby zadawać ciosy ~h~pięścią ~w~i ~h~nogą~w~ lub ~h~uderzyć kijem ~w~! + +[LM2_2C] +Użyj klawisza ~h~ ~k~~PED_FIREWEAPON~~w~, aby zadawać ciosy ~h~pięścią ~w~i ~h~nogą~w~ lub ~h~uderzyć kijem ~w~! + +[LM2_2D] +Użyj klawisza ~h~ ~k~~PED_FIREWEAPON~~w~, aby zadawać ciosy ~h~pięścią ~w~i ~h~nogą~w~ lub ~h~uderzyć kijem ~w~! + +[LM2_3] +~g~Schowaj samochód w kryjówce Luigiego! + +[LM2_4] +~g~Przemaluj samochód! + +[LM3_A] +Ej, muszę z tobą pogadać... Spoko, Mick, dokończymy później. + +[LM3_B] +Jak leci, młody? + +[LM3_C] +Syn Dona, Joey, chce się zabawić ze swoją ulubioną dziewczynką, Misty. + +[LM3_D] +Jedź po nią na Wzgórza Hepburn... + +[LM3_E] +ale uważaj, to terytorium gangu Diablo. + +[LM3_F] +Potem odwieź ją do warsztatu Joeya w Trenton, byle szybko. + +[LM3_H] +więc gap się na drogę, a nie na cycki Misty! + +[LM3_2] +~g~Zabierz Misty do Joeya. + +[LM3_4] +~g~Jedź po Misty! + +[LM3_5] +To ty pracujesz teraz jako szoferak dla Luigiego, co? Najwyższy czas, od dawna potrzebujemy zaufanego kierowcy! + +[LM3_7] +Zajmę się tobą za chwilkę, iskierko. + +[LM3_10] +~g~Zdobądź samochód! + +[LM4_B] +Jedź tam i załatw dla mnie ten problem. + +[LM4_C] +Jeżeli potrzebujesz spluwy, wpadnij na zaplecze sklepu Amu-Nacja, naprzeciwko stacji metra. + +[LM5_A] +Przy Moście Callahan, w budynku starej szkoły trwa Bal Policjanta. + +[LM5_B] +Skoro budynek jest stary, to i goście zapewne będą szukać rozrywek 'w starym stylu'. + +[LM5_C] +Moje dziewczyny pracują na ulicach w całym mieście. + +[LM5_D] +Zawieź je na bal, aby mogły solidnie popracować. + +[LM5_1] +~g~Jeżeli zabierzesz za dużo dziewczyn, to się poobijają w środku!~g~ Najpierw wysadź te, które już masz, potem wróć po następne. + +[LM5_2] +~r~Jedna z dziewczyn Luigiego jest już tylko kupą padliny! + +[LM5_3] +~g~Jest ci potrzebny samochód! + +[LM5_4] +~g~Zgarnij dziewczyny pracujące w St. Mark's. + +[LM5_5] +~g~Zawieź dziewczyny na Bal Policjanta! + +[LM5_8] +~g~Dziewczyny na balu: ~1~ + +[JM2] +'ŻEGNAJ 'OKRĄGŁY' LEE CHONG' + +[JM4] +'SZOFER CIPRIANIEGO' + +[JM5] +'TRUP W BAGAŻNIKU' + +[JM1_1] +~g~Zabierz samochód Forelliego do warsztatu 8-Balla na północ stąd, zaraz za salonem 'Auta na Kredyt'. + +[JM1_2] +~g~Potem zaparkuj wózek z powrotem na właściwym miejscu pod Bistro Marcos. + +[JM1_3] +~g~Uaktywnij bombę i spadaj stamtąd! + +[JM1_4] +~g~Niszczysz samochód! Napraw go! + +[JM1_5] +~g~Bomba w samochodzie nie została uzbrojona! + +[JM1_6] +~g~Zaparkuj samochód we właściwej pozycji. + +[JM1_8A] +~y~Hej, przecież to mój kumpel! + +[JM1_8B] +~y~Warsztat jest zautomatyzowany. Po prostu wjedź do środka, zatrzymaj samochód, a obsługa załatwi całą resztę. + +[JM1_8C] +~y~Pierwszy raz montujemy ładunek za darmo, ale za każdym następnym razem będziesz musiał zapłacić. + +[JM2_A] +'Okrągły' Lee Chong handluje prochami dla jakiegoś nowego gangu z Kolumbii... Czy z Kolorado... Nieważne... + +[JM2_B] +Nie pamiętam. Zresztą, kogo to obchodzi. + +[JM2_D] +Ten szczurek właśnie sprzedaje ostatnie sajgonki, rozumiesz? + +[JM2_E] +Masz go zdmuchnąć! + +[JM2_G] +Załatw sobie dziewiątkę. Znajdziesz ten sklep, nie? + +[JM2_H] +Tylko pamiętaj, w Chinatown lepiej dobrze pilnować własnego dupska. To terytorium Triady. + +[JM3_A] +W porządku, mam zamiar skubnąć ciężarówkę z wypłatami. + +[JM3_B] +Codziennie wyjeżdża na miasto z okolic Chinatown. + +[JM3_C] +Zwykłe kule nawet nie zarysują jej pancerza, więc musisz po prostu zdobyć ciężki samochód i zepchnąć ją z drogi. + +[JM3_D] +Jak mocno walniesz, to ci tchórze z ochrony zwieją, gdzie pieprz rośnie. + +[JM3_E] +Wtedy zabierz ciężarówkę do magazynu w dokach - moi ludzie już się nią tam zajmą. + +[JM3_F] +Ciężarówka nie będzie na ciebie czekać, dlatego lepiej się streszczaj. + +[JM3_1] +~g~Zabierz ciężarówkę do kryjówki. + +[JM3_2] +~g~Taranuj ciężarówkę dopóki poziom jej uszkodzeń nie przekroczy 70 procent. + +[JM4_B] +O, to jest ten gość, o którym ci mówiłem! + +[JM4_C] +Posłuchaj, on nie jest Włochem i żaden z niego mechanik, ale potrafi radzić sobie z problemami. + +[JM4_D] +To jest Pops Capo, a to Tony Cipriani. + +[JM4_E] +Tak, Tony Cipriani to ja. + +[JM4_F] +Podrzuć go do restauracji Mamuśki w St. Marks. + +[JM4_G] +Jeszcze jedno. Posłuchaj, planuję taką robótkę, do której potrzebny jest dobry kierowca. Wpadnij później, to pogadamy, OK? + +[JM4_2] +Zaczekaj tutaj. Nie gaś silnika - to nie jest wizyta towarzyska. + +[JM4_3] +To pułapka Triad! Zabierz nas stąd, młody! + +[JM4_4] +Triady myślą, że mogą ze mną zadzierać... ZE MNĄ! + +[JM4_6] +Ostrożnie z tym wozem! Mówiłem, bez numerów! + +[JM4_7] +~g~Zabierz Toniego do restauracji jego matki. + +[JM4_8] +~r~Toni został załatwiony! + +[JM5_A] +Pięknie! Po prostu pięknie. + +[JM5_B] +Oto i facet, którego mi potrzeba! + +[JM5_D] +Jeden z braci Forelli myślał, że jest bystrzejszy niż woda w kiblu, a więc doczekał się odpowiedniej kary. + +[JM5_E] +Zabierz samochód z ciałem do zgniatarki w Harwood, OK? + +[JM5_1] +~g~Zabierz samochód do zgniatarki! + +[JM5_2] +~g~To bracia Forelli! + +[JM6_A] +Ale z niej sztuka, co? + +[JM6_B] +W porząsiu, posłuchaj. Załatw sobie gablotę i jedź do kryjówki w St. Marks. Tam zabierzesz paru moich kumpli. + +[JM6_C] +Robią napad na bank i potrzebują kierowcy. + +[JM6_D] +Dałem im słowo, że znasz się na tym fachu, więc nie spieprz sprawy, dobra? + +[JM6_E] +Dowieź ich do banku przed godziną piątą i nie waż się spóźnić nawet minutę. + +[JM6_2] +Nie gaś silnika, zaraz wracamy. + +[JM6_3] +Zabierz nas stąd!! + +[JM6_4] +Zgub gliniarzy i dowież nas do kryjówki! + +[JM6_6] +~g~Skombinuj jakiś samochód, który będzie trochę mniej rzucał się w oczy. + +[JM6_7] +~g~Musisz zabrać wszystkich 3 bandytów, aby móc przeprowadzić skok! + +[TM1] +'ZABIERZ BRUDY DO PRALNI' + +[TM2] +'HARACZ' + +[TM3] +'SALVATORE ZWOŁUJE NARADĘ' + +[TM4] +'TRIADY I TROSKI' + +[TM5] +'SMAŻONE RYBY' + +[TONI_P] +Mam dla ciebie pilną pracę, Toni! + +[TM1_A] +~w~Siadaj, synu! Siadaj, zamknij jadaczkę i słuchaj. + +[TM1_B] +~w~Więc pralnie nie chcą płacić haraczu, co? + +[TM1_C] +~w~Triady myślą, że mogą mi podskakiwać? + +[TM1_D] +~w~Nauczymy tych dmuchanych twardzieli, co to znaczy być prawdziwym twardzielem. + +[TM1_E] +~w~Tak, damy im lekcję pokory. Mój syn nie będzie znosić upokorzeń od jakiejś Triady! + +[TM1_F] +~w~Twój ojciec, Panie świeć nad jego duszą, jeszcze na Sycylii trzymał ich krótko i nie pozwalał, żeby Triady wciskały mu kit.v + +[TM1_G] +~w~Przepraszam, Mamo. Tak jest, Mamo. + +[TM1_H] +~w~Chcę, żebyś zniszczył ciężarówki z pralni + +[TM1_I] +~w~i rozdeptał każdego sługusa Triad, który wejdzie ci w drogę. + +[TM1_J] +~w~8-Ball załatwi ci wszystko, co jest potrzebne do tej roboty. + +[TM2_A] +~w~TONI gdzieś polazł, znowu będzie straszyć ludzi albo przynajmniej usiłować kogoś przestraszyć. + +[TM2_AA] +~w~Nigdy nie będzie nawet w połowie takim twardzielem jak jego Papa. Zostawił dla ciebie kartkę na stole. + +[TM2_B] +~w~Pralnie zgodziły się zapłacić - spisałeś się dobrze, synu! + +[TM2_C] +~w~Odbierz forsę i przywieź ją tutaj. Uważaj na Triady. + +[TM2_D] +~w~Możliwe, że będą chcieli podłożyć nam świnię, ale nie daj sobie wciskać żadnego gówna. + +[TM2_E] +~w~Nikt, powtarzam, nikt nie zadziera z TONIM CIPRIANI! + +[TM2_1] +~g~Odwieź forsę Toniemu!!! + +[TM2_2] +~g~Zdmuchnąłeś ich wszystkich! + +[TM3_MA] +~w~Nie wiem, gdzie on się podziewa! + +[TM3_MB] +~w~Jak pragnę zdrowia, ten mój chłopak czasami jest taki głupi. + +[TM3_MC] +~w~Jego ojciec był zupełnie inny. Zawsze silny, męski, u steru wydarzeń... + +[TM3_A] +~w~Don Salvatore zwołał naradę. + +[TM3_B] +~w~Masz odebrać z warsztatu limuzynę i jego chłopaka, Joeya. + +[TM3_C] +~w~Potem zabierz Luigiego z klubu i wróć tutaj po mnie. + +[TM3_D] +~w~Razem pojedziemy do domu szefa. + +[TM3_E] +~w~Triady nie znają umiaru. + +[TM3_F] +~w~Chcą wojny, będą mieli wojnę. + +[TM3_G] +~w~Teraz zmykaj. + +[TM3_1] +~g~Odbierz limuzynę od Joeya. + +[TM3_2] +~g~Teraz jedź po Luigiego. + +[TM3_3] +~g~Teraz jedź po Toniego. + +[TM3_4] +~g~Zawieź ferajnę do rezydencji Salvatore. + +[TM3_5] +~y~Triady przygotowały zasadzkę! + +[TM4_B] +~w~A więc WOJNA! Triady używają jako przykrywki fabryki przetwórstwa ryb. + +[TM4_C] +~w~Większość ich interesów odbywa się na targu rybnym w chińskiej dzielnicy. + +[TM4_D] +~w~Pralnie nadal wiszą nam haracz za ochronę. + +[TM4_E] +~w~Żółtki myślą, że Triady ich obronią, więc czas wymierzyć im stosowną karę. + +[TM4_F] +~w~Weź tych dwóch chłopaków i załatwcie szefów Triady! + +[TM4_G] +~w~Tam, u diabła, jeżeli nadarzy się okazja, to załatwcie też paru żołnierzy Triady. + +[TM4_GAT] +~g~Do środka może wjechać tylko ciężarówka Triad. + +[TM5_B] +~w~Wystarczy już tego pitolenia. + +[TM5_C] +~w~Czas wykończyć Triady w Liberty raz na zawsze! + +[TM5_D] +8-Ball założył ładunek wybuchowy w śmieciarce. + +[TM5_E] +~w~To jest bomba z zegarem czasowym, więc jak się spóźnisz, nie pozostanie po tobie żaden ślad. Jedź po śmieciarkę. + +[TM5_F] +~w~Tylko ostrożnie, 8-Ball mówi, że mechanizm jest cholernie czuły i byle wstrząs może spowodować wybuch! + +[TM5_G] +~w~Zaparkuj między cysternami z benzyną i znikaj stamtąd! + +[TM5_H] +~w~Zaparkuj pomiędzy zbiornikami z gazem i spadaj gdzie pieprz rośnie! + +[TM5_I] +~w~Chcę, żeby na miasto spadł deszcz makreli. + +[TM5_J] +~w~Zobaczysz, tym razem to nie żadne wielkanocne bum-bum, tylko prawdziwa plaga biblijna! + +[FM2] +'RÓWNO Z TRAWĄ' + +[FM4] +'OSTATNIE PROŚBY' + +[FM1_A] +~w~Ja i moi ludzie musimy obgadać parę kwestii, + +[FM1_B] +~w~a więc ty zapewnisz mojej dziewczynie rozrywkę na wieczór. + +[FM1_C] +~w~HEJ, MARIA! RUSZ DUPĘ! + +[FM1_D] +~w~Głupia suka, zawsze się tak zachowuje. + +[FM1_E] +~w~A oto i ona, jedyna w swoim rodzaju królowa piękności! + +[FM1_F] +~w~Co tam robiłaś tyle czasu? + +[FM1_G] +~w~Cokolwiek to było, na pewno straciłem na tym jakieś pieniądze. + +[FM1_H] +~w~Chyba nie myślisz, że jestem tu, bo lubię z tobą gadać? + +[FM1_I] +~w~Wsiadaj do samochodu i zamknij swoją wielką gębę. + +[FM1_J] +~w~Możesz zabrać limuzynę, ale przyprowadź ją z powrotem w jednym kawałku, zrozumiano? + +[FM1_K] +~w~I uważaj na nią! Ona lubi pakować się w kłopoty! + +[FM1_L] +~w~Dość! Twój nowy piesek gończy na pewno zna już te historyjki, + +[FM1_M] +~w~a poza tym to przecież kawał chłopa! + +[FM1_N] +~w~Hej, piesku! Odwiedzimy Chico i załatwimy jakieś dopalacze na imprezę. + +[FM1_P] +~g~To właśnie Chico, podjedź do niego. + +[FM1_S] +~w~Jak sobie życzysz, moja pani. + +[FM1_TT] +~w~NALOT POLICYJNY! + +[FM1_1] +~g~Wracaj do limuzyny! + +[FM1_2] +~g~Wsiadaj do limuzyny! + +[FM1_3] +~r~Jeżeli zostawisz Marię, Salvatore każe cię obić jak psa! Zawróćj i zabierz ją ze sobą! + +[FM1_4] +~g~Zostawiłeś kobietę Dona! Wracaj do magazynu i zaczekaj na Marię! + +[FM1_5] +~g~Zawieź Marię do domu Salvatore tak, aby włos jej z głowy nie spadł! + +[FM1_6] +~g~Chico nie będzie czekał wiecznie - zabierz Marię na wybrzeże! + +[FM1_7] +~r~Maria nie żyje! Salvatore nie ucieszy się z tej wiadomości... + +[FM1_8] +~r~Załatwiłeś dostawcę Marii!!! + +[FM2_J] +Zostaw nas na chwilkę samych. + +[FM2_A] +Kartel Kolumbijski produkuje HEROINĘ gdzieś na terenie Liberty. + +[FM2_K] +ale nadal nie wiemy, gdzie, a oni działają tak, jakby z góry znali wszystkie nasze posunięcia. + +[FM2_L] +Za barem 'U Luigiego' pracuje pewien gość. Nazywa się Kudłaty Bob. + +[FM2_M] +Ostatnio wydaje więcej kasy niż mógłby zarobić. + +[FM2_N] +Zazwyczaj po pracy wraca do domu taksówką. Jedź za nim. + +[FM2_O] +A jeżeli okaże się, że to nasz kret... Zabij go! + +[FM2_F] +Oto nasz mały przyjaciel, pan wielka gęba we własnej osobie. + +[FM2_G] +Ktoś cię śledził? Wiesz, że to, co się tu dzieje, to nasz mały sekret. + +[FM2_H] +Nie, nikt mnie nie śledził. Masz mój towar? + +[FM2_I] +Masz swoje prochy, śmieciu, a teraz mów. + +[FM2_P] +A więc rodzina Leone prowadzi teraz wojnę na dwa fronty. + +[FM2_Q] +Z Triadami toczą wojnę o terytorium i wygląda na to, że żadna ze stron nie ma zamiaru się poddać. + +[FM2_R] +Z drugiej strony, Joey Leone wplątał się w krwawe porachunki z rodziną Forellich. + +[FM2_S] +Rodzina Leone z każdym dniem traci ludzi i wpływy w mieście. + +[FM2_T] +Salvatore zaczyna zachowywać się jak niebezpieczny dla otoczenia paranoik. Podejrzewa wszystkich i wszędzie wietrzy spisek. + +[FM2_U] +Ale jeżeli wszyscy są tak lojalni jak ty, to nie ma się o co martwić, prawda? + +[FM2_1] +~g~To Kudłaty Bob! + +[FM2_2] +~g~Kudłaty wyszedł z klubu - śledź go! + +[FM2_5] +~g~Zabierz go do Portland Harbor. + +[FM2_6] +~r~Kudłaty nie wsiądzie do porozbijanej taksówki! + +[FM2_7] +~r~Kudłaty zwiał! Spotkanie odwołane! + +[FM2_8] +~g~Walnij Kudłatego Boba! + +[FM2_9] +~r~Kudłaty Bob nie żyje! + +[FM2_10] +~r~Kudłaty ucieka! + +[FM2_11] +~g~Zaparkuj przed klubem 'U Luigiego'! Kudłaty Bob powinien niedługo wyjść. + +[FM2_12] +~r~Zgubiłeś go! + +[FM3_A] +~w~Powinniśmy sprzątnąć tych łajdaków z Kartelu, + +[FM3_B] +~w~ale dopóki mamy na głowie wojnę z Triadami, nie mamy na to dość sił. + +[FM3_C] +~w~Kartel zarabia ogromne pieniądze na sprzedaży tej syfiastej HEROINY. + +[FM3_D] +~w~Jeżeli przypuścimy otwarty atak, rozsmarują nas na miazgę. + +[FM3_E] +~w~Zapewne produkują prochy na tym wielkim statku, do którego doprowadził cię Kudłaty. + +[FM3_F] +~w~Dlatego właśnie musimy działać z głową. I to z twoją głową. + +[FM3_G] +~w~Chciałbym prosić cię, abyś zrobił mi osobistą przysługę i zniszczył tę fabrykę HERY, Salvatore. + +[FM3_H] +~w~Jeżeli to ci się uda, spędzisz resztę życia w dostatku. + +[FM3_I] +~w~Spotkaj się z 8-Ballem. On zna się na dynamicie jak nikt inny - będziesz potrzebował jego doświadczenia. + +[FM3_8A] +~w~Mój czarnuch! Salvatore już dzwonił, + +[FM3_8B] +~w~ale do takiej roboty potrzeba będzie sporo fajerwerków. + +[FM3_8D] +~w~ale chyba wiesz, że żaden dolar z tej sumy nie zostanie zmarnowany. + +[FM3_8E] +~w~W porządku, zróbmy to! + +[FM3_8F] +~w~Mogę nastawić to maleństwo na wybuch, ale rany na moich łapskach jeszcze się nie wygoiły i nie poradzę sobię z giwerą. + +[FM3_8G] +~w~Weź karabin i rozwal parę łbów. + +[FM3_4] +~g~Zatrzymaj samochód i wypuść 8-Balla! + +[FM3_7] +~r~Zgubiłeś 8-Balla! + +[FM3_8] +~r~Strażnicy podnieśli alarm! + +[FM4_A] +~w~To mój ulubiony czyściciel. + +[FM4_B] +~w~Jestem z ciebie dumny, chłopcze Wybiłeś tym tępakom to ich gówno z głów. + +[FM4_C] +~w~Zanim będziemy mogli uczcić twój sukces, mam dla ciebie jeszcze jedną małą robótkę. + +[FM4_D] +~w~Na następnej przecznicy stoi samochód z klubu Lugiego. + +[FM4_E] +~w~W środku jest cały upaćkany mózgiem. + +[FM4_F] +~w~Musieliśmy pomóc jednemu gościowi namyślić się nad paroma sprawami i wyszedł z tego niezły bałagan. + +[FM4_H] +~w~Zabierz ten samochód do zgniatacza, zanim wypatrzą go gliniarze. + +[AM3] +'PAPARAZZO NA DNIE' + +[AM4] +'WYPŁATA DLA RAYA' + +[AM5] +DWULICOWY TANNER + +[AM1_A] +Zanim przejdziemy do jakichkolwiek interesów, musimy wyjaśnić sobie + +[AM1_B] +pewne kwestie. Wyłóżmy nasze karty na stół. + +[AM1_C] +Należę do Yakuzy i wiem, że pracowałeś dla rodziny Salvatore Leone. + +[AM1_D] +Myślę, że znajdzie się dla ciebie miejsce w naszej organiacji. + +[AM1_E] +Ale najpierw musisz udowodnić, że naprawdę zerwałeś wszystkie związki z Mafią. + +[AM1_G] +Zadbaj, aby nie dotarł do celu żywy. + +[AM1_H] +W międzyczasie, ja i Maria pogawędzimy o starych dobrych czasach. + +[AM1_I] +Asuka, przyszedł twój masażysta. + +[AM1_J] +To nie żaden masażysta. + +[AM1_1] +~g~Salvatore wychodzi z knajpy 'U Luigiego'! + +[AM1_2] +~r~Zostałeś zauważony! + +[AM1_3] +~r~Spudłowałeś do Salvatore! + +[AM1_4] +~r~Znakomicie, wystraszyłeś cel! I ty uważasz się za zawodowca? + +[AM1_5] +~g~Jedź do Dzielnicy Czerwonych Świateł i poczekaj, aż Salvatore wyjdzie z klubu. + +[AM1_7] +~r~Salvatore siedzi sobie bezpiecznie w domu i sączy swój koktajl. Nie spodziewaj się, że ktoś nazwie cię 'Szakalem'! + +[AM1_8] +~g~Salvatore będzie wychodzić z klubu Luigiego około ~1~:~1~ + +[AM2_4] +~g~Skradałeś się z gracją słonia w składzie porcelany! + +[AM3_A] +Jakiś nieproszony reporter wtykał tu swój nos + +[AM3_B] +Maria i ja jedziemy razem na małe wakacje, a ty pozbądź się tego zboczonego podglądacza. + +[AM4_A] +A oto i mój ulubiony człowiek do każdej roboty! + +[AM4_B] +Maria chciałaby cię widzieć, ale... nie może podejść. Powiem jej, że pytałeś. + +[AM4_C] +Kto tam? Asuka? Wiem, że byłam niegrzeczną dziewczynką, ale naprawdę muszę do toalety! OK? + +[AM4_D] +Czas, abyś poznał naszą wtyczkę w tutejszej policji. + +[AM4_E] +Tu masz zapłatę za ostatnią robótkę, jaką dla nas wykonał. + +[AM4_F] +Facet jest bardzo ostrożny, to chyba jasne. + +[AM4_G] +Jak najszybciej odszukaj budkę telefoniczną w Torrington i czekaj na instrukcje. + +[AM5_A] +Maria i ja wyszliśmy na zakupy. + +[AM5_B] +Nasze źródło w policji donosi, że jeden z naszych kierowców to policyjny tajniak. + +[AM5_C] +Bez samochodu nie jest groźny. Przyczepiliśmy do jego gabloty nadajnik. + +[AM5_D] +Niech się dowie, czym grozi taka zabawa. + +[AM5_1] +Tanner chyba ma coś do ciebie! + +[AS1] +'PRZYNĘTA' + +[AS2] +'ESPRESSO NA WYNOS!' + +[AS4] +'OKUP' + +[AS1_A] +~w~Miguel chyba uważa, że źle go traktuję. + +[AS1_B] +~w~Mimo to zdradził mi, jak bardzo Catalina obawia się twojej zemsty. + +[AS2_A] +~w~Nie doceniliśmy planów, jakie Catalina wiąże ze swoją heroiną. + +[AS2_B] +~w~Marzy jej się coś więcej niż banda Yardies sprzedająca prochy na rogu. + +[AS2_D] +~w~Sprzedają herę w swojej sieci budek ulicznych. + +[AS2_1] +~g~Wszystkie budki z espresso w Portland zostałyzniszczone!! + +[AS2_2] +~g~Wszystkie budki z espresso na Wyspie Staunton zostały zniszczone!! + +[AS2_3] +~g~Wszystkie budki z espresso w Shoreside Vale zostały zniszczone!! + +[AS2_4] +~r~Kartel ostrzegł swoich dilerów!! + +[AS2_5] +~g~W Shoreside Vale i na Wyspie Staunton nadal stoi kilka budek z espresso! + +[AS2_6] +~g~W Shoreside Vale nadal stoi kilka budek z espresso! + +[AS2_7] +~g~Na Wyspie Staunton nadal stoi kilka budek z espresso! + +[AS2_8] +~g~W Portland nadal stoi kilka budek z espresso + +[AS2_9] +~g~W Portland i Shoreside Vale nadal stoi kilka budek z espresso + +[AS2_10] +~g~W Portland i na Wyspie Staunton nadal stoi kilka budek z espresso + +[AS2_12] +~g~Badaj dzielnice miasta i szukaj budek Espresso-2-Go! + +[AS3_A] +~W~Przyciskamy już teraz czy poczekamy, aż trochę osłabnie? + +[AS3_B] +~w~Popieść go trochę... + +[AS3_D] +~w~Mój Człowiek do Każdej Roboty! + +[AS3_E] +~w~Nudziłam się, więc wpadłam żeby dotrzymać Asuce towarzystwa. + +[AS3_1] +~g~Odszukaj ~r~łódź~g~ i dopłyń do ~b~boi! + +[AS3_3] +~g~Odczekaj, aż ~y~samolot~g~ rozpocznie podejście!! + +[AS3_5] +~g~Zbierz ładunek! + +[AS3_4] +~g~Użyj wyrzutni rakietowej aby zestrzelić ~y~samolot~g~!! + +[AS3_2] +~b~Płyń do boi wyznaczających lądowisko! ~y~Samolot wykonuje już ostatnie podejście!! + +[AS3_6] +~g~~1~ Z 8! + +[KM1] +'UCIECZKA KANBU' + +[KM3] +'ZDUSIĆ UKŁADY' + +[KM4] +'SHIMA' + +[KM5] +'UDERZENIE' + +[KM1_A] +Moja siostra ma o tobie dobre mniemanie, + +[KM1_E] +choć nie mogę sobie wyobrazić, żeby gaijin mógł dać nam coś innego niż rozczarowania. + +[KM1_B] +Być może mógłbyś pomóc w rozwiązaniu problemu, który leży mi na sercu. + +[KM1_F] +Rzecz jasna, porażka oznacza utratę honoru. + +[KM1_C] +Kanbu, członek Yakuzy, przebywa w areszcie, gdzie czeka na proces. + +[KM1_G] +To ceniony członek rodziny. + +[KM1_H] +Odbij go z aresztu i przywieź do dojo w Bedford Point. + +[KM1_D] +Dziękujemy ci za twoje bezinteresowne działania. Jeżeli kiedykolwiek będziesz potrzebował pomocy, dojo z radością przydzieli ci dwóch wojowników, którzy staną u twego boku. + +[KM1_1] +~g~Ukradnij radiowóz! + +[KM1_2] +~g~Załóż bombę w samochodzie! + +[KM1_3] +~g~Teraz zawieź go do dojo Yakuzy. + +[KM1_5] +~g~W porządku, teraz jazda na posterunek. + +[KM1_6] +~g~Zamontuj w samochodzie ładunek wybuchowy! + +[KM1_7] +~g~Tylko dla pojazdów policyjnych! + +[KM1_9] +~r~Nie użyłeś bomby samochodowej, aby zniszczyć mur. + +[KM1_10] +~r~Kanbu z Yakuzy jest trupem - tak samo jak twój honor! + +[KM1_11] +~r~Ściągnąłeś sobie na głowę kłopoty! + +[KM2_A] +Nie sposób przecenić znaczenia etykiety w tej branży. + +[KM2_B] +Na moją hańbę, pewien człowiek oddał mi kiedyś przysługę, a ja nigdy nie miałem okazji, aby mu się odwdzięczyć. + +[KM2_C] +Konikiem tego człowieka są samochody. Poprosił mnie, abym zgromadził pewne modele aut do jego kolekcji. + +[KM2_F] +Od tego zależy mój honor. + +[KM2_2] +~g~Samochód dostarczony. + +[KM3_A] +Kiedy nadciągają ciemne chmury, głupiec odwraca wzrok, a mędrzec stawia im czoła. + +[KM3_B] +Kartel Kolumbijski zignorował liczne prośby, aby nie naruszać naszych interesów w Liberty City. + +[KM3_C] +Teraz negocjują układ z Jamajczykami, aby jeszcze bardziej nas upokorzyć. + +[KM3_D] +Właśnie finalizują układ o podziale wpływów w mieście. + +[KM3_F] +Weź jednego z moich ludzi, ukradnij samochód gangu Yardie i jedź przekazać Kolumbijczykom nasze wyrazy szacunku. + +[KM3_E] +Nasz honor wymaga, aby wszyscy umarli. + +[KM3_2] +~g~Jedź po swój kontakt. + +[KM3_3] +~g~Spotkanie odbędzie się na parkingu szpitalnym w Rockford! + +[KM3_4] +~r~Uciekają! + +[KM3_6] +~g~Zabij ich, zabij ich wszystkich! + +[KM3_8] +~g~Aby wykonać zadanie, potrzebujesz samochodu gangu Yardie. + +[KM3_9] +~r~Jeden z Kolumbiczyków nie żyje, układ odwołany. + +[KM3_10] +~r~Twój kontakt nie żyje! + +[KM4_A] +Jeżeli chcesz być naprawdę silny, nie możesz nigdy okazywać słabości. + +[KM4_C] +Jak najszybciej odbierz pieniądze, abyśmy mogli wpłacić je na konto kasyna. + +[KM4_1] +Nie mam wam czym zapłacić, ale nawet gdybym miał, to i tak bym tego nie zrobił! + +[KM4_9] +Jakaś banda szczeniaków właśnie stąd uciekła! Zabrali wszystko! + +[KM4_2] +Nie ma z was żadnego pożytku. + +[KM4_10] +A czy ty w ogóle należysz do Yakuzy...? + +[KM4_3] +Nie za to wam płacę, obwiesie. Gdybym chciał takiej ochrony, to zaprosiłbym cholerną policję. + +[KM4_4] +~g~Wymierz karę gangowi odpowiedzialnemu za napad i odzyskaj ~b~opłatę za ochronę~g~! + +[KM4_7] +~r~Sklepikarz wydał ostatnie tchnienie! + +[KM4_5] +Donald Love zaprasza cię do swojego ogrodu herbacianego na rozmowę. + +[KM4_6] +Tam są pieniądze! + +[KM4_8] +~r~Teczka odebrana! + +[KM5_A] +TO TY! Wybrałeś najwłaściwszy moment, aby pokazać swoją bezwartościową postać! + +[KM5_B] +Zdaje się, że twoje marne próby, aby odwieść Jamajczyków + +[KM5_B1] +od skumplowania się z Kartelem były całkowicie chybione! + +[KM5_C] +Handlarze Yardie krążą po ulicach Liberty, sprzedając woreczki HERY tak, jakby sprzedawali hotdogi! + +[KM5_D] +Te wieprze z Kartelu śmieją się z nas, ze mnie! + +[KM5_E] +Dam ci ostatnią szansę, abyś mógł dowieść, że zaufanie, jakim obdarzyła cię moja siostra, nie było bezpodstawne. + +[KM5_F] +Rozjedź tych śmieci i spłucz swoją hańbę w potokach krwi naszych wrogów!!! + +[KM5_3] +~r~Nie udało ci się zabić co najmniej ~1~ członków gangu Yardie. + +[KM5_4] +~g~Gratulacje, zabiłeś ~1~ członków gangu Yardie. + +[KM5_5] +~g~Gratulacje, zabiłeś ~1~ członków gangu Yardie. PREMIA $~1~. + +[RM1] +'UCISZYĆ KAPUSIA' + +[RM3] +'GONIĄC DOWODY' + +[RM4] +'NA RYBY' + +[RM5] +'DOKOŃCZYĆ DZIEŁO' + +[RM1_D] +Siedzi pod ochroną policji w budynku WitSec w Newport, w którymś z mieszkań za parkingiem. + +[RM1_E] +Podpal tę budę, to powinno ich wypłoszyć. Wtedy na nich zapoluj - zadbaj, aby McAffrey już nigdy z nikim nie rozmawiał! + +[RM1_1] +~g~Znajdź miejsce, w którym przebywa chroniony świadek. + +[RM1_2] +~g~Wykończ McAffrey'a! + +[RM2_A1] +Hej, synu, chodź tutaj! + +[RM2_A] +Mój stary kumpel z wojska prowadzi sklepik w Rockford. + +[RM2_D] +Potrzeba mu wsparcia. W zamian możesz liczyć na spore obniżki cen na spluwy, które ma na składzie. + +[RM2_E] +Ray wspominał, że ktoś przyjdzie... ale nie myślałem, że przyśle takiego szczeniaka. + +[RM2_F] +No cóż, trzy ramiona to zawsze więcej niż jedno, więc bierz broń według życzenia. + +[RM2_G] +~g~Zasuwaj i pilnuj Phila! + +[RM2_H] +~r~Phil zginął! + +[RM2_L] +No, no! Gdybyś był z nami wtedy w Nikaragui, może jeszcze miałbym swoją rękę! + +[RM2_N] +Zostaw forsę. Teraz lepiej znikaj, sam zajmę się policją. + +[RM3_D] +Dowody będą przewożone przez miasto. + +[RM3_E] +Musisz staranować ten samochód i zebrać wszystkie dowody, co do jednego! + +[RM3_F] +Kiedy już je zbierzesz, zostaw je w samochodzie i podpal go. + +[RM3_G] +Obaj będziemy mieć sporo korzyści, chłopcze. + +[RM3_1] +~g~Zostaw dowody w samochodzie i podpal wóz. + +[RM3_4] +~g~Samochód prokuratury zgubił dowody! + +[RM3_6] +~r~Teraz te fotografie obejrzy całe miasto! + +[RM3_7] +~g~Podpal samochód! + +[RM4_A] +Podejrzewam, że mój wspólnik to kret. + +[RM4_C] +On każdego wieczoru wypływa na morze, w okolice latarni przy Portland Rock, aby łowić ryby. + +[RM4_D] +Podwędź policyjną łódź i dopilnuj, aby poszedł na dno razem ze swoimi zdradzieckimi planami! + +[RM4_1] +~g~Ukradnij łódź policyjną! + +[RM4_2] +~g~Płyń do latarni morskiej i załatw kolegę Raya! + +[RM5_A] +Ty nieudaczny łajdaku! + +[RM5_A1] +Schrzaniłeś robotę! Moja dupa już się zaczyna smażyć, a ty nie potrafisz zabić nawet cholernej muchy. + +[RM5_B] +Zapłaciłem ci kupę szmalu, żebyś sprzątnął świadka, a on dalej żyje! + +[RM5_B1] +Dzisiaj będzie składał pierwsze zeznania w Sądzie Federalnym! + +[RM5_C] +Lada chwila będzie wyjeżdżał ze Szpitala Ogólnego Carson w Rockford. + +[RM5_D] +Jeżeli on zacznie sypać, koniec ze mną... + +[RM5_E] +więc lepiej zrób to, za co ci zapłaciłem! + +[RM5_1] +~g~Przechwyć karetkę. + +[RM5_2] +~g~Zostałeś rozpoznany! + +[RM5_3] +~g~To była tylko przynęta! + +[RM5_4] +~g~Kule nie przebiją pancernego kadłuba! + +[RM5_5] +~g~Pancerna karoseria jest ognioodporna! + +[RM5_7] +~r~Świadek dotarł na miejsce! + +[RM5_8] +~g~Świadek poszedł na dno! + +[LOVE2] +'SPRZĄTNĄĆ WAKA-GASHIRĘ' + +[LOVE3] +'KROPLA W OCEANIE' + +[LOVE1_A] +Przede wszystkim pozwól mi podziękować, że zechciałeś zająć się tą sprawą o charakterze osobistym. + +[LOVE1_F] +W dzisiejszych czasach ludzie nie szanują żadnych porozumień. + +[LOVE1_D] +Usiłują wymusić na mnie dodatkowe pieniądze, ale ja nie wierzę w renegocjacje. + +[LOVE1_E] +Umowa to umowa, więc nie powinni spodziewać się ode mnie nawet grosza. + +[LOVE1_G] +Uratuj mojego przyjaciela, zrób wszystko, co będzie trzeba. + +[LOVE1_2] +~g~Uratuj starego pana z dalekiego wschodu. + +[LOVE1_3] +~g~Zabierz starego pana z dalekiego wschodu do budynku Donalda Love'a. + +[LOVE1_4] +~g~Stary pan z dalekiego wschodu musi się znajdować w jednym z tych garaży... + +[LOVE1_6] +~r~Flaki starego pana z dalekiego wschodu zostały rozsmarowane po całej ulicy! + +[LOVE1_7] +~g~Brama otworzy się wyłącznie przed samochodem gangu kolumbijskiego. + +[LOVE2_A] +Nic tak nie wpływa na spadek cen nieruchomości, jak stara dobra wojna gangów. + +[LOVE2_B] +No, może z wyjątkiem wybuchu epidemii... ale w tym wypadku nie trzeba się posuwać aż tak daleko. + +[LOVE2_C] +Zauważyłem, że Yakuza i Kolumbijczycy nie są do siebie przyjaźnie nastawieni. + +[LOVE2_D] +Skorzystajmy z tej szansy. + +[LOVE2_E] +Masz zabić Waka-gashirę gangu Yakuzy, Kenji'ego Kasena. + +[LOVE2_F] +Kenji właśnie jest na spotkaniu na szczycie parkingu piętrowego w Newport. + +[LOVE2_G] +Załatw sobie samochód Kartelu i rozsmaruj go na ścianie! + +[LOVE2_H] +Zrób to tak, aby Yakuza obciążyła Kartel za ten akt. + +[LOVE2_1] +~g~Jedź do Fort Staunton i zwędź samochód gangu kolumbijskiego! + +[LOVE2_2] +~g~Teraz jedź na ~p~parking wielopiętrowy w Newport~p~ i załatw Kenjiego! + +[LOVE2_3] +~r~Jeżeli pojedziesz tam bez samochodu Kartelu, zostaniesz rozpoznany! + +[LOVE2_4] +~r~Członkowie Yakuzy cię rozpoznali! + +[LOVE2_6] +~r~Zabiłeś wszystkich świadków!!! + +[LOVE3_A] +W czasach hipokryzji moralnej ciężko jest zdobyć niektóre cenne towary z zagranicy. + +[LOVE3_C] +Pilot zrzuci do wody kilka pakunków. + +[LOVE3_D] +Zbierz je, zanim wpadną w niepowołane ręce. + +[LOVE3_1] +~g~Załatw sobie ~r~łódź~g~ i płyń za ~y~samolotem~g~! + +[LOVE4] +'GRAND THEFT AERO' + +[LOVE5] +'KONWOJENT' + +[LOVE4_A] +Dziękuję za odzyskanie paczek. Przykro mi to mówić, ale była to jedynie przynęta. + +[LOVE4_B] +Nie chciałem cię urazić, po prostu czasami w interesach trzeba tak postąpić. + +[LOVE4_C] +Mój prawdziwy cel przez cały czas był ukryty w samolocie. + +[LOVE4_F] +Przekupiłem kogo trzeba. + +[LOVE4_1] +~r~Są tu ludzie z Kartelu Kolumbijskiego! + +[LOVE4_2] +~g~Pakunek zniknął! Wyśledź Kolumbijczyków i odzyskaj ładunek. + +[LOVE4_3] +~g~Firma budowlana Panlantic Construction? + +[LOVE4_5] +~g~Paczka powinna nadal być w samolocie... + +[LOVE4_6] +~g~Wjedź windą na wieżę! + +[LOVE5_B] +Mój orientalny przyjaciel potrzebuje eskorty, kiedy będze wiózł mój najnowszy nabytek do specjalistów. + +[LOVE5_1] +~g~Ruszamy! + +[LOVE5_2] +~g~Potrzebujesz samochodu! + +[LOVE5_3] +~g~Jedź przodem i zbadaj wylot tunelu! + +[LOVE5_4] +~r~Osłaniaj ciężarówkę! + +[RM6] +'NA WIDELCU' + +[RM6_A] +Nikt cię nie śledził? To dobrze. + +[RM6_B] +To już koniec. Jestem po uszy w gównie i nadal się zapadam. + +[RM6_D] +Jestem na widelcu, więc postanowiłem zniknąć. + +[RM6_E] +Zawieź mnie na mój samolot, a dobrze ci się odwdzięczę! + +[RM6_666] +Zatroszcz się o mojego kuloodpornego Patriota. Do zobaczenia w Miami, Ray. + +[CAT1] +'OKUP' + +[CAT2] +'WYMIANA' + +[CAT1_A] +Mam twoją słodziutką Marię. Jeżeli nie chcesz, żeby jej twarz wyglądała jak po randce z rzeźnikiem, + +[CAT2_F] +Złamałam paznokieć i cała jestem potargana. Nie do wiary! Ta fryzura kosztowała mnie pięćdziesiąt dolców! + +[CAT2_G] +Strasznie się bałam, ale w końcu powiedziałam sobie: jesteś już przecież dużą dziewczyną. + +[CAT2_H] +Och, będziemy się wspaniale bawić, bo moja siostra powiedziała, że chciałaby wpaść do nas ze swoimi dziećmi, + +[CAT2_I] +bo jej mąż znowu się gdzieś szwenda i... + +[CAT1_E] +XXXX + +[CAT1_F] +Dotrzyj do Cataliny sprzed upływem wyznaczonego czasu! + +[CAT_MON] +~g~Nie masz jeszcze tyle pieniędzy. Potrzebujesz $500.000 + +[BITCH_D] +~g~Maria nie żyje! + +[WEATHER] +POGODA WYMUSZONA + +[WEATHE2] +ZWYKŁA POGODA + +[8001] +Marnie kończysz!! + +[1000] +JESTEŚ MARTWY + +[1001] +JESTEŚ MARTWY + +[1002] +JESTEŚ MARTWY + +[1003] +JESTEŚ MARTWY + +[1004] +JESTEŚ MARTWY + +[1005] +WPADKA + +[1006] +WPADKA + +[1007] +WPADKA + +[1008] +WPADKA + +[1009] +WPADKA + +[GA_4] +Bomby samochodowe kosztują 1000 dolarów za sztukę. + +[GA_5] +W twoim samochodzie bomba już została zainstalowana. + +[GA_6] +Zaparkuj wóz, włącz mechanizm klawiszem ~h~~k~~PED_FIREWEAPON~~w~ i W NOGI! + +[GA_7] +Uaktywnij bombę za pomocą klawisza ~h~~k~~PED_FIREWEAPON~~w~. Bomba wybuchnie w momencie włączenia silnika. + +[GA_8] +Użyj detonatora, aby aktywować bombę. + +[GA_9] +Zgromadziłeś ~1~ z 10 samochodów specjalnych. + +[GA_10] +Ładne cacko. Oto twoje ~1~$. + +[GA_11] +Mamy już taki wózek. Dla nas jest on bez wartości. + +[GA_12] +Bomba uzbrojona + +[GA_13] +Robota zawodowca. Skombinuj dla mnie wszystkie wózki z listy, a czeka cię premia. + +[GA_14] +Wszystkie samochody? DOSKONALE! Oto niespodzianka dla ciebie! + +[GA_15] +Mam nadzieję, że podoba ci się nowy kolor. + +[GA_16] +Lakierowanie zakończone. + +[GA_19] +Nie interesuje nas ten model. + +[GA_20] +Mamy tego więcej, niż możemy zepchnąć. Sorry, facet, ale nie wchodzę w to. + +[CR_1] +Dźwig nie jest w stanie podnieść tego pojazdu. + +[PU_MONY] +Nie masz dość forsy. + +[CO_ALL] +Masz już wszystkie. Oto mała niespodzianka... + +[PAUSED] +GRA ZATRZYMANA + +[HEALTH1] +Spadaj stąd! Jesteś zdrów jak ryba. + +[HEALTH2] +Koszty opieki medycznej. + +[HEALTH3] +Trochę cię połatam. + +[HEALTH4] +To kosztuje 250 dolarów. + +[FEB_STA] +Statystyki + +[FEB_BRI] +Zadania + +[FEB_CON] +Sterowanie + +[FEB_AUD] +Audio + +[FEB_DIS] +Ekran + +[FEB_LAN] +Język + +[FEP_STA] +STATYSTYKI + +[FEP_BRI] +CELE + +[FEP_CON] +STEROWANIE + +[FEP_AUD] +DŹWIĘK + +[FEP_DIS] +EKRAN + +[FEP_LAN] +JĘZYK + +[FEF_ST1] +Kto tu jest złym facetem? + +[FEF_ST2] +Ile paniki dzisiaj wzbudziłeś? + +[FEF_BR1] +Straciłeś wątek? + +[FEF_CO1] +Potrzebujesz lepszej kontroli, perfekcjonisto? + +[FEF_CO2] +Określ taką konfigurację klawiszy sterujących, która najlepiej odpowiada preferowanemu stylowi gry. + +[FEF_SA1] +Trzymaj wszystko na kupie! + +[FEF_SA2] +Zapisuj i wczytuj swoje gry + +[FEF_AU1] +Więcej czadu! + +[FEF_AU2] +Wybierz stację radiową oraz efekty dźwiękowe + +[FEF_DI1] +Zmień grę! + +[FEF_DI2] +Dostosuj grę do odbiornika TV + +[FEF_LA1] +O czym gadasz? + +[FEF_LA2] +Wybierz preferowany język + +[FEB_PMB] +Cele poprzednich misji: + +[FEC_NA] +N.D. + +[FEC_CWL] +Przełącz rodzaj broni w lewo + +[FEC_CWR] +Przełącz rodzaj broni w prawo + +[FEC_LOF] +Spójrz do przodu + +[FEC_TAR] +Cel + +[FEC_MOV] +Ruch + +[FEC_CAM] +Tryby kamery + +[FEC_PAU] +Pauza + +[FEC_ENV] +Wsiadanie do pojazdu + +[FEC_JUM] +Skok + +[FEC_ATT] +Atak lub strzał z broni + +[FEC_RUN] +Bieg + +[FEC_FPC] +Kamera - widok z oczu postaci + +[FEC_LL] +Spójrz w lewo + +[FEC_LB1] +Spójrz + +[FEC_LB2] +do tyłu + +[FEC_LB] +Spójrz do tyłu + +[FEC_LR] +Spójrz w prawo + +[FEC_HOR] +Klakson + +[FEC_VES] +Sterowanie w pojeździe + +[FEC_RSC] +Przełącz stacje radiowe + +[FEC_BRA] +Hamulec lub wsteczny + +[FEC_HAB] +Hamulec ręczny + +[FEC_CAW] +Broń w samochodzie + +[FEC_ACC] +Przyspieszenie + +[FEC_SMT] +Włączenie misji specjalnych + +[FEC_CCF] +Konfiguracja: + +[FEC_CF1] +Setup1 + +[FEC_CF2] +Setup2 + +[FEC_CF3] +Setup3 + +[FEC_CF4] +Setup4 + +[FEC_CDP] +Sterownik ekranu: + +[FEC_ONF] +Pieszo + +[FEC_INC] +W aucie + +[FEC_VIB] +Wibracja: + +[FEA_OUT] +Wyjście: + +[FEA_ST] +stereo + +[FEA_MNO] +mono + +[FEA_NON] +Brak + +[FEA_FM0] +HEAD RADIO + +[FEA_FM1] +DOUBLE CLEFF FM + +[FEA_FM2] +JAH RADIO + +[FEA_FM3] +RISE FM + +[FEA_FM4] +LIPS 106 + +[FEA_FM5] +GAME FM + +[FEA_FM6] +MSX FM + +[FEA_FM7] +FLASHBACK 95.6 + +[FEA_FM8] +GADUŁA 109 + +[FED_DBG] +Menu debugowania + +[FED_RID] +Ponowne wczytanie IDE + +[FED_RIP] +Ponowne wczytanie IPL + +[FED_PAH] +Parse Heap + +[FED_RCD] +CCullZones::RecalculateCullZoneData + +[FED_DFL] +CTheScripts::DbgFlag + +[FED_DLS] +Big White Debug Light Switched + +[FED_SPR] +Show Ped Road Groups + +[FED_SCR] +Show Car Road Grups + +[FED_SCZ] +Show Cull Zones + +[FED_DSR] +Żądania przetworzenia w trybie debugowania + +[FED_SCP] +gbShowCollisionPolys + +[FEM_MCM] +Menu karty pamięci + +[FEM_RMC] +Register MemCard One + +[FEM_TFM] +Próbne formatowanie karty pamięci 1 + +[FEM_TUM] +Próbne odformatowanie karty pamięci 1 + +[FEM_CRD] +Utwórz katalog główny + +[FEM_CLI] +Twórz i wczytuj ikony + +[FEM_FFF] +Fill First File with Guff + +[FEM_SOG] +Zapisz tylko grę + +[FEM_CES] +Check Every 0kB4 Save + +[FEM_STG] +Zapisz grę + +[FEM_STS] +Zapisz grę pod nazwą GTA3 + +[FEM_CPD] +Utwórz chroniony katalog magazynowy + +[FEM_MC2] +Menu karty pamięci 2 + +[FEM_TS] +Próbne zapisywanie: + +[FEM_TL] +Próbne wczytywanie: + +[FEM_TD] +Próbne kasowanie: + +[PL_STAT] +Statystyki gracza + +[PE_WAST] +Ludzie załatwieni przez gracza + +[PE_WSOT] +Ludzie załatwieni przez innych + +[CAR_EXP] +Wysadzone samochody: + +[TM_BUST] +Liczba wpadek + +[M_WASTE] +Załatwieni mężczyźni-cywile + +[F_WASTE] +Załatwione kobiety-cywile: + +[PIG_WST] +Załatwieni gliniarze + +[GNG_WST] +Członkowie gangu załatwieni. + +[MED_WST] +Załatwieni lekarze + +[FIRE_WS] +Strażak załatwiony + +[DED_CRI] +Załatwieni przestępcy: + +[DED_DED] +Załatwione lumpy: + +[DED_HOK] +Załatwione dziwki: + +[HEL_DST] +Zniszczone helikoptery + +[PER_COM] +Procent ukończenia gry + +[KGS_EXP] +Użyte materiały wybuchowe (kg) + +[ACCURA] +Dokładność + +[ELBURRO] +Najlepsze czasy wyścigu w sekundach: + +[CAR_CRU] +Zmiażdżone samochody: + +[HED_EX] +Rozbite głowy + +[TM_DED] +Wizyty w szpitalu + +[DAYSPS] +Liczba dni, które upłynęły w grze: + +[MMRAIN] +mm deszczu + +[MXCARD] +Maks. odległość SZALONEGO skoku (w stopach) + +[MXCARJ] +Maks. wysokość SZALONEGO skoku (w stopach) + +[MXCARDM] +Maks. odległość SZALONEGO skoku (w metrach) + +[MXCARJM] +Maks. wysokość SZALONEGO skoku (w metrach) + +[MXFLIP] +Maks. liczba salt w SZALONYM skoku + +[MXJUMP] +Maks. liczba obrotów w SZALONYM skoku + +[BSTSTU] +Najlepszy SZALONY skok do tej pory: + +[INSTUN] +Szalony skok + +[PRINST] +Bezbłędny szalony skok + +[DBINST] +Podwójny szalony skok + +[DBPINS] +Bezbłędny podwójny szalony skok + +[TRINST] +Potrójny szalony skok + +[PRTRST] +Bezbłędny potrójny szalony skok + +[QUINST] +Poczwórny szalony skok + +[PQUINS] +Bezbłędny poczwórny szalony skok + +[NOSTUC] +Nie wykonano żadnych SZALONYCH skoków + +[NOUNIF] +Wyjątkowe skoki wykonane + +[NOUNGM] +Wyjątkowe skoki razem + +[NMISON] +Próby wykonania misji + +[NMMISP] +Wykonane misje + +[PASDRO] +Zgubieni pasażerowie + +[MONTAX] +Forsa zarobiona w taksówce + +[DAYPLC] +Dzienne wydatki policji: + +[CRIMRA] +Ranking zbrodni: + +[GMSTOR] +Zachowanie gry + +[PREBRF] +Poprzednie zapisy + +[CNTLS] +Sterowanie + +[MUSMEN] +Muzyka/dźwięki + +[GAMSET] +Ustawienia gry + +[LANGUA] +Język + +[DSPLAY] +Ekran + +[DEBUGM] +Menu funkcji debugowania + +[QUITOP] +Wyjście z menu opcji + +[CONTRL] +Konfiguracja sterowania + +[SET1EN] +SetUp 1. Enabled + +[SET1] +SetUp 1. + +[SET2EN] +SetUp 2. Enabled + +[SET2] +SetUp 2 + +[SET3EN] +SetUp 3. Enabled + +[SET3] +SetUp 3 + +[SET4EN] +SetUp 4. Enabled + +[SET4] +SetUp 4 + +[GOBACK] +Wróć + +[SOUND] +DŹWIĘK + +[MUSVOL] +Głośność muzyki + +[SFXVOL] +Głośność efektów dźwiękowych + +[SCROPT] +OPCJE EKRANU + +[CTRSCR] +Wyśrodkowanie Ekranu + +[SCRFOR] +Format ekranu + +[GMSVLQ] +WCZYTAJ-ZAPISZ-WYJDŹ Z GRY + +[GMREST] +Ponowne uruchomienie gry + +[NOGMSV] +Zapisywanie stanu gry jest możliwe tylko w kryjówce. + +[DLFILE] +Skasować pliki Grand Theft Auto III + +[CHFILE] +WYBIERZ PLIK, KTÓRY MA ZOSTAĆ WCZYTANY + +[CHFIDL] +WYBIERZ PLIK, KTÓRY MA ZOSTAĆ SKASOWANY + +[SVCONF] +POTWIERDZENIE ZAPISU + +[LANGSL] +WYBÓR JĘZYKA + +[ENGLIS] +Polski + +[GERMAN] +Niemiecki + +[ITALIA] +Włoski + +[FRENCH] +Francuski + +[SPAIN] +Hiszpański + +[RELIDE] +ReLoadIde + +[RELIPE] +ReLoadIpl + +[PARSHP] +Parse Heap + +[DBGFON] +CTheScripts::DbgFlag On + +[DBFOFF] +CTheScripts::DbgFlag Off + +[BGWHON] +Big White Debug Light - włączony + +[BGWOFF] +Big White Debug Light - wyłączony + +[DSTRON] +Debug Streaming Requests On + +[DSTROFF] +Debug Streaming Requests Off + +[PDRGON] +ShowPedRoadGroups On + +[PRGOFF] +ShowPedRoadGroups Off + +[CRRGON] +ShowCarRoad Group Włączone + +[CRGOFF] +ShowCarRoadGroups Wyłączone + +[CLZOON] +Wyłączone pokazywanie stref zniszczeń + +[CLZOOF] +Włączone pokazywanie stref zniszczeń + +[SHPLON] +gbShowCollisionPolys On + +[SHPLOF] +gbShowCollisionPolys Off + +[CULREC] +CCullZones::RecalculateCullZoneData() + +[FORMM1] +FormatMemCard 1 (element testowy) + +[UNFRM1] +UnFormatMemCard 1 (element próbny) + +[GORLEV] +Poziom 'Krwawy' + +[SICASS] +Sick Fuck + +[SICSIC] +Sick Fucker + +[SCASSL] +Sick Fuck wybrany + +[SCSCSL] +Sick Fucker wybrany + +[PRVMEN] +Cele poprzednich misji + +[FORMEN] +Menu formatu + +[MEMTST] +Ekran TestKartPamięci + +[REGCAR] +Rejestracja KartaPamięci Jeden + +[TEFONE] +Próbne formatowanie karty pamięci 1 + +[TEUFON] +Próbne odformatowanie karty pamięci 1 + +[CRROOT] +Utwórz Katalog Główny + +[CRLDIC] +Tworzenie i wczytywanie ikon + +[FLFSGF] +Fill First File With Guff + +[PUSAVE] +Zapisz tylko grę + +[CHEVOK] +CheckEveryOkB4Save + +[SVGMON] +Zapisz grę + +[CNTSAV] +Nie można zapisać stanu gry. Jesteś w trakcie misji. + +[CNCSAV] +Nie można zapisać stanu gry. Jesteś w samochodzie. + +[CRMGSV] +Utwórz chroniony katalog magazynowy + +[MGSVCN] +Katalog magazynowy utworzony + +[MGSVNC] +Katalog magazynowy nieutworzony + +[YES] +Tak + +[NO] +Nie + +[X] +x + +[LAST] +Ostatnia wiadomość + +[FEDS_XB] +Wybierz + +[FEDS_ST] +klawisz START - WZNÓW + +[FEST_OO] +z + +[FEC_TUC] +Sterowanie wieżyczką + +[FEC_SM3] +Włączenie misji specjalnych (klawisz R3) + +[FEC_RS3] +Przełącz stacje radiowe (klawisz L3) + +[FEC_HO3] +Klakson (klawisz lewy SHIFT) + +[DIAB1] +'WYŚCIG' + +[DIAB2] +'PRZEŁAMAĆ LODY' + +[DIAB3] +'PRÓBA OGNIA' + +[DIAB4] +'WIELKI I ŻYLASTY' + +[DIAB1_A] +El Burro ma dla ciebie propozycję. Jeżeli jesteś zainteresowany, odszukaj budkę telefoniczną w Hepburn Heights. + +[DIAB1_C] +Niezły z ciebie kierowca! Jedź do wskazanej budki telefonicznej, a może El Burro da ci jakieś zajęcie. + +[DIAB1_1] +~g~3... 2... 1... NAPRZÓD! NAPRZÓD! NAPRZÓD! + +[DIAB1_4] +~g~Załatw sobie szybki wóz i jedź na miejsce startu. + +[DIAB1_3] +~r~Nie wygrałbyś nawet z własną babcią, LESZCZU! + +[DIAB1_2] +~g~Gratulacje, wygrywasz, uzyskując niesamowity czas: ~1~sekund. + +[FIRST] +~g~pierwszy + +[SECOND] +~g~drugi + +[THIRD] +~g~trzeci + +[FOURTH] +~g~4 + +[DIAB2_1] +~g~Zabierz teczkę z Harwood. + +[DIAB2_2] +~g~Odszukaj półciężarówkę lodziarza. + +[DIAB2_3] +~g~Zaparkuj samochód lodziarza na Atlantic Quays. + +[DIAB2_4] +~g~Naciśnij klawisz ~w~~k~~VEHICLE_HORN~~g~, aby włączyć sygnał reklamujący lody. + +[DIAB2_6] +~g~Naciśnij klawisz ~w~~k~~VEHICLE_HORN~~g~, aby włączyć sygnał reklamujący lody. + +[DIAB2_7] +~g~Naciśnij klawisz ~w~~k~~VEHICLE_HORN~~g~, aby włączyć sygnał reklamujący lody. + +[DIAB2_5] +~g~Wysiądź z samochodu, a następnie zdetonuj go za pomocą nadajnika. + +[YD1] +'SZUKAJ PUNKTÓW!' + +[YD2] +'RUCHOMY CEL' + +[YD3] +'KOLEKCJONER WOZÓW' + +[YD4] +'KRÓLESTWO NIEBIESKIE' + +[YD_P] +King Courtney prosi cię na słówko. Znajdź budkę telefoniczną w Aspatrii!! + +[YD1_A] +~w~Z tej strony King Courtney. + +[YD1_A1] +~w~Moja paczka, Yardies, potrzebuje kierowcy, a ty masz reputację bystrego faceta. + +[YD1_B] +~w~Jedź na wysypisko naprzeciwko stadionu i poczekaj na innych zawodników. + +[YD1_C] +~w~Moi ludzie pilnują punktów kontrolnych w całym Staunton. + +[YD1_D] +~w~Kierowca, który pierwszy dotrze do takiego miejsca, otrzymuje jeden punkt. Potem ścigamy się do następnego przystanku. + +[YD1_D1] +~w~Jeżeli zaliczysz więcej punktów niż inni kierowcy, być może będę miał dla ciebie zadanie. + +[YD1_E] +~g~Gotowi do wyścigu! + +[YD1_F] +~g~Minąłeś punkt startu - podoba mi się twój styl!!! + +[YD1_G] +~r~To jest WYŚCIG SAMOCHODOWY. Masz jechać SAMOCHODEM, IDIOTO! + +[YD1GO] +~g~START! + +[YD1_1] +~r~1 + +[YD1_2] +~r~2 + +[YD1_3] +~r~3 + +[YD1_BON] +$1000!! + +[Y1_1ST] +~g~Kończysz na pierwszym miejscu i pomyślnie zaliczasz ~1~ punktów kontrolnych! + +[Y1_2ND] +~y~Jesteś drugi, pomyślnie zaliczyłeś ~1~ punktów kontrolnych. ~r~Było blisko, ale trochę ci jeszcze brakuje. + +[Y1_3RD] +~r~Jesteś trzeci, pomyślnie zaliczyłeś ~1~ punktów kontrolnych. ~r~A mówiłeś, że jesteś niezły! + +[Y1_LAST] +~r~Jesteś ostatni! ~r~Tylko marnujesz mój czas, IDIOTO! + +[Y1_J1ST] +~y~Pierwsze miejsce ex aequo, pomyślnie zaliczyłeś ~1~ punktów kontrolnych. ~y~Nieźle, ale musisz być najlepszy z najlepszych, aby móc jeździć dla Królowej Lizzy! + +[Y1_J2ND] +~r~Drugie miejsce ex aequo, pomyślnie zaliczyłeś ~1~ punktów kontrolnych. Jechałeś jak wściekły goryl! + +[Y1JLAST] +~r~Ostatnie miejsce ex aequo! Wymądrzałeś się jak stary kierowca, ale kierowałeś jak stary przemądrzalec! + +[Y1_TEST] +SAMOCHÓD W WODZIE!! + +[YD2_A] +~w~Muszę sprawdzić, czy dajesz sobie radę z mokrą robotą. + +[YD2_A1] +~w~Zobaczymy, czy można ci zaufać. + +[YD2_B] +~w~Dwóch moich chłopców zaraz po ciebie przyjedzie, żeby zabrać cię na przejażdżkę + +[YD2_B1] +~w~i sprawdzić, czy naprawdę umiesz tyle, ile twierdzisz. + +[YD2_C] +~w~Jedziemy na mały wypad na Wzgórza Hepburn, żeby sprzątnąc paru śmierdziuchów z gangu Diablo, którzy wkurzali Królową Lizzy. + +[YD2_CC] +~w~Będziesz potrzebował gnata, trzymaj. + +[YD2_D] +~w~Ty kierujesz i strzelasz. My zadbamy, żeby nie zabrakło ci odwagi. + +[YD2_E] +~w~Jazda! + +[YD2_F] +~w~Oszukał nas! Dorwać jego zdradliwą dupę! + +[YD2_G1] +~w~Wzgórza Hepburn. Zabijmy paru śmierdzących Diablo... + +[YD2_G2] +~w~Tylko pamiętaj, ~r~ masz nie wysiadać z samochodu!!! + +[YD2_H] +~w~W porządku, wracamy na terytorium Yardies! JAZDA, SZYBCIEJ!! + +[YD2_L] +~w~Dobrze się spisałeś, żniwiarzu! + +[YD2_M] +~r~Rozwalił mój samochód! Załatwić go! + +[YD2_N] +~w~Posadź tyłek z powrotem w samochodzie! + +[YD3_A] +Masz porwać dla mnie kilka samochodów gangów tak, + +[YD3_A1] +abyśmy mogli uderzyć we wrogów na ich własnym terytorium. + +[YD3_B] +Potrzebuję mafijnego Sentinela, + +[YD3_B1] +Stingera Yakuzy oraz + +[YD3_B2] +Ogiera gangu Diablo. Wtedy będzie można uderzyć na każdego w Liberty. + +[YD3_C] +Zostaw je przy garażu w Newport, ale pamiętaj, + +[YD3_C1] +potrzebujemy tylko fury w dobrym stanie!!! + +[YD3_D] +Wolne miejsce na tekst + +[YD3_E] +~r~Już zdobyłeś samochód gangu Diablo! + +[YD3_F] +~r~Już zdobyłeś samochód mafii! + +[YD3_G] +~r~Już zdobyłeś samochód Yakuzy! + +[YD3_H] +~r~Zdobyłeś samochód gangu Diablo! + +[YD3_I] +~r~Zdobyłeś samochód mafii! + +[YD3_J] +~r~Zdobyłeś samochód Yakuzy! + +[YD3_K] +~r~Ten samochód to ruina! Musisz go naprawić! + +[YD3_L] +~g~Zabierz samochód do garażu! + +[YD3_M] +~r~Straciłeś wóz! Musisz zdobyć jeszcze jeden! + +[YD4_A] +Posłuchaj! + +[YD4_A1] +Jedź do Bedford Point. + +[YD4_A2] +W starym samochodzie jest coś, czego potrzebuję, pronto! + +[YD4_B] +LIST: Słyszałam, że ostatnio byłeś pilnym uczniem. Cóż, ja byłam pilną uczennicą. + +[YD4_C] +Czas, abyś poznał prawdziwą siłę HEROINY! Besos y fuderes, Catalina, xxx. + +[YD4_D] +PS. ZDYCHAJ KUNDLU! + +[YD4_1] +~g~Naćpani szaleńcy! + +[YD4_2] +~g~Zniszcz ciężarówki wariatów! + +[HM_1] +'AGRESYWNA JAZDA' + +[HM_2] +'ZABAWKOWY ZABÓJCA' + +[HM_3] +'ZDĄŻYĆ PRZED WYBUCHEM'v + +[HM_5] +'ROZRÓBA' + +[HOOD1_A] +Znajdź budkę telefoniczną w Wichita Gardens, to pogadamy o interesach. + +[HM1_A] +Yo! Z tej strony D-Ice z gangu Red Jacks! + +[HM1_C] +Te szczeniaki wyłażą na ulice i myślą tylko o tym, kogo by tu zastrzelić i co zaćpać. + +[HM1_3] +~g~'Dziewiątki' mają swoje terytorium w Wichita Gardens. + +[HM2_3] +Jeżeli uderzysz zdalnie sterowanym samochodzikiem w koła pojazdu, ładunek wybuchnie! + +[HM2_4] +Jeżeli samochodzik wyjedzie poza zasięg nadajnika, ładunek wybuchnie! + +[HM2_5] +~r~Samochodzik poza zasięgiem! + +[HM3_1] +~g~Zabierz samochód do warsztatu, ale uważaj! Jeżeli samochód zostanie mocno uszkodzony, ładunek może wybuchnąć! + +[HM3_2] +~g~Zwróć samochód właścicielowi. Jedź ostrożnie, wóz musi być w doskonałym stanie! + +[HM3_3] +~g~Napraw samochód! + +[HM4_D] +~g~Zdobądź samochód! + +[HM4_E] +TEKST NIEPOTRZEBNY + +[HM4_1] +~g~Jedź do miejsca, w któym rozsypał się ładunek. Musisz zebrać 30 sztabek. + +[HM4_2] +~g~Pamiętaj, kiedy samochód zrobi się ciężki, poturlaj się do garażu i wysyp ładunek. + +[HM5_3] +~r~Miałeś używać wyłącznie kija bejsbolowego! + +[HM5_4] +~r~Twój kontakt nie żyje! + +[MEA1] +'CWANIAK' + +[MEA2] +'ZŁODZIEJE' + +[MEA3] +'ŻONA' + +[MEA4] +'KOCHANEK' + +[MEAT1_A] +Znajomy powiedział mi, że potrafisz rozwiązywać problemy. Jeżeli chcesz zająć się moimi kłopotami, znajdź budkę telefoniczną w Trenton. + +[MEA1_B3] +~g~Spotkaj się z kierownikiem banku. + +[MEA1_B6] +~g~Zabierz samochód do zgniatarki, aby pozbyć się dowodów. Wysiądź z samochodu, a dźwig już się wszystkim zajmie. + +[MEA1_1] +~r~Kierownik banku nie żyje! + +[MEA1_2] +~r~Miałeś zniszczyć ten pojazd! + +[MEA1_3] +~g~Wysiądź z samochodu! + +[MEA1_4] +~r~Zgubiłeś kierownika banku! + +[MEA2_B3] +~g~Jedź po złodziei. + +[MEA2_B4] +~g~Zabierz ich do fabryki Delikatesów Pod Psem. + +[MEA2_B6] +~g~Przemaluj samochód, aby zatrzeć ślady. + +[MEA2_1] +~r~Miałeś zniszczyć ten pojazd! + +[MEA2_2] +~r~Złodziej nie żyje! + +[MEA2_4] +~r~Zgubiłeś jednego ze złodziei! + +[MEA3_B3] +~g~Jedź po panią Chonks. + +[MEA3_B6] +~g~Zabierz samochód i wrzuć go do wody, aby pozbyć się dowodów. + +[MEA3_1] +~r~Żona nie żyje! + +[MEA3_2] +~r~Miałeś wrzucić samochód do wody! + +[MEA3_3] +~r~Zgubiłeś żonę Marty'ego! + +[MEA4_B3] +~g~Zabierz kochanka żony. + +[MEA4_B6] +Na to już za późno, Marty. Miałeś szansę, ale teraz przejmuję twoją budę... + +[MEA4_1] +~r~Carlos nie żyje! + +[MEA4_3] +~r~Zgubiłeś Carlosa lichwiarza! + +[LOOK_A] +Naciśnij i przytrzymaj klawisz ~h~~k~~VEHICLE_LOOKLEFT~ ~w~lub klawisz ~h~~k~~VEHICLE_LOOKRIGHT~ ~w~, aby spojrzeć ~h~w lewo~w~ lub ~h~w prawo~w~ przez szyby pojadu. Naciśnij oba klawisze naraz, aby spojrzeć ~h~do tyłu~w~. + +[LOVE6_1] +~g~Teraz odciągnij gliniarzy od magazynu! + +[LOVE6_2] +~r~Nie udało ci się odciągnąć glin na wystarczającą odległość! + +[RM4_3] +~r~Kumpel Raya zwiał! + +[RM6_C] +Zdaje się, że CIA ma jakiś swój interes w utrzymaniu handlu PROCHAMI + +[RM6_C1] +i nie spodobało im się, że zadarliśmy z Kartelem. + +[C_PASS] +ZAGROŻENIE ZLIKWIDOWANE + +[CTUTOR] +Naciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~, aby włączyć lub wyłączyć misje patrolowe. + +[CTUTOR2] +Naciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~, aby włączyć lub wyłączyć misje patrolowe. + +[COPCART] +~g~Masz ~1~ sekund na powrót do radiowozu albo misja zakończy się. + +[C_FAIL] +Misja patrolowa zakończona! + +[C_CANC] +~r~Misja patrolowa anulowana! + +[C_ESCP] +~r~Podejrzany uciekł! + +[C_TIME] +~r~Twój czas w roli stróża prawa minął! + +[C_VIGIL] +PREMIA PATROLOWA!! + +[A_FAIL2] +~r~Twoje ślamazarność kosztowała pacjenta życie! + +[A_FAIL3] +~r~Pacjent nie żyje! + +[A_PASS] +Uratowany! + +[F_FAIL2] +~r~Spóźniłeś się! + +[A_COMP2] +Ty chyba nigdy się nie męczysz! + +[RM2_M] +Jak będziesz potrzebował spluwy, wpadaj do mnie jak w dym i bierz z szafek, co ci się podoba. + +[HEAL_A] +Twój ~h~poziom życia~w~ jest wyświetlony na pomarańczowo w prawym górnym narożniku ekranu. + +[YD1_CNT] +~1~ z 15! + +[FM1_9] +~g~Przed nami miejsce imprezy - wysadź Marię przed budynkiem. + +[FM1_Y] +~w~Wiesz, dawno się tak dobrze nie bawiłam, a ty traktowałeś mnie naprawdę dobrze. Z szacunkiem i w ogóle.. + +[FM1_AA] +~w~Chyba już pójdę. W takim razie - do zobaczenia! + +[NOCONTE] +Aby kontynuować, proszę ponownie umieścić wtyczki kontrolera analogowego (DUALSHOCK@) lub kontrolera analogowego (DUALSHOCK@2) w porcie kontrolerów gry nr 1. + +[WRCONT] +Kontroler w porcie nr 1 nie jest rozpoznany. Gra Grand Theft Auto III wymaga kontrolera analogowego (DUALSHOCK@) lub kontrolera analogowego (DUALSHOCK@2). + +[WRCONTE] +Kontroler w porcie nr 2 nie jest rozpoznany. Gra Grand Theft Auto III wymaga kontrolera analogowego (DUALSHOCK@) lub kontrolera analogowego (DUALSHOCK@2). + +[WRONGCD] +Niewłaściwa płyta. Proszę włożyć właściwą płytę. + +[NOCD] +Nie znaleziono GTAIII CD w czytniku. + +[OPENCD] +Taca napędu jest wysunięta. Wsuń tacę napędu CD-ROM. + +[CDERROR] +Błąd w odczycie płyty Grand Theft Auto III. + +[RESTART] +Trwa rozpoczynanie nowej gry + +[GA_3] +Koniec z promocjami. 1000 dolców za malowanie! + +[GA_1] +Coś ty! Nawet nie dotknę takiego trefnego towaru! + +[GA_1A] +Wróć, kiedy będziesz miał chwilę wolnego czasu... + +[S_PROM2] +Garaż znajdujący się za sąsiednimi drzwiami służy do przechowywania pojazdów podczas zapisywania stanu gry. + +[STOCK] +brak towaru + +[FM1_O] +~w~Myślę, że znajdziemy go nad brzegiem morza, w okolicach Chinatown. + +[EBAL_B] +To właśnie tu. Zjedźmy z ulicy i poszukajmy jakichś ciuchów, żeby zmienić te więzienne łachy! + +[EBAL_G] +To jest właśnie klub 'U Luigiego'. Obejdziemy tę budę i skorzystamy z tylnych drzwi. + +[AM4_3] +A więc to ty jesteś nowym chłopcem na posyłki Asuki? + +[AM4_4] +Masz forsę? Mam nadzieję, że wszystko jest jak trzeba? + +[AM4_5] +Wiem, co sobie myślisz, następny sprzedajny gliniarz. + +[AM4_6] +Cóż, każdy orze jak może. + +[AM4_7] +Straciłem ostatnio paru partnerów i ci frajerzy z wydziału wewnetrznego zaczęli coś przewąchiwać. + +[AM4_8] +Żeby tylko nie wyniuchali moich śladów. + +[AM4_9] +To miasto to jeden wielki otwarty ściek. + +[AM4_10] +Przyda mi się pomoc kogoś niezrzeszonego. + +[AM4_11] +Jeżeli masz jakiś interes, wiesz gdzie mnie znaleźć. + +[CAM_A] +Wciskaj klawisz ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~~w~, aby zmieniać tryby pracy ~h~kamery ~w~, zarówno w samochodzie jak i poza nim. + +[CAM_B] +Wciskaj klawisz ~h~strzałki w gorę~w~ oraz ~h~strzałki w dół~w~, aby zmieniać tryby pracy ~h~kamery ~w~, zarówno w pojeździe jak i poza nim. + +[KM2_1] +~g~Napraw samochód. Wóz musi być w idealnym stanie. + +[LM3_6] +Joey... + +[LM3_6A] +Znowu będę mogła się pobawić twoim drągiem? + +[LM3_9A] +może będę miał dla ciebie jakieś zajęcie. + +[LM3_9B] +W porządku? + +[AWAY2] +~r~Uciekli. + +[AWAY] +~r~Zwiał stąd, gdzie pieprz rośnie! + +[JM6_1] +Jedź do banku na głównej ulicy. + +[GA_6B] +Zaparkuj wóz, włącz mechanizm klawiszem ~h~~k~~PED_FIREWEAPON~~w~ i W NOGI! + +[GA_7B] +Uaktywnij bombę za pomocą klawisza ~h~~k~~PED_FIREWEAPON~~w~. Bomba wybuchnie w momencie włączenia silnika. + +[BAT1] +~g~Podnieś kij bejsbolowy! + +[EBAL_O] +Jeśli nic nie schrzanisz, może znajdzie się dla ciebie jakaś praca. A teraz zjeżdżaj! + +[HELP9_B] +Naciśnij klawisz~h~ ~k~~PED_FIREWEAPON~~w~, aby oddać ~h~strzał~w~ z karabinu snajperskiego. + +[HELP9_C] +Naciśnij klawisz~h~ ~k~~PED_FIREWEAPON~~w~, aby oddać ~h~strzał~w~ z karabinu snajperskiego. + +[JM6_8] +~r~Straciłeś wszystkich złodziei! + +[COLT_IN] +Ammu-nacja zaczyna sprzedaż pistoletów! + +[TAXI2] +~r~Koniec czasu! + +[TAXI3] +~r~Przerażony pasażer ucieka! + +[TAXI7] +~r~Twoja taksówka to ruina, połataj ją trochę. + +[TAXI4] +Kurs wykonany! + +[TAXI5] +PREMIA ZA SZYBKOŚĆ!!! + +[TAXI6] +Koniec misji w taksówce + +[FRANGO] +~g~Salvatore chce, abyś najpierw pomógł Toniemu załatwić porachunki z Triadami! + +[PAGEB12] +Łapówka policyjna dostarczona do kryjówki + +[PAGEB13] +Życie dostarczone do kryjówki + +[PAGEB14] +Adrenalina dostarczona do kryjówki + +[KM1_4] +~g~Do tej roboty przydałby się radiowóz! + +[CAT1_B] +przynieś 500.000 $ do Willi w Cedar Grove. + +[JM2_C] +Gość ma budę z makaronem w Chinatown. + +[RM6_1] +Tu masz klucz do dziupli. + +[RM6_2] +Znajdziesz tam trochę forsy i 'zapasów', które zbierałem na czarną godzinę. + +[RM6_3] +Trzymaj się. + +[FE_INIP] +Inicjalizacja i wczytywanie menu pauzy... Proszę czekać. + +[FESZ_CA] +Anuluj + +[FESZ_QU] +Wyjście + +[FESZ_L1] +Gra została pomyślnie zapisana. + +[FESZ_L2] +Gra została zapisana w pliku o nazwie: + +[FESZ_OK] +OK + +[FES_LGA] +Wczytaj grę + +[FES_NGA] +Nowa gra + +[FES_CAN] +Anuluj + +[FESZ_QL] +Wszelkie niezapisane osiągnięcia i zdobycze w trwającej grze zostaną utracone. Wczytać grę? + +[FESZ_QD] +Czy skasować ten zapis gry? + +[FESZ_QO] +Czy nadpisać tę grę na starszym pliku? + +[FESZ_QR] +Czy jesteś pewien, że chcesz rozpocząć nową grę? Wszelkie osiągnięcia i postępy poczynione od momentu ostatniego zapisu gry zostaną utracone. Kontynuować? + +[FESZ_QS] +KONTYNUOWAĆ ZAPIS? + +[T4X4_1] +'PLAC ZABAW PATRIOTÓW' + +[T4X4_2] +'PRZEJAŻDŻKA W PARKU' + +[T4X4_3] +'W POTRZASKU!' + +[MM_1] +'KOSZMAR WIELU PIĘTER' + +[T4X4_1A] +~g~Masz ~y~5 minut~g~ na zaliczenie ~y~15~g~ punktów kontrolnych. ~g~Możesz zaliczać je w ~y~DOWOLNEJ KOLEJNOŚCI. + +[T4X4_1B] +~1~ z 15! + +[T4X4_1C] +~y~PRZEJEDŹ PRZEZ~g~ pierwszy punkt kontrolny, aby uruchomić odliczanie czasu. ~g~Zaliczenie każdego punktu jest premiowane dodatkowymi ~y~20 SEKUNDAMI~g~ + +[T4X4_2A] +~g~Masz ~y~2 minuty~g~ na zaliczenie ~y~12~g~ punktów kontrolnych. ~g~Możesz zaliczać je w ~y~DOWOLNEJ KOLEJNOŚCI. + +[T4X4_2B] +~1~ z 12! + +[T4X4_2C] +~y~PRZEJEDŹ PRZEZ~g~ pierwszy punkt kontrolny, aby uruchomić odliczanie czasu. ~g~Zaliczenie każdego punktu jest premiowane dodatkowymi ~y~10 SEKUNDAMI~g~ + +[T4X4_3A] +~g~Masz ~y~5 minut~g~ na zaliczenie ~y~20~g~ punktów kontrolnych. ~g~Możesz zaliczać je w ~y~DOWOLNEJ KOLEJNOŚCI. + +[T4X4_3B] +~y~PRZEJEDŹ PRZEZ~g~ pierwszy punkt kontrolny, aby uruchomić odliczanie czasu. ~g~Zaliczenie każdego punktu jest premiowane dodatkowymi ~y~15 SEKUNDAMI~g~ + +[T4X4_3C] +~1~ z 20! + +[T4X4_F] +~r~Wymiękasz! Może lepiej sprawdzisz się w wyścigach na hulajnodze?! + +[MM_1_A] +~g~Masz ~y~2 minuty~g~ na zaliczenie ~y~20 punktów kontrolnych~g~ w całym obiekcie! ~g~Możesz zaliczać punkty w ~y~DOWOLNEJ KOLEJNOŚCI. + +[MM_1_B] +~1~ z 20! + +[MM_1_C] +~g~To oznacza 20 sekund plus ~y~5 SEKUND~g~ premii za każdy zaliczony punkt. ~g~Zegar zaczyna odliczanie ~y~NATYCHMIAST. + +[FM2_14] +~r~Zbliżyłeś się za bardzo i wystraszyłeś Kudłatego! + +[FM2_15] +~g~Nie zbliżaj się zbytnio, bo Kudłaty zacznie coś podejrzewać! + +[UPSIDE] +~r~Przewróciłeś samochód! + +[FM2_16] +STRACHOMETR: + +[LM3_11] +~g~Misty nie będzie jeździć autobusem, załatw inny pojazd! + +[LANDSTK] +Landstalker + +[IDAHO] +Idaho + +[STINGER] +Stinger + +[LINERUN] +Linerunner + +[PEREN] +Perennial + +[SENTINL] +Sentinel + +[PATRIOT] +Patriot + +[FIRETRK] +Wóz strażacki + +[TRASHM] +Śmieciożer + +[STRETCH] +Stretch + +[MANANA] +Manana + +[INFERNS] +Infernus + +[BLISTA] +Blista + +[PONY] +Pony + +[MULE] +Muł + +[CHEETAH] +Cheetah + +[AMBULAN] +Karetka pogotowia + +[FBICAR] +Samochód FBI: + +[MOONBM] +Moonbeam + +[ESPERAN] +Esperanto + +[TAXI] +Taksówka + +[KURUMA] +KURUMA + +[BOBCAT] +Bobcat + +[WHOOPEE] +Pan Smakołyk + +[BFINJC] +Zastrzyk BF + +[POLICAR] +Policja + +[ENFORCR] +Enforcer + +[SECURI] +Konwojowóz + +[BANSHEE] +Demon + +[PREDATR] +Predator + +[BUS] +Autobus + +[RHINO] +Hipcio + +[BARRCKS] +Koszary OL + +[TRAIN] +Pociąg + +[HELI] +Helikopter + +[DODO] +Dodo + +[COACH] +Autokar + +[CABBIE] +Taksówka + +[STALION] +Ogier + +[RUMPO] +Rumpo + +[RCBANDT] +Bandziorek + +[BELLYUP] +Ciężarówka Triady + +[MRWONGS] +Mr Wongs + +[MAFIACR] +Sentinel mafii + +[YARDICR] +Lobo gangu Yardie + +[YAKUZCR] +Stinger gangu Yakuza + +[DIABLCR] +Ogier gangu Diablo + +[COLOMCR] +Krążownik Kartelu + +[HOODSCR] +Rumpo XL gangu Hoods + +[AEROPL] +Samolot + +[SPEEDER] +Speeder + +[REEFER] +Reefer + +[PANLANT] +Panlantic + +[FLATBED] +Flatbed + +[YANKEE] +Yankee + +[BORGNIN] +Borgnine + +[TOYZ] +ZABAWKI + +[FEST_DF] +Odległość przebyta pieszo (w milach) + +[FEST_DC] +Odległość przebyta samochodem (w milach) + +[FESTDFM] +Odległość przebyta pieszo (w metrach) + +[FESTDCM] +Odległość przebyta samochodem (w metrach) + +[FEST_R1] +Plac Zabaw Patriotów w sekundach + +[FEST_R2] +Przejażdżka w parku w sekundach + +[FEST_R3] +W Potrzasku! w sekundach + +[FEST_RM] +Koszmar Wielu Pięter w sekundach + +[FEST_LS] +Ludzie uratowani przez karetkę + +[FEST_CC] +Przestępcy zabici podczas misji patrolowych + +[FEST_FE] +Liczba ugaszonych pożarów + +[FEST_LF] +Najdłuższy lot dodo + +[FEST_BD] +Najlepszy czas rozbrojenia bomby + +[FEST_RP] +Wykonane rozwałki: + +[FEST_MP] +Wykonane misje + +[FEST_BB] +Szukaj Punktów + +[FEST_H0] +Najwięcej punktów kontrolnych + +[FEST_GC] +Łączna liczba pojazdów gangów: + +[FEST_H1] +Diabelska demolka + +[FEST_H2] +Mafijna masakra + +[FEST_H3] +Krwawe kasyno + +[FEST_H4] +Rumpo-rozróba + +[USJI1] +TEKST DŁUŻEJ NIEPOTRZEBNY + +[USJI2] +TEKST DŁUŻEJ NIEPOTRZEBNY + +[USJI3] +TEKST DŁUŻEJ NIEPOTRZEBNY + +[USJ] +PREMIA ZA NIETYPOWY SKOK! + +[SPRAY] +Wprowadź samochód do warsztatu lakierniczego, aby obniżyć swój ~h~poziom złek sławy~w~, ~h~naprawić~h~ oraz przemalować~w~ swój wóz. Koszt - ~h~$1000. + +[HM1_1] +~g~Załatw 20 Purpurowych Dziewiątek w 2 minuty 30 sekund. + +[KM1_8A] +Naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~aktywować bombę.~w~ Nie zapomnij oddalić się od miejsca eksplozji. + +[KM1_8D] +Naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~aktywować bombę.~w~ Nie zapomnij oddalić się od miejsca eksplozji. + +[KM1_12] +~g~Odwieź go do dojo, ale najpierw pozbądź się gliniarzy! + +[RATNG1] +Kieszonkowiec + +[RATNG2] +Mięśniak + +[RATNG3] +Łotr + +[RATNG4] +Hazardzista + +[RATNG5] +Zbir + +[RATNG6] +Kierowca + +[RATNG7] +Twardziel do wynajęcia + +[RATNG8] +Oszust + +[RATNG9] +Współpracownik + +[RATNG10] +Sprzątacz + +[RATNG11] +Zabójca + +[RATNG12] +Złota rączka + +[RATNG13] +Egzekutor + +[RATNG14] +Capo + +[RATNG15] +Szef + +[1010] +~r~Twój pojazd dachował + +[1011] +~r~Twój pojazd dachował + +[1012] +~r~Twój pojazd dachował + +[1013] +~r~Twój pojazd dachował + +[1014] +~r~Twój pojazd dachował + +[JM4_10] +Słuchaj, młody! Najpierw zawieź mnie do pralni w chińskiej dzielnicy. Mam małą sprawę do załatwienia. + +[JM4_11] +Praczki przestały płacić haracz za ochronę. + +[JM4_12] +Tylko uważaj na wóz, Joey dopiero poskładał ten szmelc. + +[JM4_13] +Więc bez żadnych numerów, OK? + +[KM4_11] +~g~Odwieź pieniądze do kasyna! + +[FEF_BR2] +Możesz przypomnieć sobie fabułę gry, czytając zebrane dotąd streszczenia celów misji. + +[TRAIN_1] +Stacja Kurowski + +[TRAIN_2] +Stacja Rothwell + +[TRAIN_3] +Stacja Baillie + +[SUBWAY1] +Portland Station + +[SUBWAY2] +Rockford Station + +[SUBWAY3] +Staunton South Station + +[SUBWAY4] +Shoreside Terminal + +[MEA4_2] +~r~Marty Chonks nie żyje! + +[SPRAY1] +Wprowadź samochód do warsztatu lakierniczego, aby obniżyć swój ~h~poziom złej sławy~w~, ~h~naprawić~h~ oraz przemalować~w~ swój wóz. Koszt - ~h~$1000~w~. Tym razem zrobimy to za darmo. + +[JM4_A] +Tak, wiem Toni, naprawdę nieźle ją sobie wychowałem. Aż mruczy z zadowolenia, kapujesz? + +[JM4_5] +Wpadnij później to damy im coś do prania - ich własne pokrwawione gacie! + +[AMMU_A] +Luigi mówił, że potrzebujesz gnata... + +[AMMU_B] +Joey wspominał, że potrzebna ci artyleria... + +[AMMU_C] +Idź na tył sklepu. Na podwórzu zostawiłem dla ciebie dziewiątkę. + +[AMMU_D] +Mam wszystko, co potrzeba do obrony własnego gospodarstwa domowego. + +[AMMU_E] +Chcesz jeszcze pozwolenie? + +[AMMU_F] +Nie musisz pokazywać dowodu, wyglądasz na wiarygodnego gościa. + +[DETON] +DETONACJA: + +[DRIVE_A] +Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w prawo - aby otworzyć ogień, naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~. + +[DRIVE_B] +Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w prawo - aby otworzyć ogień, naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~. + +[RECORD] +~g~NOWY REKORD! + +[NRECORD] +~r~NIE MA NOWEGO REKORDU! + +[RCHELP] +Naciśnij klawisz ~k~~PED_FIREWEAPON~ lub uderz zdalnie sterowanym samochodzikiem w koła pojazdu, aby spowodować eksplozję. + +[RCHELPA] +Naciśnij klawisz ~k~~PED_FIREWEAPON~ lub uderz zdalnie sterowanym samochodzikiem w koła pojazdu, aby spowodować eksplozję. + +[RC_1] +Masz 2 minuty, aby wysadzić tyle samochodów gangu Diablo, ile tylko się da! + +[RC_2] +Masz 2 minuty, aby wysadzić tyle samochodów mafii, ile tylko się da! + +[RC_3] +Masz 2 minuty, aby wysadzić tyle samochodów Yakuzy, ile tylko się da! + +[RC_4] +Masz 2 minuty, aby wysadzić tyle samochodów gangu Yardie, ile tylko się da! + +[RC_5] +Masz 2 minuty, aby wysadzić tyle samochodów gangu Hoods, ile tylko się da! + +[RC_6] +Masz 2 minuty, aby wysadzić tyle samochodów Kartelu, ile tylko się da! + +[RAMPAGE] +ROZWAŁKA!! + +[RAMP_P] +ROZWAŁKA WYKONANA! + +[RAMP_F] +ROZWAŁKA NIEUDANA! + +[PAGE_00] +. + +[PAGE_01] +Załatw ~1~ludzi z gangu Diablo w 120 sekund! + +[PAGE_02] +Zniszcz ~1~ pojazdów w ciągu 120 sekund! + +[PAGE_03] +Zabij ~1~ członków mafii w ciągu 120 sekund! + +[PAGE_04] +Zabij ~1~ członków Triady w ciągu 120 sekund! + +[PAGE_05] +Zabij ~1~ członków Triady w ciągu 120 sekund! + +[PAGE_06] +Zniszcz ~1~ pojazdów w ciągu 120 sekund! + +[PAGE_07] +Rozwal ~1~ łebków z gangu Yardie w ciągu 120 sekund! + +[PAGE_08] +Spal ~1~ członków Yakuzy w ciągu 120 sekund! + +[PAGE_09] +Zniszcz ~1~ pojazdów w ciągu 120 sekund! + +[PAGE_10] +Zniszcz ~1~ pojazdów w ciągu 120 sekund! + +[PAGE_11] +Skasuj ~1~ członków gangu Yardie w ciągu 120 sekund! + +[PAGE_12] +Podpal ~1~ członków Yakuzy w ciągu 120 sekund! + +[PAGE_13] +Wysadź w powietrze ~1~ członków gangu Yardie w ciągu 120 sekund! + +[PAGE_14] +Usmaż ~1~ Kolumbijczyków w ciągu 120 sekund. + +[PAGE_15] +Rozjedź ~1~ członków gangu Hoods w ciągu 120 sekund! + +[PAGE_16] +Zniszcz ~1~ pojazdów w ciągu 120 sekund! + +[PAGE_17] +Rozjedź samochodem ~1~ Kolumbijczyków w ciągu 120 sekund! + +[PAGE_18] +Rozjedź i zniszcz ~1~ pojazdów w ciągu 120 sekund! + +[PAGE_19] +Urwij ~1~ głów Kolumbijczyków w ciągu 120 sekund! + +[PAGE_20] +Obetnij głowy ~1~ członkom gangu Hoods w ciągu 120 sekund! + +[JM1_A] +Hej, umieram z nudów! Kiedy w końcu mnie przelecisz? + +[JM1_B] +Za chwileczkę, złotko! Muszę się zająć jedną drobną kwestią... + +[JM1_C] +Mam dla ciebie robótkę, kolego. + +[JM1_D] +Bracia Forelli od dawna wiszą mi kasę. Od zbyt dawna. + +[JM1_E] +Trzeba dać im lekcję szacunku. + +[JM1_F] +Buźka Forelli napycha właśnie swój bęben w Bistro w St. Marks, + +[JM1_G] +więc ukradnij jego samochód i zabierz go do warsztatu 8-Balla w Harwood. + +[JM1_H] +Znasz 8-Balla, nie? + +[JM1_I] +Kiedy 8-Ball założy w samochodzie ładunek, odprowadź furę na to samo miejsce, z którego ją wziąłeś. + +[JM1_J] +Potem usiądź w bezpiecznej odległości i podziwiaj fajerwerki. + +[JM1_K] +Tylko się pospiesz, grubas nie będzie przecież jadł cały dzień. + +[CAT2_A1] +Jazda, głupia dziwko! + +[CAT2_A] +Trzeba zadać sobie pytanie: czy przyjechałeś ratować Marię czy też żeby spotkać się ze mną? + +[CAT2_B] +Mam dla ciebie wiadomość: + +[CAT2_B2] +romans z tobą to był wyłącznie interes, za to zastrzelę cię dla przyjemności. + +[CAT2_C] +Jesteś muy peccino amigo! + +[CAT2_D] +Rzuć forsę. + +[CAT2_E] +Ostatnio byłeś bardzo pilnym uczniem! + +[CAT2_E2] +Ale nic się nie nauczyłeś. Mnie nie wolno ufać. + +[CAT2_E3] +Zabić tego idiotę. + +[CAT2_J] +Poderwij ten złom w powietrze! + +[HM5_1] +Yo, Ice mówił, że przyjdziesz. Teraz zasady: bierzemy tylko bejsbole - bez spluw i bez samochodów. + +[HM5_5] +To bitwa o honor, czaisz? + +[HELP14] +Aby podnieść broń, po prostu wejdź na nią. Nie możesz podnieść broni, jeżeli siedzisz w samochodzie. + +[CRUSH] +Zaparkuj w oznaczonym miejscu i wysiądź z pojazdu. Samochód zostanie zgnieciony. + +[DIAB2_B] +Gang brzydkich panów zagroził, że pozbawi mnie mojego gwiazdora, jeżeli nie odpalę im doli. + +[DIAB2_C] +Zatańczyli z niewłaściwym człowiekiem, amigo. + +[DIAB2_D] +Oni mają słabość do lodów. + +[DIAB2_E] +Odszukaj bombę, którą zostawiłem w Harwood, + +[DIAB2_F] +porwij jeden z samochodów sprzedających lody w całym mieście, + +[DIAB2_G] +a potem zwab tych idiotów reklamowym sygnałem lodziarza. + +[DIAB2_H] +Ukrywają się w magazynach przy Atlantic Quay. + +[DIAB3_A] +Jacyś niegrzeczni członkowie Triady ukradli wczoraj w nocy mój samochód, + +[DIAB3_B] +rozbili go i zostawili, aby się dopalił. + +[DIAB3_C] +W bagażniku miałem kilka wyjątkowo cennych pamiątek - + +[DIAB3_D] +prawdziwe rzadkie okazy, których nie da się niczym zastąpić, mój przyjacielu. + +[DIAB3_E] +Na granicy Chinatown ukryłem dla ciebie naprawdę potężną broń. + +[DIAB3_F] +Skorzystaj z niej i naucz wandali z Triady, co oznacza zasłużony gniew El Burro. + +[DIAB3_1] +ZABIJ 25 CZŁONKÓW TRIADY + +[DIAB4_A] +Jakiś marny złodziejaszek ukradł mi półciężarówkę z najnowszym wydaniem moich magazynów... Prosto z drukarni! + +[DIAB4_B] +Ale ten zaćpany idiota nie zamknął tylnych drzwi + +[DIAB4_C] +i teraz moja starannie opracowana literatura dla dorosłych, + +[DIAB4_D] +opatrzona wysmakowanymi zdjęciami, wala się po całym Liberty! + +[DIAB4_E] +Weź półciężarówkę i jedź śladem magazynów 'Donkey Daje Całemu Dallas' część 1, 2 i 3. + +[DIAB4_F] +Zbieraj wszystko, co znajdziesz. + +[DIAB4_G] +Kiedy dotrzesz po tropie do tego złodziejskiego ĆPUNA, załatw go! + +[DIAB4_H] +A potem zawieź moje książeczki z Donkey do Magazynów XXX w Dzielnicy Czerwonych Świateł. + +[DIAB4_1] +~g~Zabierz samochód na zaplecze Magazynów XXX. + +[HM1_E] +Pokaż tym zaćpanym siuśkom, na czym polega prawdziwa jazda samochodem. + +[HM1_H] +Usuń mi te 'Dziewiątki' z widoku! + +[HM2_A] +Te 'Dziewiątki' nadal nadeptują mi na odcisk. + +[HM2_B] +Szczeniaki załatwiły sobie samochody opancerzone i sprzedają PROCHY... + +[HM2_C] +...naszym niewinnym czarnym braciom. + +[HM2_D] +Zostawiłem dla ciebie samochód. + +[HM2_E] +W środku znajdziesz parę zabawek, które pomogą ci dać siuśkom nauczkę... + +[HM3_A] +Jakiś samobójca wsadził bombę do mojej gabloty. + +[HM3_B] +Jeżeli stracę tę furę, mogę pożegnać się z moją reputacją na ulicach. + +[HM3_C] +Weź mój wóz i zabierz go do warsztatu w St. Marks, brachu. + +[HM3_D] +Niech chłopaki się nim zajmą i rozbroją bombę. + +[HM3_E] +Zegar już odlicza czas, a bomba chyba jest uszkodzona. + +[HM3_F] +Wpadniesz w jedną dziurę za dużo i to cacko wyleci w powietrze. + +[HM3_G] +Na co jeszcze czekasz? + +[HM4_A] +Yo, na lotnisku im. Francisa właśnie roztrzaskał się samolot Banku Narodowego. + +[HM4_B] +Platyna wala się po całym pasie startowym. + +[HM4_C] +Załatw samochód i zgarnij tyle, ile tylko się da. + +[HM4_F] +Możesz wysypać platynę przy jednym z moich garaży. + +[HM4_G] +Platyna jest cholernie ciężka, więc nie zdziw się, kiedy przeciążysz gablotę i fura będzie się wlokła jak ślimak. + +[HM4_H] +Lepiej regularnie zrzucaj towar przy jakimś garażu. + +[HM5_A] +Z gangu 'Dziewiątek' zostały już tylko niedobitki... + +[HM5_B] +ale nadal chcą się pobawić. + +[HM5_C] +Zgodzili się na pojedynek twarzą w twarz. + +[HM5_D] +Ich banda przeciwko dwóm spośród nas, a raczej... + +[HM5_E] +przeciwko tobie i jeszcze komuś + +[HM5_F] +Poszedłbym z tobą, ale... + +[HM5_G] +jeszcze przez trzy miesiące mam wyrok w zawieszeniu i nie mogę rozrabiać, + +[HM5_H] +sam rozumiesz. + +[HM5_I] +Weźmiesz ze sobą mojego młodszego brata. + +[HM5_J] +On ci pokaże, gdzie jesteście umówieni. + +[MEA1_B] +Nazywam się Chonks, Marty Chonks. + +[MEA1_C] +Prowadzę Delikatesy Pod Psem, tuż za rogiem. + +[MEA1_D] +Mam kłopoty z kasą, ale kto ich dzisiaj nie ma? + +[MEA1_E] +Jestem umówiony z kierownikiem mojego banku. + +[MEA1_F] +Ten cwaniaczek cały czas podnosi odsetki mojego kredytu, żeby móc odkroić swoją działkę. + +[MEA1_G] +Weź mój samochód, jedź po niego i przywieź go tutaj. + +[MEA1_H] +Mam małą niespodziankę dla tego krwiopijcy!! + +[MEA2_A] +Wynająłem paru złodziejaszków, aby włamali się do mojego mieszkania + +[MEA2_C] +Te złodziejskie szumowiny grożą, że zakapują mnie w firmie ubezpieczeniowej, + +[MEA2_D] +jeżeli nie odpalę im doli. + +[MEA2_E] +To się po prostu w głowie nie mieści! + +[MEA2_F] +W fabryce zostawiłem samochód. + +[MEA2_G] +Skorzystaj z niego i zabierz złodziei z Dzielnicy Czerwonych Świateł. + +[MEA2_H] +Potem przywieź ich do fabryki. Tam wytłumaczę im mój punkt widzenia w tej sprawie. + +[MEA3_A] +Mój interes zbankrutuje, jeżeli szybko nie dostanę do rąk większej gotówki. + +[MEA3_B] +Moja żona ma sporą polisę ubezpieczeniową, a i tak przez całe życie tylko wyciągała ode mnie pieniądze. + +[MEA3_C] +Zostawiłem samochód w umówionym miejscu. + +[MEA3_D] +Jedź po moją żonę do pawilonu 'Klasyczny Manicure' i przywieź ją do fabryki. + +[MEA4_A] +Cholera, wpakowałem się w tarapaty! + +[MEA4_B] +Okazuje się, że moja żona romansowała z gościem, któremu wiszę pieniądze. + +[MEA4_C] +Jest mocno wkurzony i chce mi się zrewanżować! + +[MEA4_E] +on myśli, że chcę oddać mu kasę... + +[MEA4_F] +ale mnie się zdaje... + +[MEA4_G] +że do misek psów z Liberty jeszcze w tym miesiącu trafi kolejny rodzaj mięska! + +[WELCOME] +WITAMY W + +[HM1_2] +~g~Zdobądź samochód! Pamiętaj, że liczą się tylko kolesie rozjechani samochodem! + +[HELP8_B] +Naciśnij klawisz~h~ ~k~~PED_SNIPER_ZOOM_IN~~w~, aby ~h~przybliżyć ~w~widok przez lunetkę karabinu oraz klawisz~h~ ~k~~PED_SNIPER_ZOOM_OUT~~w~, aby ~h~oddalić~w~ widok. + +[LRQC_1] +Muszę, hm, porozmawiać z Asuką. + +[LRQC_2] +Może wyskoczysz na spacer po mieście? + +[LRQC_3] +Musisz znaleźć sobie jakąś kryjówkę. + +[LRQC_4] +W Belville jest magazyn, który powinien ci odpowiadać. + +[LRQC_5] +Kiedy będziesz gotowy, wróć do mojego apartamentu, + +[LRQC_6] +to pogadamy, co robić dalej. + +[JM6_5] +~g~Musisz załatwić pojazd, którym uciekniemy, idioto! + +[JM2_F] +Jeżeli potrzebujesz giwery, to idź na zaplecze Amu-Nacji naprzeciwko stacji metra. + +[LOVE4_7] +~g~Na Wyspie Staunton jest jakiś plac budowy, może to właśnie tam zabrali pakunek. + +[LOVE4_8] +~g~Aby otworzyć ten garaż, musisz mieć samochód. + +[TSCORE] +ZAROBEK: $~1~ + +[AM1_9] +~r~Salvatore uciekł z powrotem do klubu 'U Luigiego'! + +[AM1_6] +~g~Jeżeli będziesz kręcił się wokół klubu Luigiego, to mafia z pewnością cię wypatrzy! + +[TM2_3] +~g~To pułapka! Załatw ich!!! + +[FM4_1] +Tu mówi Maria. Ten samochód to pułapka! Spotkaj się ze mną na południowym końcu Mostu Callahan. + +[JM1_7] +~g~Zamknij drzwi samochodu! Mike może coś zwąchać! + +[KM5_1] +~g~DILER ROZJECHANY!!! + +[KM5_6] +~g~Musisz zamordować co najmniej 8 dilerów z gangu Yardie. + +[KM5_7] +~g~Zabijaj jak najszybciej! Kiedy sprzedadzą cały towar, pochowają się w swoich norach! + +[RM3_8] +~r~Ten samochód to tylko przynęta!! + +[LM3_8] +Cześć, jestem Joey. + +[LM3_9] +Luigi mówił, że można ci ufać, więc wpadnij później, + +[KM3_5] +~g~Naciśnij klakson, aby zacząć rozmowy. + +[LOVE7] +ZNIKNIĘCIE LOVE'A + +[LOVE2_5] +~g~Z Kenji'ego została już tylko kupa mięsa na twoje masce! Uciekaj z Newport i pozbądź się samochodu! + +[AS2_11] +~g~~1~ Z 9! + +[GARAGE1] +~g~Wysiądź z samochodu i wyjdź na zewnątrz. + +[KM3_11] +~g~Kartel został zaatakowany, a teczka nie została odzyskana. + +[KM3_12] +~g~Zabij wszystkich Kolumbijczyków, zniszcz pojazdy i odzyskaj teczkę. + +[KM3_13] +~g~Odwieź teczkę do kasyna. + +[RM5_6] +~g~Prawie go masz! Staranuj jego wóz swoim pojazdem albo rozwal materiałami wybuchowymi! + +[PBOAT_1] +Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby otworzyć ogień z działek na łodzi. + +[PBOAT_2] +Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby otworzyć ogień z działek na łodzi. + +[DIAB1_B] +Mówi El Burro z gangu Diablo. + +[DIAB1_D] +Jesteś nowy w Liberty, ale na ulicach już zaczyna być o tobie głośno. + +[DIAB1_E] +Organizuję dla rozrywki mały wyścig. Punkt startu znajduje się przy starej szkole w okolicach Mostu Callahan. + +[DIAB1_F] +Skołuj sobie gablotę. Wygrywa ten, kto pierwszy zaliczy wszystkie punkty na trasie. + +[HM2_1] +Użyj zdalnie sterowanych samochodzików, aby zniszczyć samochody opancerzone. Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby zdetonować ładunek. + +[HM2_1A] +Użyj zdalnie sterowanych samochodzików, aby zniszczyć samochody opancerzone. Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby zdetonować ładunek. + +[HM2_2] +~r~Nie udało ci się zniszczyć wszystkich samochodów opancerzonych! + +[HM2_6] +~g~Samochód opancerzony został zniszczony! + +[RM3_A] +Znam w tym mieście jednego bardzo ważnego faceta, prawdziwą grubą rybę, + +[RM3_H] +który słynie ze swych, jak to ująć, nietypowych upodobań i wielkiej fortuny, jaką na nie wydaje. + +[RM3_B] +Uwikłał się w proces sądowy, a prokuratura zdobyła kompromitujące go fotografie. + +[RM3_C] +Zrobili je na imprezie w kostnicy czy coś takiego. + +[LOVE6_A] +Przyjacielu, przyjmij ode mnie lekcję prowadzenia interesów. + +[LOVE6_E] +Jeżeli posiadasz przedmiot jedyny w swoim rodzaju, to dokładnie wszyscy, nawet ze swoimi żonami, będą się ze wszystkich sił starać ci go odebrać, + +[LOVE6_C] +Oddziały antyterrorystyczne otoczyły obszar, na którym znajduje się mój współpracownik wraz z pakunkiem. + +[LOVE6_D] +Jedź tam i weź ciężarówkę. Posłużysz jako przynęta. + +[LOVE6_F] +Odciągnij ich uwagę tak, aby mój przyjaciel mógł spokojnie opuścić to miejsce. + +[AM3_C] +Teraz najprawdopodobniej czyha na zatoce! Ukradnij łódź policyjną i raz na zawsze zakończ jego karierę! + +[FESZ_UC] +ANULUJ + +[FEDS_SM] +L1, R1 - ZMIANA MENU + +[FEDS_AS] +;= - ZMIANA WYBORU + +[FEDSAS2] +<> - ZMIANA WYBORU + +[FEDS_SS] +L1, R1 - ZMIANA WYBORU + +[FEDSSC1] +; - SZYBSZE PRZEWIJANIE + +[FEDSSC2] +Err:509 + +[MEA2_3] +~g~Odwieź samochód do fabryki. + +[RM1_3] +~r~McAffrey zwiał! + +[RM1_4] +~g~Zużyłeś wszystkie granaty! Wróć po nowy zapas do Amu-Nacji! + +[RM1_5] +~g~Wracaj i podpal ten dom! + +[RM6_4] +~g~Jedź do dziupli i zabierz rzeczy Raya. + +[RM6_5] +~g~CIA nieustannie obserwuje most, znajdź inną trasę. + +[HM2_F] +i sprzątnąć ich pancerny złom. + +[HM_4] +'W POGONI ZA KASĄ' + +[MEA2_B5] +TEKST JUŻ NIEPOTRZEBNY + +[MEA1_B5] +TEKST JUŻ NIEPOTRZEBNY + +[MEA3_B5] +TEKST JUŻ NIEPOTRZEBNY + +[MEA4_B7] +ale jeżeli zechcesz wpaść do mojego biura... + +[MEA3_B4] +Marty chce się ze mną widzieć? Lepiej niech się streszcza, bo muszę jeszcze zrobić sobie dzisiaj nową fryzurę. + +[KM3_7] +Ludzie, to pułapka Yakuzy! + +[FES_LOF] +Wczytywanie nieudane. + +[FES_SLO] +ZAPISZ PLIK + +[FES_ISC] +USZKODZONY + +[FESZ_TI] +ZAPISZ Z1 + +[FESZ_SA] +Zapis gry + +[MC_LDFL] +Wczytywanie nieudane! + +[MC_NWRE] +Trwa ponowne uruchamianie gry. + +[LOVE6_3] +~g~Masz ~1~ sekund na powrót do konwojowozu albo misja zakończy się porażką. + +[LOVE6_4] +~r~Straciłeś fałszywy konwojowóz! + +[HELP1] +Zatrzymaj się wewnątrz niebieskiego pola. + +[HELP12] +Stań na niebieskim polu, aby rozpocząć misję. + +[HJSTAT] +Odległość: ~1~,~1~m Wysokość:~1~,~1~m Salta: ~1~ Obroty: ~1~_ + +[HJSTATW] +Odległość: ~1~.~1~m Wysokość: ~1~.~1~m Salta: ~1~ Obroty: ~1~_ Plus doskonałe lądowanie! + +[DIAB1_5] +CZAS WYŚCIGU: + +[LOVE3_4] +~r~Zniszczyłeś samolot! + +[F_FAIL1] +Misja strażacka zakończona. + +[F_CANC] +~r~Misja strażacka anulowana! + +[F_EXTIN] +POŻARY: + +[A_COMP1] +Misja ratunkowa wykonana! + +[A_CANC] +~R~Misja ratunkowa anulowana! + +[A_COMP3] +Misja ratunkowa wykonana! Ty chyba nigdy się nie męczysz! + +[ATUTOR] +Wciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~~w~, aby włączyć lub wyłączyć misje ratunkowe. + +[ATUTOR3] +Wciśnij klawisz ~h~~k~~TOGGLE_SUBMISSIONS~~w~, aby włączyć lub wyłączyć misje ratunkowe. + +[ALEVEL] +Misja Ratunkowa, Poziom ~1~ + +[A_FAIL1] +Misja ratunkowa zakończona. + +[FEST_HA] +Najwyższy poziom misji ratunkowej + +[A_SAVES] +URATOWANI LUDZIE:~1~ + +[C_KILLS] +ZABICI PRZESTĘPCY: ~1~ + +[HM1_B] +Mam problem z paroma frajerami. + +[AM2_A] +Śmierć Salvatore to radosna wiadomość, + +[AM2_A2] +widać, że jesteś dobrym zabójcą. Lubię tę cechę u ludzi. + +[AM2_B] +To mój brat Kenji. + +[AM2_C] +Asuka ma dla ciebie małą robótkę. Kiedy skończysz, wpadnij do mojego kasyna, to pogadamy. + +[AM2_D] +Zupełnie jak Kenji, on też zawsze chce bawić się moimi zabawkami. + +[AM2_E] +Moja wtyczka w policji donosi, że Mafia obserwuje nasze lokale w całym mieście. + +[AM2_E2] +Prawdopodobnie usiłują cię wytropić. + +[AM2_F] +Dopóki nie załatwimy tej sprawy, nie możemy prowadzić zwykłej działalności. + +[AM2_G] +Załatw tych głupawych szpiegów i raz na zawsze zakończ tę wendettę. + +[F_START] +~g~W okolicach ~a~ zauważono płonący pojazd. Udaj się tam i ugaś pożar. + +[AM4_1A] +Odszukaj telefon na Park West Belleville. + +[AM4_1B] +Odszukaj telefon na kampusie Liberty. + +[AM4_1C] +Odszukaj telefon na Park South Belleville. + +[AM4_1D] +Spotkajmy się w parku przy toaletach. + +[HJSTATF] +Odległość: ~1~ stóp Wysokość: ~1~ stóp Salta: ~1~ Obroty: ~1~_ + +[HJSTAWF] +Odległość: ~1~.~1~ stóp Wysokość: ~1~.~1~ stóp Salta: ~1~ Obroty: ~1~_ Plus doskonałe lądowanie! + +[HM1_F] +Lepiej uważaj - na ulicach będą też ludzie z Jacks, którzy mogą uznać, że polujesz również na nich! + +[HM1_D] +Nazywają się 'Dziewiątki' i ubierają się na purpurowo. Każdy dzień, kiedy te leszcze obnoszą się ze swoim barwami, + +[HM1_G] +to dzień wstydu dla mojego gangu. + +[MEA2_B] +i ukradli parę rzeczy, co pozwoli mi wyciągnąć kasę z odszkodowania. + +[TM3_H] +~w~Dobrze się spisałeś, młody, naprawdę dobrze. + +[TM3_I] +~w~Chodź, Don chce cię poznać. + +[TM3_J] +~w~Heeeej, Luigi! + +[TM3_K] +~w~Moje dziewczynki tęsknią za tobą, Salvatore, dawno cię u nas nie było. + +[TM3_L] +~w~Przekaż im ode mnie, że kiedy załatwimy całą tę nieszczęsną sprawę, + +[TM3_M] +~w~razem pojedziemy do klubu i uczcimy zwycięstwo + +[TM3_N] +~w~Oto i mój chłopak. + +[TM3_N2] +~w~Jak się masz, tato? + +[TM3_O] +~w~Znalazłeś już sobie przyzwoitą kobietę? + +[TM3_P] +~w~Ech, twoja matka, wieczny odpoczynek racz jej dać Panie, przewraca się w grobie, + +[TM3_Q] +~w~bo jej syn jeszcze nie ma żony. + +[TM3_R] +~w~Wiem, tato. Pracuję nad tym. + +[TM3_S] +~w~TONI! Jak twoja Mamuśka? + +[TM3_T] +~w~To wspaniała kobieta. Silna. Firenze. + +[TM3_U] +~w~Mama ma się dobrze... Znakomicie. + +[TM3_V] +~w~Doskonale, doskonale. Posłuchajcie, panowie, rozgośćcie się w środku, a ja porozmawiam z naszym nowym przyjacielem. + +[TM3_W] +~w~Widzę przed tobą wielką przyszłość, chłopcze... + +[RM1_A] +Ta szuja McAffrey wziął więcej łapówek niż ktokolwiek inny. + +[RM1_B] +Teraz myśli, że zasłuży na wygodną emeryturę, jeżeli zakapuje nas policji. + +[RM1_C] +Właśnie nas wsypał! + +[RM4_B] +Trzeba go uciszyć raz na zawsze. + +[RM4_E] +Od jutra ma spać z rybami, a nie jadać je na kolację. + +[LOVE3_B] +Dziś w nocy mały samolot przeleci nad zatoką, podchodząc do lądowania. + +[LOVE4_D] +Niestety, władze lotniska przejęły samolot i zaczęły rozbierać go na części, + +[LOVE4_H] +dopóki nie rzuciłem na szalę całego swojego autorytetu. + +[LOVE4_E] +Przejedź przez most do Shoreside Vale i jedź na lotnisko im. Francisa. + +[GTAB_A] +Lepiej stąd znikajmy. Cholera wie, co to jest, + +[GTAB_B] +ale zdaje się, że temu facetowi bardzo na tym zależy, więc to z pewnością musi mieć jakąś wartość. + +[GTAB_C] +Co, u diabła! + +[GTAB_D] +TO TY! + +[GTAB_E] +Hej, spokojnie, amigo! De nada! De nada! + +[GTAB_F] +Kiedy ostatni raz cię widziałem, twoje truchło spływało do ścieków! + +[GTAB_G] +Nie strzelaj, amigo. Nie ma problemu. My przyjaciele. Proszę, weź to sobie. + +[GTAB_H] +Nie bądź taką ciotą! + +[GTAB_I] +Nie mamy wyboru, kotku! + +[GTAB_J] +Zawsze mamy wybór, tępaku! + +[GTAB_K] +Przepraszam za tę głupią sukę, one wszystkie są jednakowe... por favor? + +[GTAB_L] +Więc ta dziwka zwiała? + +[GTAB_M] +Ale zrobiłeś mi przysługę, + +[GTAB_N] +nie jesteś jedyną osobą, która ma rachunki do wyrównania z Kartelem. + +[GTAB_O] +Ten gnidy zabiły mi brata! + +[GTAB_P] +Nigdy nie zabiłem żadnego członka Yakuzy! + +[GTAB_Q] +KŁAMIESZ! Wszyscy widzieliśmy zabójcę z Kartelu. + +[GTAB_R] +Wytropimy i wytłuczemy was wszystkich, wy kolumbijskie kundle! + +[GTAB_S] +Pobawię się z twoim przyjacielem, aby wydobyć z niego jakieś informacje i troszkę się rozerwać. + +[GTAB_T] +Ej, wpadnij później, będe cię jeszcze potrzebował. + +[GTAB_U] +Proszę, amigo, nie zostawiaj mnie z nią! Ta chica to wariatka! Amigo? Hej, AMIGOOO!!!... Aaaaaa! + +[LOVE5_A] +Raz po raz dowodzisz, że warto w ciebie inwestować, a to rzadkość w dzisiejszych czasach kłamstwa i obłudy. + +[KM3_1] +~g~Kartel spodziewa się kolesia z Yardies, więc idź i ukradnij samochód gangu Yardie! Powinieneś znaleźć ich w Newport, na północy. + +[LOVE1_1] +~g~Podwędź samochód gangu kolumbijskiego, abyś mógł swobodnie przeniknąć do ich kryjówki. Samochód znajdziesz na północ stąd, w Fort Staunton. + +[FM1_Q1] +~w~Szukasz mocnych wrażeń? Może odrobinę... Hm? Odrobinę HEROINY? + +[FM1_R] +~w~Czołem, Chico. Nie, daj mi to, co zawsze. + +[FM1_T] +~w~Dzięki, Chico. Na razie! + +[FM1_W] +~w~W porządku, piesku! Posiedź tu i popilnuj samochodu, a ja wyskoczę i poruszam trochę tyłkiem. + +[FM1_X] +~w~OK, piesku! Znikajmy stąd. Hau hau! + +[FM1_Q] +~g~Cześć, Mario! Moja ulubiona klientka! + +[FM1_S1] +~w~Hej, może wpadniesz na imprezę w tej pustej hali magazynowej na wschodnim krańcu Atlantic Quays? + +[FM1_U] +~w~Gracias i życzę przyjemnych wrażeń. To niezły towar... + +[FM1_V] +~w~Jazda, piesku! Jedziemy zajrzeć na tę imprezę! + +[FM1_SS] +~r~NASŁUCH RADIOWY: ~g~Cztery-pięć do wszystkich jednostek: Zapewnić wsparcie akcji antynarkotykowej w Atlantic Quays... + +[LOVE6_B] +nawet jeżeli mają tylko blade pojęcie na temat jego rzeczywistej wartości. + +[TM3_A1] +~r~Joey się usmażył! + +[TM3_A2] +~r~Joey i Lugi spiekli się na węgiel! + +[TM3_A3] +~r~Joey, Luigi i Toni usmażeni! + +[FM4_2] +Posłuchaj, Salvatore podejrzewa, że kombinujemy coś za jego plecami, + +[FM4_3] +dlatego postanowił sprzedać cię Kartelowi. + +[FM4_4] +Nie mogę do tego dopuścić. Najgorsze w tym wszystkim jest to, + +[FM4_4B] +że to moja wina... To ja mu powiedziałam, że między nami coś jest... + +[FM4_5] +Nie pytaj mnie, po co. Sama nie wiem. + +[FM4_6] +Posłuchaj, na terytorium mafii jesteś poszukiwany, ja też chciałabym się stąd wyrwać. + +[FM4_6B] +Widziałam już za dużo śmierci, zbyt wiele krwi! + +[FM4_7] +Mam starą dobrą przyjaciółkę... Nazywa się Asuka. Możemy jej zaufać. + +[FM4_8] +Dobra, wystarczy już tych przemówień. + +[FM4_9] +Zbierajmy się stąd, zanim pojawią się tu całe wycieczki rozhisteryzowanych Włochów, którzy będą chcieli rozstrzygać z nami rodzinne zatargi. + +[CRED001] +ROCKSTAR STUDIOS + +[CRED002] +PRODUCENT + +[CRED003] +LESLIE BENZIES + +[CRED004] +KIEROWNIK ARTYSTYCZNY + +[CRED005] +AARON GARBUT + +[CRED006] +KIEROWNIK TECHNICZNY + +[CRED007] +OBBE VERMEIJ + +[CRED008] +ADAM FOWLER + +[CRED009] +PROJEKT + +[CRED010] +CRAIG FILSHIE + +[CRED011] +WILLIAM MILLS + +[CRED012] +CHRIS ROTHWELL + +[CRED013] +JAMES WORRALL + +[CRED014] +SCENARIUSZ + +[CRED015] +JAMES WORRALL + +[CRED016] +PAUL KUROWSKI + +[CRED017] +DAN HOUSER + +[CRED018] +POSTACI + +[CRED019] +IAN MCQUE + +[CRED020] +ANIMACJA & REŻYSERIA + +[CRED021] +ALEX HORTON + +[CRED022] +LEE MONTGOMERY + +[CRED023] +PROJEKTY POJAZDÓW + +[CRED024] +PAUL KUROWSKI + +[CRED025] +GRAFICY + +[CRED026] +KEIRAN BAILLIE + +[CRED027] +ADAM COCHRANE + +[CRED028] +GARY MCADAM + +[CRED029] +MICHAEL PIRSO + +[CRED030] +ANDREW SOOSAY + +[CRED031] +ALISDAIR WOOD + +[CRED032] +KODERZY + +[CRED033] +ALAN CAMPBELL + +[CRED034] +MARK HANLON + +[CRED035] +ANDRZEJ MADAJCZYK + +[CRED036] +ALEXANDER ROGER + +[CRED037] +GRAEME WILLIAMSON + +[CRED038] +MUZYKA + +[CRED039] +CRAIG CONNER + +[CRED040] +STUART ROSS + +[CRED041] +KONCEPCJA I MASTERING DŹWIĘKU + +[CRED042] +ALLAN WALKER + +[CRED043] +PROGRAMOWANIE AUDIO + +[CRED044] +RAYMOND USHER + +[CRED045] +KIEROWNIK TESTÓW + +[CRED046] +CRAIG ARBUTHNOTT + +[CRED047] +GŁÓWNI TESTERZY + +[CRED048] +ANDY DUTHIE + +[CRED049] +JOHN HAIME + +[CRED050] +NEIL CORBETT + +[CRD050A] +TESTERZY + +[CRED051] +GRAEME JENNINGS + +[CRED052] +DAVID MURDOCH + +[CRED053] +DAVID BEDDOES + +[CRED054] +EDWIN SMITH + +[CRED055] +MARK FLETT + +[CRED056] +MICHAEL SUTHERLAND + +[CRED057] +POMOC TECHNICZNA + +[CRED058] +LORRAINE ROY + +[CRED059] +CHRISTINE CHALMERS + +[CRED060] +ROCKSTAR + +[CRED061] +PRODUCENT WYKONAWCZY + +[CRED062] +SAM HOUSER + +[CRED063] +PRODUCENT + +[CRED064] +DAN HOUSER + +[CRED065] +DYREKTOR DS. ROZWOJU + +[CRED066] +JAMIE KING + +[CRED067] +PRODUCENT TECHNICZNY + +[CRED068] +GARY J. FOREMAN + +[CRED069] +PRODUCENT POMOCNICZY + +[CRED070] +JEREMY POPE + +[CRED071] +KOORDYNACJA MUZYCZNA + +[CRED072] +TERRY DONOVAN + +[CRED073] +ZESPÓŁ PRODUKCYJNY ROCKSTAR + +[CRED074] +TERRY DONOVAN + +[CRED075] +JENNIFER KOLBE + +[CRED076] +JENEFER GROSS + +[CRED077] +LAURA PATERSON + +[CRED078] +JEFF CASTANEDA + +[CRED079] +CHRIS CARRO + +[CRED080] +ADAM TEDMAN + +[CRED081] +JUNG KWAK + +[CRED082] +BRIAN WOOD + +[CRED083] +PAUL YEATES + +[CRED084] +STANTON SARJEANT + +[CRED085] +WICEPREZES DS. MARKETINGU + +[CRED086] +TERRY DONOVAN + +[CRED087] +KOORDYNACJA TECHNICZNA + +[CRED088] +BRANDON ROSE + +[CRED089] +KIEROWNIK DS. ZAPEWNIENIA JAKOŚCI + +[CRED090] +JEFF ROSA + +[CRED091] +GŁÓWNY ANALITYK + +[CRED092] +ADAM DAVIDSON + +[CRED093] +ANALITYK GRY + +[CRED094] +RICHARD HUIE + +[CRED095] +ZESPÓŁ TESTUJĄCY + +[CRED096] +LANCE WILLIAMS + +[CRED097] +JOE GREENE + +[CRED098] +BRIAN PLANER + +[CRED099] +OSWALD GREENE + +[CRED100] +REDAKCJA 'LIBERTY TREE' + +[CRED101] +JAMES WORRALL + +[CRED102] +DAN HOUSER + +[CRED103] +ADAM TEDMAN + +[CRED104] +PAUL YEATES + +[CRED105] +JENEFER GROSS + +[CRED106] +LAURA PATERSON + +[CRED107] +SEKWENCJE FILMOWE + +[CRED108] +SCENARIUSZ: DAN HOUSER I JAMES WORALL + +[CRED109] +REŻYSERIA DŹWIĘKU: DAN HOUSER + +[CRED110] +PRODUKCJA DŹWIĘKU: RENAUD SEBBANE + +[CRED111] +OBSADA + +[CRED112] +FRANK VINCENT JAKO SALVATORE LEONE + +[CRED113] +JOE PANTOLIANO JAKO LUIGI GOTERELLI + +[CRED114] +MICHAEL MADSEN JAKO TONI CIPRIANI + +[CRED115] +MICHAEL RAPAPORT JAKO JOEY LEONE + +[CRED116] +DEBBI MAZAR JAKO MARIA + +[CRED117] +KYLE MACLACHLAN JAKO DONALD LOVE + +[CRED118] +ROBERT LOGGIA JAKO RAY MACHOWSKI + +[CRED119] +GURU JAKO 8-BALL + +[CRED120] +SONDRA JAMES JAKO MAMUŚKA + +[CRED121] +LIANA PAI JAKO ASUKA + +[CRED122] +LES MAU JAKO KENJI + +[CRED123] +CYNTHIA FARRELL JAKO CATALINA + +[CRED124] +AL. ESPINOSA JAKO MIGUEL + +[CRED125] +CHRIS PHILLIPS JAKO EL BURRO + +[CRED126] +HUNTER PLATIN JAKO CHICO + +[CRED127] +WALTER MUDU JAKO D-ICE + +[CRED128] +CURTIS MCCLARIN JAKO CURTLY + +[CRED129] +BILL FIORE JAKO DARKEL + +[CRED130] +CHRIS PHILLIPS JAKO MARTY CHONKS + +[CRED131] +HUNTER PLATIN JAKO KUDŁATY BOB + +[CRED132] +WALTER MUDU JAKO KING COURTNEY + +[CRED133] +HUNTER PLATIN JAKO JEDNORĘKI PHIL + +[CRED134] +KIM GURNEY JAKO MISTY + +[CRED135] +MOTION CAPTURE + +[CRED136] +ANIMACJA + +[CRD136A] +ALEX HORTON + +[CRED137] +REŻYSERIA + +[CRD137A] +NAVID KHONSARI + +[CRED138] +PRODUKCJA + +[CRD138A] +JAMIE KING + +[CRD138B] +RENAUD SEBBANE + +[CRED139] +NAGRANIA PRZEPROWADZONO W MODERN UPRISINGS STUDIOS, BROOKLYN + +[CRED140] +AKTORZY + +[CRD140A] +MARTINEZ + +[CRD140B] +GISELLE JONES + +[CRD140C] +STEPHEN DANIELS + +[CRD140D] +ROBERT STIO + +[CRD140E] +JENNY GROSS. + +[CRED141] +DIALOGI PRZECHODNIÓW + +[CRED142] +TEKST: DAN HOUSER, NAVID KHONSARI I JAMES WORALL + +[CRED143] +REŻYSERIA: CRAIG CONNER, DAN HOUSER I LAZLOW + +[CRED144] +PRODUKCJA: RENAUD SEBBANE + +[CRED145] +OBSADA + +[CRED146] +HUNTER PLATIN + +[CRED147] +DAN HOUSER + +[CRED148] +RENAUD SEBBANE + +[CRED149] +MARIA CHAMBERS + +[CRED150] +JEFF STANTON + +[CRED151] +RYAN CROY + +[CRED152] +DEENA BERMAN + +[CRED153] +MARIA CHAMBERS + +[CRED154] +ALICE B. SALTZMAN + +[CRED155] +ALEX ANTHONY SIOUKAS + +[CRED156] +SEAN R. LYNCH + +[CRED157] +AMY SALZMAN + +[CRED158] +COLIN MCSHANE + +[CRED159] +COREY WADE + +[CRED160] +GERALD COSGROVE + +[CRED161] +STEPHANIE ROY + +[CRED162] +DORIS WOO + +[CRED163] +JOSEPH GREENE + +[CRED164] +LAZLOW JONES + +[CRED165] +HSIANG LIN + +[CRED166] +STEVE MICHAEL ROBERT + +[CRED167] +MATHEW MURRAY + +[CRED168] +RICHARD HUIE + +[CRED169] +GARVIN ATWELL + +[CRED170] +STEVE KNEZEVICH + +[CRED171] +YUKIMURA SATO + +[CRED172] +FRANK CHAVEZ + +[CRED173] +LIEZL JACINTO + +[CRED174] +CANAAN MCKOY + +[CRED175] +ADAM DAVIDSON + +[CRED176] +LANCE WILLIAMS + +[CRED177] +NEIL MCCAFFREY + +[CRED178] +LAURA PATERSON + +[CRED179] +REY CONCEPCION + +[CRED180] +CHARLES HEROLD + +[CRED181] +ANDREW GREENWALD + +[CRED182] +JAMES MIELKE + +[CRED183] +PETER SUCIU + +[CRED184] +ALEX ODULIO + +[CRED185] +DON NKRUMAH + +[CRED186] +KENDALL PITTMAN + +[CRED187] +SAL SUAZO + +[CRED188] +EREK MATEO + +[CRED189] +CHRIS DIFATE + +[CRED190] +LEILA MILTON + +[CRED191] +DARREN ZOLTOWSKI + +[CRED192] +VIRGINIA SMITH + +[CRED193] +KEVIN CASSIN + +[CRED194] +JASON SHIGEMORI + +[CRED195] +KELLY KINSELLA + +[CRED196] +MOLLIE STICKNEY + +[CRED197] +STANTON SARJEANT + +[CRED198] +LAURA WALSH + +[CRED199] +MARK GARONE + +[CRED200] +JOANNA SLY + +[CRED201] +ELIZABETH HOWELL + +[CRED202] +ANA HERCULES + +[CRED203] +SHIRLEY IRICK + +[CRED204] +KASHONA FIELDS + +[CRED205] +JOEL M. LILJE + +[CRED206] +JOHN DIBENEDETTO + +[CRED207] +NANCY GILES + +[CRED208] +RYAN CROY + +[CRED209] +JENNIFER KOLBE + +[CRED210] +LIAM BURKE + +[CRED211] +SIGRID PREISSL + +[CRED212] +ANITA FITZSIMONS + +[CRED213] +PHILIPPA RASELLI + +[CRED214] +WIL QUESNEL + +[CRED215] +FALKO BURKERT + +[CRED216] +SARA SEWELL + +[CRED217] +STACJE RADIOWE ORAZ MUZYKA + +[CRED218] +PRODUKCJA DLA ROCKSTAR UK + +[CRD218A] +CRAIG CONNER + +[CRD218B] +STUART ROSS + +[CRED219] +KOORDYNATOR ŚCIEŻKI DŹWIĘKOWEJ + +[CRED220] +TERRY DONOVAN + +[CRED221] +PRODUKCJA DLA ROCKSTAR GAMES + +[CRED222] +DAN HOUSER + +[CRED223] +REDAKCJA + +[CRED224] +CRAIG CONNER + +[CRED225] +ALLAN WALKER + +[CRED226] +LAZLOW + +[CRED227] +TEKSTY I WIZERUNKI PREZENTERÓW: + +[CRED228] +DAN HOUSER + +[CRED229] +LAZLOW + +[CRED230] +SPECJALNE PODZIĘKOWANIA DLA: + +[CRED231] +ADAM TEDMAN + +[CRED232] +ALEX MASON + +[CRED233] +JUDY HENDERSON CASTING + +[CRED234] +HAMISH BROWN + +[CRED235] +CHRISSY HOBAN + +[CRED236] +INNES RICARD + +[CRED237] +LILION BROZSKA + +[CRED238] +BOB HILLARY + +[CRED239] +EMILY ANDERSON + +[CRED240] +RICHIE HENDERSON + +[CRED241] +CHRSTIAN CANTAMESSA + +[CRED242] +JERONIMO BARRERA + +[CRED243] +ALEXANDER ILLES + +[CRED244] +BARANE CHAN + +[CRED245] +DUNCAN SHIELDS + +[CRED246] +BARANE CHAN + +[CRED247] +DEREK PAYNE + +[CRED248] +KEVIN WONG + +[CRED249] +ROSS ELLIOTT + +[CRED250] +ROSS BEAZLEY + +[CRED251] +ALEX BAZLINTON + +[CRED252] +DAVE WATSON + +[CRED253] +MALCOLM SMITH + +[CRED255] +ANDREW SEMPLE + +[CRED256] +ARTYŚCI + +[CRED257] +STUART PETRI + +[CRED258] +JERONIMO BARRERA + +[CRED259] +CARLY SLATER + +[CRED260] +GREG LAU + +[CRED261] +STEVE KNEZEVICH + +[CRED262] +DEVIN WINTERBOTTOM + +[CRED263] +JAMEEL VEGA + +[CRED264] +LEE CUMMINGS + +[CRED265] +DEVIN BENNET + +[CRED266] +ELIZABETH SATTERWHITE + +[CRED267] +AARON RIGBY + +[CRED268] +STEVE K. + +[CRED269] +GREG LAU + +[CRED270] +MIKE HONG + +[CINCAM] +Kamera Filmowa + +[KM1_13] +Wprowadź samochód do garażu! + +[KM3_14] +~r~Zostałeś zauważony, układ odwołany! + +[EBAL_H] +Poczekaj tutaj, brachu, a ja pójdę do środka i pogadam z Luigim. + +[EBAL_M] +Tylko pamiętaj - nic nie kombinuj z moimi dziewczynami! + +[LM2_F] +Potem zabierz jego samochód i przemaluj go. + +[LM2_D] +proszę bardzo. + +[LM1_9] +Cześć, jestem Misty... + +[LM4_A] +Jakaś gnida z gangu Diablo nasyła swoje brudne dziwki na moje terytorium. + +[FM2_B] +Mamy kreta! + +[FM2_C] +Żaden z niego alfons czy diler, więc pewnie dorabia na boku sprzedając informacje. + +[FM3_CC] +~w~Bracie, wróć, kiedy będziesz miał pieniądze. + +[FEDS_AM] +<> - ZMIANA MENU + +[LOVE5_5] +~r~Nie udało cię się ochronić ciężarówki! + +[RM6_6] +~r~Ray nie żyje! + +[RM6_7] +~r~Ray spóźnił się na samolot. + +[RM6_8] +~r~Zgubiłeś Raya, wracaj po niego. + +[FM1_10] +~g~Zostawiłeś Marię - zawróć i ją zabierz. + +[LOVE4_9] +~r~Samolot został zniszczony! + +[LOV4_10] +~r~Jedyny ślad, który wskazywał, gdzie zniknęła paczka, został zniszczony! + +[KM2_D] +Nie muszę chyba dodawać, że przekażę mu te samochody w darze, aby spłacić dług, który u niego zaciągnąłem. + +[KM4_B] +Interes idzie na tyle dobrze, że dziś możemy odebrać należną nam opłatę za ochronę. + +[KM2_E] +Zdobądź samochody z tej listy i dostarcz je do warsztatu za parkingiem w Newport. + +[FM3_8I] +~w~Znajdź dobre stanowisko strzeleckie. Kiedy oddasz pierwszy strzał, ja zrobię to, co do mnie należy. + +[LOVE1_B] +Doświadczenie uczy mnie, że ludzie tacy jak ty potrafią być niezwykle lojalni za odpowiednią cenę. + +[LOVE1_H] +ale niektórzy ludzie robią się coraz bardziej chciwi. + +[LOVE1_C] +Znam pewnego starszego pana, pochodzącego z krajów Orientu, który jest dla mnie niezwykle cenny. + +[LOVE1_I] +Niestety został on porwany przez jakiś gang z Ameryki Południowej w okolicach Aspatrii. + +[MEA4_D] +Zgodziłem się z nim spotkać... + +[MEA4_B4] +Marty cię przysyła, co? W porząsiu, pokażę tej gliście, jak się robi interesy. + +[MEA4_B5] +Carl, cześć! Ee, potrzebuję jeszcze trochę czasu, żeby zebrać dla ciebie pieniądze. + +[MEA1_B4] +Ach, przysłał cię Chonks, prawda? Chodźmy odwiedzić naszego wspólnego przyjaciela. + +[HM5_6] +Trzeba rozłupać parę łbów... + +[LOVE1_5] +~g~Przestań się obijać, załatw samochód Kolumbijczyków i uratuj przyjaciela Love'a. + +[AS1_D] +~w~Posłuzysz jako przynęta i ściągniesz szwadrony śmierci za sobą do Pike Creek, + +[AS1_E] +~w~gdzie moi ludzie urzadzą im właściwe przyjęcie. + +[AS2_C] +~w~Kartel działa pod przykrywką firmy Dom Kawy Kappa. + +[AS2_E] +~w~Nie mamy wyjścia, trzeba wyłączyć z gry te punkty sprzedaży dragów. + +[AS2_F] +~w~Rozwal je w drzazgi!! + +[AS2_A1] +~w~Miguel to doskonały przykład słynnej latynoskiej odporności. + +[AS2_A2] +~w~Ręce opadają mi ze zmęczenia. + +[SIREN_3] +Aby włączyc syrenę pojazdu, naciśnij klawisz ~h~~k~~VEHICLE_HORN~ ~w~. + +[SIREN_4] +Aby włączyc syrenę pojazdu, naciśnij klawisz ~h~~k~~VEHICLE_HORN~ ~w~. + +[AS3_C] +~w~Eeej! Co to za lepkie żółte świństwo? + +[AS3_C1] +~w~O, cześć, kochanie. + +[AS3_F] +~w~Ta dziewczyna po prostu ma talent. + +[AS3_F1] +~w~Udało jej się wydobyć z naszego gościa ten oto klejnocik. + +[AS3_G] +~w~Za 2 godziny na Lotnisko Francisa przyleci pewien samolot. + +[AS3_G1] +~w~Jest on wyładowany trucizną Cataliny. + +[AS3_H] +~w~Możesz ominąć lotniskowe służby bezpieczeństwa, jeżeli popłyniesz łodzią + +[AS3_H1] +do boi wyznaczających lądowisko i zestrzelisz lądujący samolot. + +[AS3_I] +~w~Zabierz z wraku ładunek! + +[AS3_J] +~w~Tylko bądź ostrożny, dobrze, kochanie? + +[AS3_K] +~w~A teraz spróbujemy olejku chilli... + +[RM2_F1] +Kolumbijczycy będą tutaj lada chwila! + +[RM2_K] +Cholera, już tu są! OGNIA! + +[LOVE2_7] +~g~Teraz pozbądź się samochodu!v + +[LOVE2_8] +~g~Uciekaj z Newport! + +[AM1_F] +Za około trzy godziny (~1~:~1~), Salvatore Leone będzie wychodził z klubu 'U Luigiego'. + +[LOVE5_C] +Masz za nim jechać i pilnować, aby zarówno on, jak i mój pakunek dotarli do Pike Creek bez szwanku. + +[FESZ_SR] +Zapisywanie zakończone niepowodzeniem! Sprawdź kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 i ponów próbę. + +[FESZ_FO] +Czy chcesz sformatować kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1? + +[FELZ_FO] +Karta pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 nie jest sformatowana. + +[FES_NOC] +Brak karty pamięci (PS2) w gnieździe KART PAMIĘCI nr 1. + +[FES_LOE] +Wczytywanie zakończone niepowodzeniem! Sprawdź kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 i ponów próbę. + +[FES_DEE] +Kasowanie zakończone niepowodzeniem! Sprawdź kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 i ponów próbę. + +[SLONFM] +Błąd podczas formatowania karty pamięci (PS2) w gnieździe KART PAMIĘCI nr 1. + +[SLONDR] +Niewystarczająca ilość miejsca, aby zapisać stan gry. Proszę włożyć kartę pamięci (PS2) zawierającą co najmniej 500KB wolnego miejsca do gniazda KART PAMIĘCI nr 1. + +[SLNSP] +Niewystarczająca ilość miejsca, aby zapisać stan gry. Proszę włożyć kartę pamięci (PS2) zawierającą co najmniej 200KB wolnego miejsca do gniazda KART PAMIĘCI nr 1. + +[FEFD_WR] +Trwa formatowanie karty pamięci (PS2) w gnieździe KART PAMIĘCI nr 1. Proszę nie wyjmować karty pamięci (PS2), nie resetować ani nie wyłączać konsoli + +[FES_ISF] +NIEOBECNY + +[FES_SAG] +OBECNY + +[SLONNO] +No Memory Card (PS2) in MEMORY CARD slot 1. + +[SLONNF] +Brak karty pamięci (PS2) w gnieździe KART PAMIĘCI nr 1. + +[FESZ_FM] +Karta pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 nie jest sformatowana. Czy chcesz sformatować kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1? + +[FESZ_FF] +Formatowanie zakończone niepowodzeniem! Sprawdź kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 i ponów próbę. + +[MCDNSP] +Na karcie pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 jest zbyt mało wolnego miejsca. Aby zapisać dane aplikacji wymagane jest co najmniej 500KB. Czy chcesz kontynuować? (TAK lub NIE) + +[MCGNSP] +Na karcie pamięci (PS2) w gnieździe KART PAMIĘCI nr 1 jest zbyt mało wolnego miejsca. Aby zapisać dane aplikacji wymagane jest co najmniej 200KB. Czy chcesz kontynuować? (TAK lub NIE) + +[FESZ_WR] +Trwa zapisywanie danych. Proszę nie wyjmować karty pamięci (PS2) z gniazda KART PAMIĘCI nr 1, nie resetować ani nie wyłączać konsoli. + +[FESZ_OW] +Trwa nadpisywanie danych. Proszę nie wyjmować karty pamięci (PS2) z gniazda KART PAMIĘCI nr 1, nie resetować ani nie wyłączać konsoli. + +[FELD_WR] +Trwa wczytywanie danych. Proszę nie wyjmować karty pamięci (PS2), nie resetować ani nie wyłączać konsoli. + +[FEDL_WR] +Trwa usuwanie danych. Proszę nie wyjmować karty pamięci (PS2) z gniazda KART PAMIĘCI nr 1, nie resetować ani nie wyłączać konsoli. + +[LM2_C] +Luigi kazał ci to przekazać, więc... + +[LM3_G] +Joey nie lubi czekać. Pamiętaj, to może być twoja szansa na karierę... + +[LM5_E] +Zawieź tam jak najwięcej dziewczyn, zanim gliniarze przepiją wszystkie pieniądze! + +[JM5_C] +Jest taka kwestia: przy kawiarni w Callahan Point stoi samochód z truposzem w środku. + +[RM2_B] +Powąchaliśmy razem prochu w Nikaragui, kiedy w tym kraju jeszcze rządzili ludzie, którzy wiedzieli, o co chodzi. + +[RM2_C] +Wczoraj groziły mu jakieś mendy z Kartelu. Powiedzieli, że wrócą i zabiorą mu towar. + +[RM2_D1] +Poszedłbym sam, ale moje korzonki znowu się odzywają - więc, ee... Powodzenia! + +[CATINF1] +~g~Dorwij Catalinę! + +[CATINF2] +~g~Śledź helikopter, aby odszukać Catalinę. + +[BOATIN1] +Wskakuj do łodzi i wciśnij klawisz ~h~~k~~VEHICLE_ENTER_EXIT~ button ~w~, aby zająć miejsce. + +[BOATIN2] +Jeżeli jesteś w pobliżu łodzi, możesz wcisnąć klawisz ~h~~k~~VEHICLE_ENTER_EXIT~~w~, aby zająć w niej miejsce. + +[BOATIN3] +Wskakuj do łodzi i wciśnij klawisz ~h~~k~~VEHICLE_ENTER_EXIT~ button ~w~, aby zająć miejsce. + +[BOATIN4] +Jeżeli jesteś w pobliżu łodzi, możesz wcisnąć klawisz ~h~~k~~VEHICLE_ENTER_EXIT~~w~, aby zająć w niej miejsce. + +[JM6] +'UCIECZKA' + +[FM1] +'NIAŃKA' + +[JM1] +'OSTATNI OBIAD MIKE'A BUŹKI' + +[FM21] +'CIOS W SERCE: AKT I' + +[FM3] +'CIOS W SERCE: AKT II' + +[AM1] +'SAYONARA SALVATORE' + +[AM2] +'POD OBSERWACJĄ' + +[KM2] +'GRAND THEFT AUTO' + +[AS3] +'WYRZUTNIA ZIEMIA-POWIETRZE' + +[RM2] +'TOWARZYSZE BRONI' + +[LOVE6] +'ZMYŁKA' + +[LOVE1] +'WYZWOLICIEL' + +[RC1] +'DIABELSKA DEMOLKA' + +[RC2] +'MAFIJNA MASAKRA' + +[RC3] +'KRWAWE KASYNO' + +[RC4] +'RUMPO-ROZRÓBA' + +[RM2_E1] +Nie mogę uwierzyć, że te żółte pokraki znowu zostawiły mnie bez ochrony. + +[GREN_1] +Im dłużej przytrzymasz klawisz ~h~~k~~PED_FIREWEAPON~~w~, tym dalej rzucisz granatem. + +[GREN_2] +Im dłużej przytrzymasz klawisz ~h~~k~~PED_FIREWEAPON~~w~, tym dalej rzucisz granatem. + +[GREN_3] +Im dłużej przytrzymasz klawisz ~h~~k~~PED_FIREWEAPON~~w~, tym dalej rzucisz granatem. + +[LOVE4_G] +Rzecz, która do mnie należy, będzie czekać na ciebie w hangarze celnym przy kadłubie samolotu. + +[KABOOM] +BUM! + +[SPLAT] +PLASK! + +[PANCAK] +UPIECZONY! + +[SOAKED] +DO SUCHEJ NITKI! + +[HEAD] +Head Radio + +[DBL_CLF] +Double Clef FM + +[FLASHB] +Flashback FM + +[RISE] +Rise FM + +[LIPS] +Lips 106 + +[CHAT] +Gaduła FM + +[K_JAH] +Radio K-Jah + +[GAM_FM] +Game Radio FM + +[MSX_FM] +MSX FM + +[TUBE1] +Kiedy metro zostanie otwarte, będziesz mógł przejechać pociągiem na Wyspę Staunton. + +[TUBE2] +Kiedy Shoreside Vale zostanie otwarte, będziesz mógł dotrzeć do stacji końcowej Shoreside Terminal i na Lotnisko Międzynarodowe im. Francisa. + +[TUBE_2] +Aby wsiąść do metra, naciśnij klawisz ~h~'wsiadania do pojazdu'~w~. + +[LEGAL] +~g~Wyeliminuj element przestępczy! + +[GA_2] +Nowy silnik i lakier. Masz spokój z gliniarzami! + +[LM1_8A] +Jeżeli chcesz trochę sobie dorobić, możesz spróbować 'pożyczyć' taksówkę... + +[TAXIH1] +Zatrzymaj się w pobliżu podświetlonego przechodnia i pozwól mu wsiąść, a potem zawieź go pod wskazany adres przed upływem wyznaczonego czasu. + +[LM5_7] +~g~Jeżeli na ~p~Balu Policjanta~g~ pojawią się mniej niż cztery dziewczyny, Luigi będzie niezadowolony! + +[KM2_3] +~g~Pamiętaj, ~r~samochody~g~ muszą być w idealnym stanie albo nie zostaną przyjęte w ~p~warsztacie~g~. + +[KM5_2] +~g~Yardies zniknęli z ulic. + +[BETRA_A] +Przykro mi, kotku. + +[BETRA_B] +Jestem ambitną dziewczyną, + +[BETRA_C] +a ty jesteś tylko małą płotką. + +[JAILB_C] +* + +[JAILB_D] +* + +[JAILB_E] +* + +[JAILB_F] +* + +[JAILB_G] +* + +[JAILB_H] +* + +[JAILB_I] +* + +[JAILB_J] +* + +[JAILB_P] +* + +[JAILB_Q] +Jazda! + +[JAILB_R] +Panie frajerze! + +[JAILB_S] +Zabiję cię bez najmniejszego problemu. + +[JAILB_T] +Pożałujesz tego. + +[JAILB_U] +Dobrze, dobrze! Znikaj stąd. + +[HELP15] +Jeżeli jesteś poza pojazdem i chcesz ~h~spojrzeć za siebie~w~, naciśnij klawisz ~h~~k~~PED_LOOKBEHIND~~w~. + +[FEC_LB3] +Spójrz do tyłu + +[FEC_R3] +(klawisz R3) + +[FES_AFO] +Ta karta pamięci (PS2) jest już sformatowana. + +[FEA_UP] +; + +[FEA_DO] += + +[FEA_LE] +< + +[FEA_RI] +> + +[FEDSAS3] +- ZMIANA WYBORU + +[FEDSAS4] +;=<> - ZMIANA WYBORU + +[SPRAY_4] +Użyj klawisza ~h~~k~~PED_FIREWEAPON~~w~, aby strzelać z armatki wodnej. + +[SPRAY_1] +Użyj klawisza ~h~~k~~PED_FIREWEAPON~~w~, aby strzelać z armatki wodnej. + +[LITTLE] +MAŁY T + +[NICK] +NICK LOVE + +[AM1_10] +~g~Salvatore opuści knajpę 'U Luigiego' około 0~1~:~1~ + +[JAILB_V] +* + +[JAILB_A] +* + +[JAILB_B] +* + +[JAILB_W] +* + +[JAILB_K] +* + +[JAILB_L] +* + +[JAILB_M] +* + +[JAILB_N] +* + +[JAILB_O] +* + +[JAILB_X] +* + +[FEDS_SE] +klawisz / - WYBIERZ + +[FEDS_SB] +klawisz / - WYBIERZ klawisz ' - WSTECZ + +[TM4_A] +~w~Ach, to ty. TONIEGO nie ma. + +[TM4_A2] +~w~Ale zostawił na stole jeden ze swoich słodziutkich listów miłosnych do ciebie. + +[DIAB2_A] +Kiedy zaczynałem robić interesy w branży rozrywek egzotycznych, nie miałem nic oprócz pokaźnej zawartości mojego rozporka! + +[LM5_9] +DZIEWCZYNY: + +[PERPIC] +Znalezione ukryte paczki + +[CO_ONE] +Ukryta Paczka ~1~ z ~1~ + +[LOVE3_3] +~g~Samolot zrzucił ~1~ z 6 pakunków. + +[FARE11] +~g~Cel podróży ~w~'Teren budowy'~g~ w Fort Staunton. + +[GA_21] +W tym garażu nie możesz przechowywać więcej samochodów. + +[CHEAT1] +Ułatwienie uaktywnione + +[CHEAT2] +Ułatwienie - broń + +[CHEAT3] +Ułatwienie - życie + +[CHEAT4] +Ułatwienie - pancerz + +[CHEAT5] +Ułatwienie - poziom wanted + +[CHEAT6] +Ułatwienie - pieniądze + +[CHEAT7] +Ułatwienie - pogoda + +[AS1_H] +~w~Nie udało ci się wprowadzić Szwadronu Śmierci w pułapkę Yakuzy!! + +[FEDS_BA] +klawisz ' - WSTECZ + +[RAMP_A] +WSZYSTKIE ROZWAŁKI ZALICZONE! + +[USJ_ALL] +WSZYSTKIE NIETYPOWE SKOKI WYKONANE! + +[FARE23] +~g~Cel podróży ~w~'warsztat importowo-eksportowy'~g~ w okolicach Tamy Cochrane. + +[L_TRN_1] +Po Portland możesz się też poruszać kolejką. Naciśnij klawisz ~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, aby ~h~wsiąść ~w~lub ~h~wysiąść~w~ z pociągu. + +[L_TRN_2] +Po Portland możesz się też poruszać kolejką. Naciśnij klawisz ~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, aby ~h~wsiąść ~w~lub ~h~wysiąść~w~ z pociągu. + +[S_TRN_1] +Przez Liberty możesz także podróżować metrem. Naciśnij klawisz~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, aby ~h~wsiąść ~w~lub ~h~wysiąść~w~ z pociągu. + +[S_TRN_2] +Przez Liberty możesz także podróżować metrem. Naciśnij klawisz~h~ ~k~~VEHICLE_ENTER_EXIT~~w~, aby ~h~wsiąść ~w~lub ~h~wysiąść~w~ z pociągu. + +[AS1_C] +~w~Rozmieściła w całym Liberty trzy szwadrony śmierci, których zadaniem jest wytropić twój tyłek. + +[AS1_G] +~w~Wszyscy członkowie Yakuzy nie żyją!! + +[JAN] +stycz. + +[FEB] +luty + +[MAR] +marzec + +[APR] +kwiec. + +[MAY] +maj + +[JUN] +czerw. + +[JUL] +lip. + +[AUG] +sierp. + +[SEP] +wrz. + +[OCT] +paźdz. + +[NOV] +listop. + +[DEC] +grudz. + +[DEFDT] +--:---:---- --:--:-- + +[BUGGY] +POZOSTAŁE GARBUSKI: + +[BONUS] +~g~PREMIA $~1~v + +[HORN1] +Naciśnij ~h~klawisz L3 ~w~, aby użyć ~h~klaksonu. + +[HORN2] +Naciśnij ~h~klawisz L1 ~w~, aby użyć ~h~klaksonu. + +[HORN3] +Naciśnij ~h~klawisz R1 ~w~, aby użyć ~h~klaksonu. + +[LM3_1A] +Naciśnij klawisz~h~ ~k~~VEHICLE_HORN~~w~, aby użyć ~h~klaksonu~w~ i zaprosić Misty do środka. + +[LM3_1B] +Naciśnij klawisz~h~ ~k~~VEHICLE_HORN~~w~, aby użyć ~h~klaksonu~w~ i zaprosić Misty do środka. + +[LM3_1C] +Naciśnij klawisz~h~ ~k~~VEHICLE_HORN~~w~, aby użyć ~h~klaksonu~w~ i zaprosić Misty do środka. + +[RADIO_A] +Naciśnij klawisz ~h~~k~~VEHICLE_CHANGE_RADIO_STATION~~w~, aby przełączać ~h~stacje radiowe. + +[RADIO_B] +Naciśnij klawisz ~h~~k~~VEHICLE_CHANGE_RADIO_STATION~~w~, aby przełączać ~h~stacje radiowe. + +[RADIO_C] +Naciśnij klawisz ~h~~k~~VEHICLE_CHANGE_RADIO_STATION~~w~, aby przełączać ~h~stacje radiowe.v + +[RADIO_D] +Naciśnij klawisz ~h~~k~~VEHICLE_CHANGE_RADIO_STATION~~w~, aby przełączać ~h~stacje radiowe. + +[FEC_EXV] +Wsiadanie i wysiadanie z pojazdu + +[TAXI_M] +'TAKSÓWKARZ' + +[COP_M] +'PATROL' + +[FIRE_M] +'STRAŻAK' + +[AMBUL_M] +'SANITARIUSZ' + +[HJ_IS] +PREMIA ZA SZALONY SKOK: $~1~ + +[HJ_PIS] +PREMIA ZA BEZBŁĘDNY SZALONY SKOK: $~1~ + +[HJ_DIS] +PREMIA ZA PODWÓJNY SZALONY SKOK: $~1~ + +[HJ_PDIS] +PREMIA ZA BEZBŁĘDNY PODWÓJNY SZALONY SKOK: $~1~ + +[HJ_TIS] +PREMIA ZA POTRÓJNY SZALONY SKOK: $~1~ + +[HJ_PTIS] +PREMIA ZA BEZBŁĘDNY POTRÓJNY SZALONY SKOK: $~1~ + +[HJ_QIS] +PREMIA ZA POCZWÓRNY SZALONY SKOK: $~1~ + +[HJ_PQIS] +PREMIA ZA BEZBŁĘDNY POCZWÓRNY SZALONY SKOK: $~1~ + +[AM1_K] +Za około trzy godziny (0~1~:~1~), Salvatore Leone będzie wychodził z klubu 'U Luigiego'. + +[IMPEXPP] +Warsztat import-eksport w Portland Harbor. Mamy zamówienia na różne pojazdy. Listę aktualnie skupowanych wozów znajdziesz na naszej tablicy ogłoszeniowej. + +[VANHSTP] +Chcesz rozbić konwojowóz? Przywieź go do naszego warsztatu w Portland Harbor! + +[EMVHPUP] +Doskonałe ceny za nowe i używane pojazdy służb miejskich! Skup odbywa się przy dźwigu na północny wschód od Portland Harbor. + +[STANDS] +ROZBITE BUDKI: + +[STASH] +~g~Odwieź PROCHY z powrotem na ~p~teren budowy! + +[MCSTNS] +W gnieździe KART PAMIĘCI nr 1 nie ma karty pamięci (PS2). Czy chcesz kontynuować? (TAK lub NIE) + +[LOVE3_5] +~g~Samolot jest w zasięgu. + +[LOVE3_6] +~r~Policja dotarła do pakunków przed tobą! + +[SIREN_1] +Aby włączyc syrenę pojazdu, naciśnij klawisz ~h~~k~~VEHICLE_HORN~ ~w~. + +[SIREN_2] +Aby włączyc syrenę pojazdu, naciśnij klawisz ~h~~k~~VEHICLE_HORN~ ~w~. + +[FM3_8C] +~w~Potrzebuję jakieś 100 000 dolarów na niezbędne wydatki, + +[MCLOAD] +Trwa wczytywanie danych. Proszę nie wyjmować karty pamięci (PS2) z gniazda KART PAMIĘCI nr 1, nie resetować ani nie wyłączać konsoli. + +[FES_GME] +Błąd odczytu danych z karty pamięci (PS2) w gnieździe KART PAMIĘCI nr 1. Sprawdź kartę i ponów próbę. + +[FESZ_QF] +Czy na pewno chcesz sformatować kartę pamięci (PS2) w gnieździe KART PAMIĘCI nr 1? + +[FESZ_LS] +Pomyślne wczytywanie + +[RM3_5] +~g~Masz już ~1~ z 6 pakietów dowodów. + +[LOVE3_2] +~g~Masz już wszystkie pakunki! Zawieź je do Donalda Love'a. + +[LOVE4_4] +~g~Zabierz pakunek do Donalda Love'a! + +[FEB_SAV] +Wczytanie + +[FEP_SAV] +WCZYTAJ GRĘ + +[AS2_12A] +~g~Od momentu rozwalenia pierwszej budki będziesz miał 8 minut, zanim Kartel ostrzeże swoich dilerów! + +[AS3_1A] +~g~Teraz płyń do ~b~boi ! + +[NOCONT] +Aby kontynuować, proszę ponownie podłączyć kontroler analogowy (DUALSHOCK@) lub kontroler analogowy (DUALSHOCK@2) do portu kontrolerów gry nr 1. + +[BET_JB] +CATALINA, JEGO KOCHANKA, ZDRADZIŁA GO I POZOSTAWIŁA NA PEWNĄ ŚMIERĆ. TERAZ, OSĄDZONY I SKAZANY, ROZPOCZYNA PODRÓŻ DO ZAKŁADU KARNEGO W LIBERTY CITY. ALE W JEGO ZBRODNICZYM UMYŚLE PŁONIE TYLKO JEDNA MYŚL......ZEMSTA! + +[END_A] +Mieszkańcy Cedar Grove nadal dochodzą do siebie + +[END_B] +po gwałtownych wydarzeniach, jakie rozegrały się wczoraj + +[END_C] +w tej dzielnicy, a przypominały regularną wojnę. + +[END_D] +Pan Clive Denver, mieszkający w tej okolicy od lat, opisał wczoraj policji + +[END_E] +samotnego strzelca, który uciekał z miejsca przestępstwa z ciemnowłosą kobietą. + +[END_F] +Och, będziemy się razem świetnie bawić! Bo... no, wiesz... + +[END_G] +Ja cię kocham, naprawdę... Bo jesteś taki silny i w ogóle... + +[END_H] +A właśnie kogoś takiego szukałam. + +[END_I] +Ale... o czym to ja mówiłam? + +[END_J] +Wyleciało mi z głowy! Ale wiesz, o co mi chodzi, prawda? + +[END_K] +Odgłosy eksplozji wstrząsały okolicznymi budynkami, z których wybiegali przerażeni ludzie. + +[END_L] +Kilkunastu obywateli doznało obrażań w wyniku wymiany ognia + +[END_M] +między bandytami na ziemi a helikopterem krążącym nad tamą. + +[END_N] +Tak, tutaj - z ogrodu - miałem na wszystko doskonały widok. + +[END_O] +Kiedy helikopter w końcu został trafiony, + +[END_P] +wyglądało to lepiej niż fajerwerki na Wielkanoc! + +[END_Q] +Liczba zabitych przekroczyła już dwadzieścia osób, + +[END_R] +ale policja ciągle odnajduje nowe ciała. + +[END_S] +Jak dotąd nie wydano żadnego oficjalnego komunikatu, który zaprzeczyłby pogłoskom, + +[END_T] +że ofiary to członkowie Kartelu Kolumbijskiego. + +[END_U] +Nadal nie ma też żadnych informacji na temat przyczyn tej masakry. + +[END_V] +Złamałam paznokieć i zrujnowałam sobie całą fryzurę. To skandal! + +[END_W] +Kosztowała mnie pięćdziesiąt dolców... + +[PAPER1] +* + +[PAPER2] +* + +[PAPER3] +* + +[FEB_CPC] +Konfiguracja klawiszy sterujących + +[FEC_PED] +Sterowanie postacią poza pojazdem + +[FEC_VEH] +Klawisze sterujące pojazdem + +[FEC_FPR] +Sterowanie dla trybu widoku z oczu postaci + +[FEC_CMM] +Standardowe sterowanie + +[FEC_PWL] +IDŹ w lewo + +[FEC_PWR] +Idź w prawo + +[FEC_PWF] +Idź do przodu + +[FEC_PWT] +Idź w stronę kamery + +[FEC_PLB] +Spójrz za siebie + +[FEC_PFR] +Strzał z broni + +[FEC_CLE] +Przełącz rodzaj broni w lewo + +[FEC_CRI] +Przełącz rodzaj broni w prawo + +[FEC_LKT] +Zablokuj cel + +[FEC_PJP] +Skok + +[FEC_PSP] +Szybki bieg + +[FEC_PSH] +Strzał + +[FEC_TLF] +Następny cel w lewo + +[FEC_TRG] +Następny cel w prawo + +[FEC_CCM] +Wyśrodkuj kamerę za graczem + +[FEC_SZI] +Karabin snajperski - przybliżenie + +[FEC_SZO] +Karabin snajperski - oddalenie + +[FEC_LKL] +Spójrz w lewo w trybie widoku z oczu postaci + +[FEC_LRT] +Spójrz w prawo w trybie widoku z oczu postaci + +[FEC_LUP] +Spójrz w górę w trybie widoku z oczu postaci + +[FEC_LDN] +Spójrz w dół w trybie widoku z oczu postaci + +[FEC_LBH] +Spójrz przez tylną szybę + +[FEC_LLF] +Spójrz przez lewą szybę + +[FEC_LRG] +Spójrz przez prawą szybę + +[FEC_HRN] +Klakson + +[FEC_HBR] +Hamulec ręczny pojazdu + +[FEC_ACL] +Przyspieszenie pojazdu + +[FEC_BRK] +Hamulec pojazdu + +[FEC_TSM] +Włącz podmisje + +[FEC_CRD] +Zmiana stacji radiowej + +[FEC_ENT] +Wsiadanie do pojazdu/wysiadanie z pojazdu + +[FEC_WPN] +Strzał z broni + +[FEC_PAS] +Pauza + +[FEC_FPO] +Broń w trybie widoku z oczu postaci + +[FEC_SMS] +Pokazuj kursor myszy + +[FEC_CMS] +Zmiana trybu kamery dla wszystkich sytuacji. + +[FEC_TSS] +Zapisz wygląd ekranu + +[FEN_NET] +Sieć + +[FEN_CON] +Połączenie + +[FEN_GAM] +Szukaj sesji gry + +[FEN_TYP] +Rodzaj gry + +[FEN_TY0] +Tryb Deathmatch + +[FEN_TY1] +Tryb Niewidzialny Deathmatch + +[FEN_TY2] +Zespołowy tryb Deathmatch + +[FEN_TY3] +Zespołowy tryb Niewidzialny Deathmatch + +[FEN_TY4] +Gromadź szmal + +[FEN_TY5] +Zdobądź flagę + +[FEN_TY6] +Wyścig szczurów + +[FEN_TY7] +Dominacja + +[FEN_NAM] +Nazwa: + +[FEN_GNA] +Nazwa gry: + +[FEM_MAP] +Wybierz mapę + +[FEN_PLS] +Ustawienia gracza + +[FEN_PLC] +Kolor gracza + +[FEM_MA0] +Liberty City + +[FEM_MA1] +Dz. Czerwonych Świateł + +[FEM_MA2] +Chinatown + +[FEM_MA3] +Wieża + +[FEM_MA4] +Kanały + +[FEM_MA5] +Park Przemysłowy + +[FEM_MA6] +Doki + +[FEM_MA7] +Staunton + +[FEC_EMS] +Tylko klawisze z klawiatur niestandardowych + +[FEC_DBG] +MENU DEBUGOWANIA + +[FEC_TGD] +Przełącznik gra/debugowanie + +[FEC_TDO] +Wyłącz kamerę trybu debugowania + +[FEC_IVH] +Odwróć osie myszy w poziomie: + +[FEC_MSL] +Lewy przycisk myszy + +[FEC_MSM] +Śr. przycisk myszy + +[FEC_MSR] +Prawy przycisk myszy + +[FEC_QUE] +??? + +[FEC_TWO] +Dozwolone są tylko dwa klawisze z klawiatury + +[FEC_UMS] +Tylko przyciski myszy niestandardowych + +[FEC_OMS] +Dozwolony jest tylko jeden przycisk myszy + +[FEC_UJS] +Tylko przyciski joysticków niestandardowych + +[FEC_OJS] +Dozwolony jest tylko jeden przycisk joysticka na daną czynność . + +[FEC_PTL] +Użyj blokowania celu oraz przełączenia broni w lewo + +[FEC_PTR] +Użyj blokowania celu oraz przełączenia broni w prawo + +[FEC_LBC] +Użyj klawiszy 'spójrz w lewo' oraz 'spójrz w prawo' + +[FEC_JBO] +JOY ~1~ + +[NO_PAUZ] +Nie można zatrzymać gry w trybie wieloosobowym. Dwukrotnie naciśnij klawisz, aby wyjść z gry! + +[FEM_SL1] +Gniazdo 1 jest wolne + +[FEM_SL2] +Gniazdo 2 jest wolne + +[FEM_SL3] +Gniazdo 3 jest wolne + +[FEM_SL4] +Gniazdo 4 jest wolne + +[FEM_SL5] +Gniazdo 5 jest wolne + +[FEM_SL6] +Gniazdo 6 jest wolne + +[FEM_SL7] +Gniazdo 7 jest wolne + +[FEM_SL8] +Gniazdo 8 jest wolne + +[FEM_MM] +MENU GŁÓWNE + +[FEQ_SRE] +Czy na pewno chcesz wyjść z gry? Efekty wszystkich działań podjętych od czasu ostatniego zapisu gry zostaną utracone. Kontynuować? + +[FEQ_SRW] +Czy na pewno chcesz wyjść z gry? + +[FEG_SRV] +SERWER + +[FEG_MAP] +MAPA + +[FEG_PLY] +GRACZE + +[FEG_TYP] +RODZAJ + +[FEG_PNG] +PING + +[FET_FG] +ODSZUKAJ SESJĘ GRY + +[FET_SP] +TRYB DLA JEDNEGO GRACZA + +[FET_MP] +TRYB WIELOOSOBOWY + +[FET_HG] +HOSTUJ GRĘ + +[FET_PS] +KONFIGURACJA GRACZA + +[FET_CON] +POŁĄCZENIE + +[FET_AUD] +KONFIGURACJA DŻWIĘKU + +[FET_GFX] +KONFIGURACJA EFEKTÓW + +[FET_DIS] +KONFIGURACJA EKRANU + +[FET_LAN] +OKREŚL JĘZYK + +[FET_LG] +WCZYTAJ GRĘ + +[FET_DG] +USUŃ GRĘ + +[FET_NG] +NOWA GRA + +[FET_SG] +ZAPISZ GRĘ + +[FET_MAP] +WYBIERZ MAPĘ + +[FET_GT] +RODZAJ GRY + +[FET_CTL] +KONFIGURACJA STEROWANIA + +[FET_OPT] +OPCJE + +[FET_QG] +WYJDŹ Z GRY + +[FET_STA] +STATYSTYKI + +[FET_BRE] +CELE + +[FEC_WAR] +Ostrzeżenie + +[FEC_OKK] +OK + +[FED_CON] +Potwierdzenie usunięcia pliku + +[FES_SSC] +Gra została pomyślnie zapisana. + +[DEL_FNM] +Plik został pomyślnie usunięty. + +[PCLOAD] +Wczytywanie danych z pliku + +[PCRESRT] +Trwa uruchamianie Grand Theft Auto III + +[FEC_DLF] +Kasowanie nieudane. + +[FEC_SVU] +Zapis nieudany. + +[FEC_LUN] +Wczytywanie nieudane. Plik uszkodzony. Proszę go usunąć. + +[FEN_PLA] +Liczba graczy: + +[FET_NON] +BRAK DOSTĘPNYCH GIER + +[FET_SFG] +WYSZUKIWANIE SESJI GRY... + +[FET_SRT] +SORTOWANIE SESJI GRY... + +[FEF_LAN] +LAN + +[FEF_INT] +INTERNET + +[FET_REF] +Odśwież + +[FET_FIL] +Filtr + +[FET_JG] +Dołącz + +[FEC_NTW] +Rozmowa przez sieć + +[FEC_ESR] +Klawisz ESC jest zastrzeżony + +[FEC_GSL] +Pokazuj wstrząsy głowy: + +[FIL_FLT] +FILTR LISTY SESJI GRY + +[FET_SAN] +ROZPOCZNIJ NOWĄ GRĘ + +[FIL_MAP] +Mapa: + +[FIL_SRV] +Serwer: + +[FIL_TYP] +Rodzaj gry: + +[FIL_SPC] +Gry z wolnym miejscem? + +[FIL_PNG] +Ping: + +[FEN_UKH] +Nieznany host + +[FEN_UKM] +Nie odnaleziono mapy + +[FEN_UKT] +Nie odnaleziono danego rodzaju gry + +[FEN_NCI] +BRAK POŁĄCZENIA Z INTERNETEM + +[FET_PAU] +MENU PAUZY + +[FET_SGA] +ROZPOCZNIJ GRĘ + +[FEC_SGJ] +Ustaw joystick do gry + +[FEC_PAD] +Gamepad + +[FEC_JOY] +Joystick + +[FEC_WHL] +Kierownica + +[FEC_CNT] +Typ sterownika: + +[FES_CSA] +Wybierz 'skórę' z poniższej listy: + +[FES_SKN] +NAZWA SKÓRY + +[FES_DAT] +DATA + +[FES_NON] +BRAK DOSTĘPNYCH 'SKÓR' + +[FEA_FM9] +ODTWARZACZ MP3 + +[FESZ_QZ] +Czy jesteś pewien, że chcesz zapisać grę? + +[FES_CGA] +Dostępne gniazda gry: + +[FES_SCG] +Zapisać bieżącą grę? + +[FES_LCG] +Wczytać grę i kontynuować rozgrywkę? + +[FEC_FIR] +Strzał + +[FEC_NWE] +Następna broń + +[FEC_PWE] +Poprzednia broń + +[FEC_FOR] +Do przodu + +[FEC_BAC] +Do tyłu + +[FEC_LEF] +W lewo + +[FEC_RIG] +W prawo + +[FEC_ZIN] +Przybliżenie + +[FEC_ZOT] +Oddalenie + +[FEC_EEX] +Wejście/wyjście + +[FEC_RAD] +Radio + +[FEC_SUB] +Podmisja + +[FEC_CMR] +Zmiana kamery + +[FEC_JMP] +Skok + +[FEC_SPN] +Sprint + +[FEC_HND] +Hamulec ręczny + +[FEC_TUL] +Wieżyczka w lewo + +[FEC_TUR] +Wieżyczka w prawo + +[FEC_LOL] +Spójrz w lewo + +[FEC_LOR] +Spójrz w prawo + +[FEC_NTR] +Następny cel + +[FEC_PTT] +Poprzedni cel + +[FEC_LBA] +Spójrz do tyłu + +[FEC_CEN] +Wyśrodkuj kamerę + +[FEC_UND] +(NIE) + +[FET_CFT] +PIESZO + +[FET_CCR] +W AUCIE + +[CVT_MSG] +Trwa konwersja tekstur do formatu optymalnego dla zainstalowanej karty graficznej. + +[FET_CAC] +CZYNNOŚĆ + +[FEC_IBT] +- + +[FEC_SPC] +SPACJA + +[FEC_MXO] +MXB1 + +[FEC_MXT] +MXB2 + +[FEC_UNB] +UNBOUND + +[FET_CME] +SPOSÓB STEROWANIA + +[FET_RDK] +ZMIANA KLAWISZY STERUJĄCYCH + +[FET_AMS] +USTAWIENIA MYSZY + +[FET_STI] +ZWYKŁA KONFIGURACJA STEROWANIA + +[FET_CTI] +STANDARDOWA KONFIGURACJA STEROWANIA + +[FET_MTI] +KONFIGURACJA STEROWANIA MYSZĄ + +[FET_DAM] +DYNAMICZNE MODELOWANIE AKUSTYCZNE + +[FEC_TFL] +Wieżyczka w lewo + +[FEC_TFR] +Wieżyczka w prawo + +[FEC_MWF] +KÓŁKO W GÓRĘ + +[FEC_MWB] +KÓŁKO W DÓŁ + +[FEC_ORR] +lub + +[FEC_NUS] +NIEUŻYWANY + +[FEC_LUD] +Spójrz w górę + +[FEC_LDU] +Spójrz w dół + +[FEC_CMP] +KOMBINACJA: SPÓJRZ W LEWO + SPÓJRZ W PRAWO + +[FEC_NTT] +Brak tekstu dla tego klawisza + +[FEC_FNC] +F~1~ + +[FEC_IRT] +INSERT + +[FEC_DLL] +DELETE + +[FEC_HME] +HOME + +[FEC_END] +END + +[FEC_PGU] +PAGE UP + +[FEC_PGD] +PAGE DOWN + +[FEC_UPA] +STRZAŁKA W GÓRĘ + +[FEC_DWA] +STRZAŁKA W DÓŁ + +[FEC_LFA] +W LEWO + +[FEC_RFA] +STRZAŁKA W PRAWO + +[FEC_NUM] +NUM + +[FEC_NMN] +NUM~1~ + +[FEC_FWS] +NUM / + +[FEC_PLS] +NUM + + +[FEC_MIN] +NUM - + +[FEC_DOT] +NUM . + +[FEC_NLK] +NUM LOCK + +[FEC_ETR] +ENTER + +[FEC_SLK] +SCROLL LOCK + +[FEC_PSB] +PAUSE BREAK + +[FEC_BSP] +BACKSPACE + +[FEC_TAB] +TAB + +[FEC_CLK] +CAPS LOCK + +[FEC_RTN] +RETURN + +[FEC_LSF] +LEWY SHIFT + +[FEC_RSF] +PRAWY SHIFT + +[FEC_LCT] +LEWY CTRL + +[FEC_RCT] +PRAWY CTRL + +[FEC_LAL] +LEWY ALT + +[FEC_RAL] +PRAWY ALT + +[FEC_LWD] +LEWY KLAWISZ WINDOWS + +[FEC_RWD] +PRAWY KLAWISZ WINDOWS + +[FEC_WRC] +WINCLICK + +[WIN_TTL] +Grand Theft Auto III + +[WIN_95] +Gra Grand Theft Auto III nie pracuje pod systemem Windows 95. + +[WIN_DX] +Gra Grand Theft Auto III wymaga bibliotek DirectX w wersji 8.1 lub nowszych. + +[WIN_VDM] +Gra Grand Theft Auto III wymaga karty graficznej z przynajmniej 12 MB RAM. + +[DIAB3_G] +Arriba! + +[FEM_RES] +WZNÓW GRĘ + +[FES_SNG] +ROZPOCZNIJ NOWĄ GRĘ + +[FEM_SP] +TRYB DLA JEDNEGO GRACZA + +[FEM_MP] +TRYB WIELOOSOBOWY + +[FEM_QT] +WYJDŹ Z GRY + +[FES_SG] +ROZPOCZNIJ NOWĄ GRĘ + +[FES_LG] +WCZYTAJ GRĘ + +[FEM_HST] +HOST GRY + +[FEM_OPT] +OPCJE + +[FEM_DBG] +DEBUGOWANIE + +[FET_PSU] +KONFIGURACJA GRACZA + +[FET_DEF] +PRZYWRÓĆ USTAWIENIA DOMYŚLNE + +[FED_BRI] +JASNOŚĆ + +[FED_TRA] +ŚLADY + +[FEM_LOD] +ODLEGŁOŚC RYSOWANIA + +[FEM_VSC] +SYNCHRONIZACJA KLATEK + +[FEM_FRM] +OGRANICZENIE KLATEK + +[FED_RES] +ROZDZIELCZOŚĆ EKRANU + +[FED_WIS] +SZEROKI EKRAN + +[FEDS_TB] +WSTECZ + +[FEA_MUS] +GŁOŚNOŚĆ MUZYKI + +[FEA_SFX] +GŁOŚNOŚĆ EFEKTÓW + +[FEA_RSS] +STACJA RADIOWA + +[FEL_ENG] +ANGIELSKI + +[FEL_FRE] +FRANCUSKI + +[FEL_GER] +NIEMIECKI + +[FEL_ITA] +WŁOSKI + +[FEL_SPA] +HISZPAŃSKI + +[FEA_3DH] +SPRZĘT AUDIO + +[FEA_SPK] +KONFIGURACJA GŁOŚNIKÓW + +[FEA_2SP] +DWA GŁOŚNIKI + +[FEA_4SP] +WIĘCEJ NIŻ DWA GŁOŚNIKI + +[FEA_EAR] +SŁUCHAWKI + +[FEA_NAH] +BRAK SPRZĘTU AUDIO + +[FET_SNG] +ROZPOCZNIJ NOWĄ GRĘ + +[FEN_STA] +ROZPOCZNIJ GRĘ + +[GMLOAD] +WCZYTAJ GRĘ + +[GMSAVE] +ZAPISZ GRĘ + +[FES_DGA] +USUŃ GRĘ + +[FEM_NON] +BRAK + +[FEC_IVV] +ODWRÓĆ OSIE MYSZY W PIONIE + +[FEC_MSH] +CZUŁOŚĆ MYSZY + +[FET_CCN] +STEROWANIE: STANDARDOWE + +[FET_SCN] +STEROWANIE: ZWYKŁE + +[FES_SET] +UŻYJ 'SKÓRY' + +[GHOST] +Ghost + +[WIN_RSZ] +Zmiana rozmiaru ekranu nieudana. + +[FEC_TFU] +Wież./dodo w górę + +[FEC_TFD] +Wież./dodo w dół + +[FET_APL] +ZASTOSUJ + +[FET_APP] +KLIKNIJ LPM LUB RETURN, ABY ZASTOSOWAĆ NOWE USTAWIENIA + +[FET_HRD] +PRZYWRÓCONO USTAWIENIA DOMYŚLNE + +[FET_MST] +STEROWANIE POJAZDAMI ZA POMOCĄ MYSZY + +[FEC_STR] +NUM * + +[FET_MIG] +STRZAŁKA W LEWO, W PRAWO, KÓŁKO MYSZY, ABY REGULOWAĆ + +[FET_CIG] +BACKSPACE: USUWANIE - LPM, RETURN - ZMIANA + +[FET_RIG] +WYBIERZ NOWY KLAWISZ LUB NACIŚNIJ ESC, ABY ANULOWAĆ + +[FET_EIG] +NIE MOŻNA PRZYPISAĆ KLAWISZA TEJ CZYNNOŚCI + +[NO_PCCD] +Włóż do napędu CD-ROM płytę z grą Grand Theft Auto III nr 2 albo naciśnij ESC, aby anulować. + +[CVT_ERR] +Na dysku twardym zabrakło wolnego miejsca. Przed dalszą pracą z programem zwolnij odpowiednią ilość pamięci. Aby wyjść, naciśnij ESC. + +[FED_SUB] +NAPISY + +[FET_DSN] +Skin gracza.bmp + +[JM3] +'SKOK NA KONWÓJ' + +[ATUTOR2] +~g~OSTROŻNIE przewoź pacjentów do Szpitala. Każde zderzenie zmniejsza ich szanse przeżycia. + +[EBAL] +'WOLNOŚĆ W LIBERTY' + +[LM4] +'ALFONS' + +[REPLAY] +POWTÓRKA + +[FEC_SFT] +SHIFT + +[CRED254] +KIEROWNIK STUDIA + +[CVT_CRT] +Nie można dokonać konwersji tekstur dla zainstalowanej karty graficznej. W tym celu należy zalogować się na konto Administratora. Aby wyjść, naciśnij ESC. + +[FEM_ON] +WŁ. + +[FEM_OFF] +WYŁ. + +[FEM_YES] +TAK + +[FEM_NO] +NIE + +[FES_WAR] +Trwa zapisywanie, proszę czekać... + +[FED_DLW] +Trwa kasowanie, proszę czekać... + +[FED_LDW] +Trwa wczytywanie, proszę czekać... + +[FEC_SLC] +Gniazdo jest uszkodzone + +[FED_LFL] +Nieudane wczytanie zapisanej gry. Za chwilę gra uruchomi się ponownie. + +[FET_RSO] +PRZYWRÓCONO PIERWOTNE USTAWIENIA + +[FET_RSC] +URZĄDZENIE NIEDOSTĘPNE - PRZYWRÓCONO PIERWOTNE USTAWIENIA + +{ re3 updates } +{ new languages } +[FEL_JAP] +JAPOŃSKI + +[FEL_POL] +POLSKI + +[FEL_RUS] +ROSYJSKI + +{ new display menus } +[FET_GRA] +USTAWIENIA GRAFIKI + +[FED_MIP] +MIPMAPPING + +[FED_AAS] +WYGŁADZANIE KRAWĘDZI + +[FED_FIL] + + +[FED_BIL] +DWULINIOWE + +[FED_TRL] +TRÓJLINIOWE + +[FED_WND] +OKIENKOWY + +[FED_FLS] +PEŁNY EKRAN + +[FEM_CSB] +RAMKI CUTSCENEK + +[FEM_SCF] +FORMAT OBRAZU + +[FEM_ISL] +PRZYPISZ WYKORZYSTANIE PAMIĘCI + +[FEM_LOW] +NISKIE + +[FEM_MED] +ŚREDNIE + +[FEM_HIG] +WYSOKIE + +[FEM_2PR] +ALFA TEST PS2 + +[FEC_FRC] +SWOBODNA KAMERA + +{ Linux joy detection } +[FEC_JOD] +WYKRYJ PADA + +[FEC_JPR] +Naciśnij dowolny klawisz na padzie, którego chcesz użyć w grze. + +[FEC_JDE] +Wykryto pada + +{ mission restart } +[FET_RMS] +PONÓW MISJĘ + +[FESZ_RM] +PONOWIĆ? + +[FED_VPL] +POTOK POJAZDÓW + +[FED_PRM] +PODŚWIETLENIE PED + +[FED_RGL] +POŁYSK DROGI + +[FED_CLF] +FILTR KOLORU + +[FED_WLM] +LIGHTMAPY ŚWIATA + +[FED_MBL] +ROZMYCIE RUCHU + +[FEM_SIM] +PROSTE + +[FEM_NRM] +NORMALNY + +[FEM_MOB] +MOBILNY + +[FED_MFX] +MATFX + +[FED_NEO] +PODŚWIETLENIE + +[FEM_PS2] +PS2 + +[FEM_XBX] +XBOX + +[FEC_IVP] +ODWRÓĆ OŚ PADA W PIONIE + +{ end of file } + +[DUMMY] + +THIS LABEL NEEDS TO BE HERE !!! +AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file From 9e8faebcd6289ec7de6e4b8d1d1ce43fe9fd3879 Mon Sep 17 00:00:00 2001 From: Cirno Date: Mon, 7 Dec 2020 16:54:30 +0100 Subject: [PATCH 002/314] Updated Polish TL. --- gamefiles/TEXT/polish.gxt | Bin 241096 -> 241148 bytes utils/gxt/polish.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gamefiles/TEXT/polish.gxt b/gamefiles/TEXT/polish.gxt index d31372cf4d9325227ab1c76752d14d8fe910575b..3b5934505078458f72be1351bd131161c2e673f8 100755 GIT binary patch delta 415 zcmX?coA1wUKGqO#*T^p$S+}b*u9>`7eL3Ta$*CI3k|}!33~sK@@m?;j3~z*>Y~KKe zGm{r;h%-Lfyi?;hn^d0;NWvxF$|i0vtUUj!kYfP-c8Jd8t7*?-HmvAwfP2D<;bt ziu1}rb%p!*GVIyxXxPojIAQWxBWuPNlR1s`4I6Yp*7(MIc)Bwrf!zgU2Zu1IK*c?S zeHg^#AZmR4T^N!kXBziQ7C>cvU0oOw*dVgLz6=a?lLbxm8FMB(0?BQY3r+NSIiME# zlF17-#2NQ&-l_4MO)59fkiZ7f;Ooo45H?xXM4!=RvM-SAn_O$6&-(!EBH#F6 zXEz43$vaIRGfvw)*R-6OF>kY|<#J}mu+4jIoE;f2G&9z Date: Tue, 26 Jan 2021 19:35:40 +0200 Subject: [PATCH 003/314] Use original animation names from VCS --- src/animation/AnimManager.cpp | 344 ++++++++++++++++---------------- src/animation/AnimationId.h | 360 +++++++++++++++++---------------- src/control/Phones.cpp | 10 +- src/control/Replay.cpp | 10 +- src/control/Script.cpp | 4 +- src/control/Script2.cpp | 2 +- src/control/Script3.cpp | 2 +- src/control/Script4.cpp | 6 +- src/control/Script5.cpp | 8 +- src/core/AnimViewer.cpp | 8 +- src/core/Cam.cpp | 8 +- src/core/PlayerInfo.cpp | 4 +- src/core/World.cpp | 2 +- src/peds/CopPed.cpp | 6 +- src/peds/EmergencyPed.cpp | 2 +- src/peds/Ped.cpp | 364 +++++++++++++++++----------------- src/peds/PedAI.cpp | 350 ++++++++++++++++---------------- src/peds/PedFight.cpp | 358 ++++++++++++++++----------------- src/peds/PlayerPed.cpp | 74 +++---- src/peds/Population.cpp | 2 +- src/render/WaterCannon.cpp | 2 +- src/vehicles/Automobile.cpp | 78 ++++---- src/vehicles/Vehicle.h | 2 +- src/weapons/BulletInfo.cpp | 6 +- src/weapons/Weapon.cpp | 20 +- src/weapons/WeaponInfo.cpp | 6 +- 26 files changed, 1031 insertions(+), 1007 deletions(-) diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp index 557bd842..c66997ce 100644 --- a/src/animation/AnimManager.cpp +++ b/src/animation/AnimManager.cpp @@ -19,68 +19,68 @@ CAnimBlendAssocGroup *CAnimManager::ms_aAnimAssocGroups; CLinkList CAnimManager::ms_animCache; AnimAssocDesc aStdAnimDescs[] = { - { ANIM_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK }, - { ANIM_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK }, - { ANIM_SPRINT, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK }, - { ANIM_IDLE_STANCE, ASSOC_REPEAT }, - { ANIM_WALK_START, ASSOC_HAS_TRANSLATION }, - { ANIM_RUN_STOP, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION }, - { ANIM_RUN_STOP_R, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION }, - { ANIM_IDLE_CAM, ASSOC_REPEAT | ASSOC_PARTIAL }, - { ANIM_IDLE_HBHB, ASSOC_REPEAT | ASSOC_PARTIAL }, - { ANIM_IDLE_TIRED, ASSOC_REPEAT }, - { ANIM_IDLE_ARMED, ASSOC_REPEAT | ASSOC_PARTIAL }, - { ANIM_IDLE_CHAT, ASSOC_REPEAT | ASSOC_PARTIAL }, - { ANIM_IDLE_TAXI, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_KO_SHOT_FRONT1, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_FRONT2, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_FRONT3, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_FRONT4, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_FACE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_STOM, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_KO_SHOT_ARML, ASSOC_PARTIAL | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_ARMR, ASSOC_PARTIAL | ASSOC_FRONTAL }, - { ANIM_KO_SHOT_LEGL, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_KO_SHOT_LEGR, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_KD_LEFT, ASSOC_PARTIAL | ASSOC_FRONTAL }, - { ANIM_KD_RIGHT, ASSOC_PARTIAL | ASSOC_FRONTAL }, - { ANIM_KO_SKID_FRONT, ASSOC_PARTIAL }, - { ANIM_KO_SPIN_R, ASSOC_PARTIAL }, - { ANIM_KO_SKID_BACK, ASSOC_PARTIAL | ASSOC_FRONTAL }, - { ANIM_KO_SPIN_L, ASSOC_PARTIAL }, - { ANIM_SHOT_FRONT_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_SHOT_LEFT_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_SHOT_BACK_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_SHOT_RIGHT_PARTIAL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_HIT_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_HIT_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FLOOR_HIT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK }, + { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK }, + { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK }, + { ANIM_STD_IDLE, ASSOC_REPEAT }, + { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION }, + { ANIM_STD_RUNSTOP1, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_RUNSTOP2, ASSOC_DELETEFADEDOUT | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_IDLE_CAM, ASSOC_REPEAT | ASSOC_PARTIAL }, + { ANIM_STD_IDLE_HBHB, ASSOC_REPEAT | ASSOC_PARTIAL }, + { ANIM_STD_IDLE_TIRED, ASSOC_REPEAT }, + { ANIM_STD_IDLE_BIGGUN, ASSOC_REPEAT | ASSOC_PARTIAL }, + { ANIM_STD_CHAT, ASSOC_REPEAT | ASSOC_PARTIAL }, + { ANIM_STD_HAILTAXI, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_KO_FRONT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, + { ANIM_STD_KO_LEFT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, + { ANIM_STD_KO_BACK, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, + { ANIM_STD_KO_RIGHT, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, + { ANIM_STD_KO_SHOT_FACE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, + { ANIM_STD_KO_SHOT_STOMACH, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_KO_SHOT_ARM_L, ASSOC_PARTIAL | ASSOC_FRONTAL }, + { ANIM_STD_KO_SHOT_ARM_R, ASSOC_PARTIAL | ASSOC_FRONTAL }, + { ANIM_STD_KO_SHOT_LEG_L, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_KO_SHOT_LEG_R, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_SPINFORWARD_LEFT, ASSOC_PARTIAL | ASSOC_FRONTAL }, + { ANIM_STD_SPINFORWARD_RIGHT, ASSOC_PARTIAL | ASSOC_FRONTAL }, + { ANIM_STD_HIGHIMPACT_FRONT, ASSOC_PARTIAL }, + { ANIM_STD_HIGHIMPACT_LEFT, ASSOC_PARTIAL }, + { ANIM_STD_HIGHIMPACT_BACK, ASSOC_PARTIAL | ASSOC_FRONTAL }, + { ANIM_STD_HIGHIMPACT_RIGHT, ASSOC_PARTIAL }, + { ANIM_STD_HITBYGUN_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_HITBYGUN_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_HITBYGUN_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_HITBYGUN_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_HIT_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_HIT_BACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_HIT_FLOOR, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, #if GTA_VERSION <= GTA3_PS2_160 - { ANIM_HIT_BODY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_HIT_BODY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, #endif - { ANIM_HIT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_CHEST, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_WALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HIT_WALL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FLOOR_HIT_F, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL }, - { ANIM_HIT_BEHIND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_PUNCH_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_KICK_FLOOR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_BAT_H, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_BAT_V, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_HGUN_BODY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_WEAPON_AK_BODY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_PUMP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_SNIPER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_THROW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_THROWU, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_WEAPON_START_THROW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_BOMBER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_HGUN_RELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_AK_RELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_HIT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_CHEST, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_WALK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_WALL, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HIT_FLOOR_FRONT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_FRONTAL }, + { ANIM_STD_HIT_BEHIND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_KICKGROUND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_WEAPON_BAT_H, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_WEAPON_BAT_V, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_WEAPON_HGUN_BODY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_WEAPON_AK_BODY, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_WEAPON_PUMP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_WEAPON_SNIPER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_WEAPON_THROW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_THROW_UNDER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_START_THROW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_DETONATE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_HGUN_RELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_AK_RELOAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, #ifdef PC_PLAYER_CONTROLS // maybe wrong define, but unused anyway { ANIM_FPS_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, @@ -91,121 +91,121 @@ AnimAssocDesc aStdAnimDescs[] = { { ANIM_FPS_M16, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, { ANIM_FPS_ROCKET, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, #endif - { ANIM_FIGHT_IDLE, ASSOC_REPEAT }, - { ANIM_FIGHT2_IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_SH_F, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FIGHT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_KNEE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_LHOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_FIGHT_ROUNDHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FIGHT_LONGKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FIGHT_PPUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_CAR_JACKED_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_CAR_LJACKED_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_CAR_JACKED_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_CAR_LJACKED_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_CAR_QJACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_QJACKED, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_CAR_ALIGN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_ALIGNHI_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_OPEN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_DOORLOCKED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_PULLOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_PULLOUT_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETIN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETIN_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CLOSEDOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CLOSEDOOR_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_ROLLDOOR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_ROLLDOOR_LOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETOUT_LOW_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CLOSE_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_ALIGN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_ALIGNHI_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_OPEN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_DOORLOCKED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_PULLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_PULLOUT_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETIN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETIN_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CLOSEDOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CLOSEDOOR_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_SHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_LSHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_SIT, ASSOC_DELETEFADEDOUT }, - { ANIM_CAR_LSIT, ASSOC_DELETEFADEDOUT }, - { ANIM_CAR_SITP, ASSOC_DELETEFADEDOUT }, - { ANIM_CAR_SITPLO, ASSOC_DELETEFADEDOUT }, - { ANIM_DRIVE_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DRIVE_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DRIVE_LOW_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DRIVE_LOW_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DRIVEBY_L, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DRIVEBY_R, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_CAR_LB, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DRIVE_BOAT, ASSOC_DELETEFADEDOUT }, - { ANIM_CAR_GETOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_GETOUT_LOW_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CLOSE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_HOOKERTALK, ASSOC_REPEAT | ASSOC_PARTIAL }, - { ANIM_COACH_OPEN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_COACH_OPEN_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_COACH_IN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_COACH_IN_R, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_COACH_OUT_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_TRAIN_GETIN, ASSOC_PARTIAL }, - { ANIM_TRAIN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CRAWLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_CAR_CRAWLOUT_RHS2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_OPEN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_GETIN_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_CLOSE_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_GETOUT_L, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_OPEN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_GETIN, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_CLOSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_VAN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_GETUP1, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_GETUP2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_GETUP3, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_GETUP_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_JUMP_LAUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FALL_FALL, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FALL_COLLAPSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_EV_STEP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_EV_DIVE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, - { ANIM_XPRESS_SCRATCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE }, - { ANIM_ROAD_CROSS, ASSOC_REPEAT | ASSOC_PARTIAL }, - { ANIM_TURN_180, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_ARREST_GUN, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_DROWN, ASSOC_PARTIAL }, - { ANIM_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_DUCK_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_DUCK_LOW, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_RBLOCK_CSHOOT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, - { ANIM_WEAPON_THROWU2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_HANDSUP, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_HANDSCOWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, - { ANIM_FUCKU, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, - { ANIM_PHONE_IN, ASSOC_PARTIAL }, - { ANIM_PHONE_OUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, - { ANIM_PHONE_TALK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_IDLE, ASSOC_REPEAT }, + { ANIM_STD_FIGHT_2IDLE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_SHUFFLE_F, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FIGHT_BODYBLOW, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_HEAD, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_KICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_KNEE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_LHOOK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_PUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_FIGHT_ROUNDHOUSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FIGHT_LONGKICK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_PARTIAL_PUNCH, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_JACKEDCAR_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_JACKEDCAR_LO_RHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_JACKEDCAR_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_JACKEDCAR_LO_LHS, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_QUICKJACK, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_QUICKJACKED, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_ALIGN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_ALIGNHI_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_OPEN_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CARDOOR_LOCKED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_PULL_OUT_PED_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_PULL_OUT_PED_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_GET_IN_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_DOOR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_DOOR_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_GETOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_GETOUT_LO_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_ALIGN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_ALIGNHI_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_OPEN_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CARDOOR_LOCKED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_PULL_OUT_PED_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_PULL_OUT_PED_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_GET_IN_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_DOOR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_DOOR_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_SHUFFLE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_SHUFFLE_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_SIT, ASSOC_DELETEFADEDOUT }, + { ANIM_STD_CAR_SIT_LO, ASSOC_DELETEFADEDOUT }, + { ANIM_STD_CAR_SIT_P, ASSOC_DELETEFADEDOUT }, + { ANIM_STD_CAR_SIT_P_LO, ASSOC_DELETEFADEDOUT }, + { ANIM_STD_CAR_DRIVE_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_DRIVE_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_DRIVE_LEFT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_DRIVE_RIGHT_LO, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_DRIVEBY_LEFT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_DRIVEBY_RIGHT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_CAR_LOOKBEHIND, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_BOAT_DRIVE, ASSOC_DELETEFADEDOUT }, + { ANIM_STD_GETOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_GETOUT_LO_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_CLOSE_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CAR_HOOKERTALK, ASSOC_REPEAT | ASSOC_PARTIAL }, + { ANIM_STD_COACH_OPEN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_COACH_OPEN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_COACH_GET_IN_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_COACH_GET_IN_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_COACH_GET_OUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_TRAIN_GETIN, ASSOC_PARTIAL }, + { ANIM_STD_TRAIN_GETOUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CRAWLOUT_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_CRAWLOUT_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_GET_IN_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_GET_OUT_REAR_LHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_GET_IN_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_VAN_GET_OUT_REAR_RHS, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_GET_UP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_GET_UP_LEFT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_GET_UP_RIGHT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_GET_UP_FRONT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_JUMP_LAUNCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_JUMP_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_JUMP_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FALL, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_FALL_GLIDE, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_FALL_LAND, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_FALL_COLLAPSE, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_EVADE_STEP, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_EVADE_DIVE, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION | ASSOC_FRONTAL }, + { ANIM_STD_XPRESS_SCRATCH, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_IDLE }, + { ANIM_STD_ROADCROSS, ASSOC_REPEAT | ASSOC_PARTIAL }, + { ANIM_STD_TURN180, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_ARREST, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_DROWN, ASSOC_PARTIAL }, + { ANIM_MEDIC_CPR, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_DUCK_DOWN, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_DUCK_LOW, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_RBLOCK_SHOOT, ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, + { ANIM_STD_THROW_UNDER2, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_HANDSUP, ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_HANDSCOWER, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_HAS_TRANSLATION }, + { ANIM_STD_PARTIAL_FUCKU, ASSOC_DELETEFADEDOUT | ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL | ASSOC_NOWALK }, + { ANIM_STD_PHONE_IN, ASSOC_PARTIAL }, + { ANIM_STD_PHONE_OUT, ASSOC_FADEOUTWHENDONE | ASSOC_PARTIAL }, + { ANIM_STD_PHONE_TALK, ASSOC_REPEAT | ASSOC_DELETEFADEDOUT | ASSOC_PARTIAL }, }; #ifdef PC_PLAYER_CONTROLS AnimAssocDesc aStdAnimDescsSide[] = { - { ANIM_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK | ASSOC_HAS_X_TRANSLATION }, - { ANIM_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK | ASSOC_HAS_X_TRANSLATION }, - { ANIM_SPRINT, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK | ASSOC_HAS_X_TRANSLATION }, - { ANIM_IDLE_STANCE, ASSOC_REPEAT }, - { ANIM_WALK_START, ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, + { ANIM_STD_WALK, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK | ASSOC_HAS_X_TRANSLATION }, + { ANIM_STD_RUN, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK | ASSOC_HAS_X_TRANSLATION }, + { ANIM_STD_RUNFAST, ASSOC_REPEAT | ASSOC_MOVEMENT | ASSOC_HAS_TRANSLATION | ASSOC_WALK | ASSOC_HAS_X_TRANSLATION }, + { ANIM_STD_IDLE, ASSOC_REPEAT }, + { ANIM_STD_STARTWALK, ASSOC_HAS_TRANSLATION | ASSOC_HAS_X_TRANSLATION }, }; #endif char const *aStdAnimations[] = { diff --git a/src/animation/AnimationId.h b/src/animation/AnimationId.h index 4b3dd92d..baf6eb33 100644 --- a/src/animation/AnimationId.h +++ b/src/animation/AnimationId.h @@ -2,68 +2,82 @@ enum AnimationId { - ANIM_WALK, - ANIM_RUN, - ANIM_SPRINT, - ANIM_IDLE_STANCE, - ANIM_WALK_START, - ANIM_RUN_STOP, - ANIM_RUN_STOP_R, - ANIM_IDLE_CAM, - ANIM_IDLE_HBHB, - ANIM_IDLE_TIRED, - ANIM_IDLE_ARMED, - ANIM_IDLE_CHAT, - ANIM_IDLE_TAXI, - ANIM_KO_SHOT_FRONT1, - ANIM_KO_SHOT_FRONT2, - ANIM_KO_SHOT_FRONT3, - ANIM_KO_SHOT_FRONT4, - ANIM_KO_SHOT_FACE, - ANIM_KO_SHOT_STOM, - ANIM_KO_SHOT_ARML, - ANIM_KO_SHOT_ARMR, - ANIM_KO_SHOT_LEGL, - ANIM_KO_SHOT_LEGR, - ANIM_KD_LEFT, - ANIM_KD_RIGHT, - ANIM_KO_SKID_FRONT, - ANIM_KO_SPIN_R, // named left in VC - ANIM_KO_SKID_BACK, - ANIM_KO_SPIN_L, // named right in VC - ANIM_SHOT_FRONT_PARTIAL, - ANIM_SHOT_LEFT_PARTIAL, - ANIM_SHOT_BACK_PARTIAL, - ANIM_SHOT_RIGHT_PARTIAL, - ANIM_HIT_FRONT, - ANIM_HIT_LEFT, - ANIM_HIT_BACK, - ANIM_HIT_RIGHT, - ANIM_FLOOR_HIT, + ANIM_STD_WALK, + ANIM_STD_RUN, + ANIM_STD_RUNFAST, + ANIM_STD_IDLE, + ANIM_STD_STARTWALK, + ANIM_STD_RUNSTOP1, + ANIM_STD_RUNSTOP2, + ANIM_STD_IDLE_CAM, + ANIM_STD_IDLE_HBHB, + ANIM_STD_IDLE_TIRED, + ANIM_STD_IDLE_BIGGUN, + ANIM_STD_CHAT, + ANIM_STD_HAILTAXI, + ANIM_STD_KO_FRONT, + ANIM_STD_KO_LEFT, + ANIM_STD_KO_BACK, + ANIM_STD_KO_RIGHT, + ANIM_STD_KO_SHOT_FACE, + ANIM_STD_KO_SHOT_STOMACH, + ANIM_STD_KO_SHOT_ARM_L, + ANIM_STD_KO_SHOT_ARM_R, + ANIM_STD_KO_SHOT_LEG_L, + ANIM_STD_KO_SHOT_LEG_R, + ANIM_STD_SPINFORWARD_LEFT, + ANIM_STD_SPINFORWARD_RIGHT, + ANIM_STD_HIGHIMPACT_FRONT, + ANIM_STD_HIGHIMPACT_LEFT, + ANIM_STD_HIGHIMPACT_BACK, + ANIM_STD_HIGHIMPACT_RIGHT, + ANIM_STD_HITBYGUN_FRONT, + ANIM_STD_HITBYGUN_LEFT, + ANIM_STD_HITBYGUN_BACK, + ANIM_STD_HITBYGUN_RIGHT, + ANIM_STD_HIT_FRONT, + ANIM_STD_HIT_LEFT, + ANIM_STD_HIT_BACK, + ANIM_STD_HIT_RIGHT, + ANIM_STD_HIT_FLOOR, + + /* names made up */ #if GTA_VERSION <= GTA3_PS2_160 - ANIM_HIT_BODY, + ANIM_STD_HIT_BODY, #endif - ANIM_HIT_BODYBLOW, - ANIM_HIT_CHEST, - ANIM_HIT_HEAD, - ANIM_HIT_WALK, - ANIM_HIT_WALL, - ANIM_FLOOR_HIT_F, - ANIM_HIT_BEHIND, - ANIM_PUNCH_R, - ANIM_KICK_FLOOR, - ANIM_WEAPON_BAT_H, - ANIM_WEAPON_BAT_V, - ANIM_WEAPON_HGUN_BODY, - ANIM_WEAPON_AK_BODY, - ANIM_WEAPON_PUMP, - ANIM_WEAPON_SNIPER, - ANIM_WEAPON_THROW, - ANIM_WEAPON_THROWU, - ANIM_WEAPON_START_THROW, - ANIM_BOMBER, - ANIM_HGUN_RELOAD, - ANIM_AK_RELOAD, + ANIM_STD_HIT_BODYBLOW, + ANIM_STD_HIT_CHEST, + ANIM_STD_HIT_HEAD, + ANIM_STD_HIT_WALK, + /**/ + + ANIM_STD_HIT_WALL, + ANIM_STD_HIT_FLOOR_FRONT, + ANIM_STD_HIT_BEHIND, + ANIM_STD_PUNCH, + ANIM_STD_KICKGROUND, + + /* names made up */ + ANIM_STD_WEAPON_BAT_H, + ANIM_STD_WEAPON_BAT_V, + ANIM_STD_WEAPON_HGUN_BODY, + ANIM_STD_WEAPON_AK_BODY, + ANIM_STD_WEAPON_PUMP, + ANIM_STD_WEAPON_SNIPER, + ANIM_STD_WEAPON_THROW, + /**/ + + ANIM_STD_THROW_UNDER, + + /* names made up */ + ANIM_STD_START_THROW, + /**/ + + ANIM_STD_DETONATE, + + /* names made up */ + ANIM_STD_HGUN_RELOAD, + ANIM_STD_AK_RELOAD, #ifdef PC_PLAYER_CONTROLS // maybe wrong define, but unused anyway ANIM_FPS_PUNCH, @@ -74,113 +88,123 @@ enum AnimationId ANIM_FPS_M16, ANIM_FPS_ROCKET, #endif - ANIM_FIGHT_IDLE, - ANIM_FIGHT2_IDLE, - ANIM_FIGHT_SH_F, - ANIM_FIGHT_BODYBLOW, - ANIM_FIGHT_HEAD, - ANIM_FIGHT_KICK, - ANIM_FIGHT_KNEE, - ANIM_FIGHT_LHOOK, - ANIM_FIGHT_PUNCH, - ANIM_FIGHT_ROUNDHOUSE, - ANIM_FIGHT_LONGKICK, - ANIM_FIGHT_PPUNCH, - ANIM_CAR_JACKED_RHS, - ANIM_CAR_LJACKED_RHS, - ANIM_CAR_JACKED_LHS, - ANIM_CAR_LJACKED_LHS, - ANIM_CAR_QJACK, - ANIM_CAR_QJACKED, - ANIM_CAR_ALIGN_LHS, - ANIM_CAR_ALIGNHI_LHS, - ANIM_CAR_OPEN_LHS, - ANIM_CAR_DOORLOCKED_LHS, - ANIM_CAR_PULLOUT_LHS, - ANIM_CAR_PULLOUT_LOW_LHS, - ANIM_CAR_GETIN_LHS, - ANIM_CAR_GETIN_LOW_LHS, - ANIM_CAR_CLOSEDOOR_LHS, - ANIM_CAR_CLOSEDOOR_LOW_LHS, - ANIM_CAR_ROLLDOOR, - ANIM_CAR_ROLLDOOR_LOW, - ANIM_CAR_GETOUT_LHS, - ANIM_CAR_GETOUT_LOW_LHS, - ANIM_CAR_CLOSE_LHS, - ANIM_CAR_ALIGN_RHS, - ANIM_CAR_ALIGNHI_RHS, - ANIM_CAR_OPEN_RHS, - ANIM_CAR_DOORLOCKED_RHS, - ANIM_CAR_PULLOUT_RHS, - ANIM_CAR_PULLOUT_LOW_RHS, - ANIM_CAR_GETIN_RHS, - ANIM_CAR_GETIN_LOW_RHS, - ANIM_CAR_CLOSEDOOR_RHS, - ANIM_CAR_CLOSEDOOR_LOW_RHS, - ANIM_CAR_SHUFFLE_RHS, - ANIM_CAR_LSHUFFLE_RHS, - ANIM_CAR_SIT, - ANIM_CAR_LSIT, - ANIM_CAR_SITP, - ANIM_CAR_SITPLO, - ANIM_DRIVE_L, - ANIM_DRIVE_R, - ANIM_DRIVE_LOW_L, - ANIM_DRIVE_LOW_R, - ANIM_DRIVEBY_L, - ANIM_DRIVEBY_R, - ANIM_CAR_LB, - ANIM_DRIVE_BOAT, - ANIM_CAR_GETOUT_RHS, - ANIM_CAR_GETOUT_LOW_RHS, - ANIM_CAR_CLOSE_RHS, - ANIM_CAR_HOOKERTALK, - ANIM_COACH_OPEN_L, - ANIM_COACH_OPEN_R, - ANIM_COACH_IN_L, - ANIM_COACH_IN_R, - ANIM_COACH_OUT_L, - ANIM_TRAIN_GETIN, - ANIM_TRAIN_GETOUT, - ANIM_CAR_CRAWLOUT_RHS, - ANIM_CAR_CRAWLOUT_RHS2, - ANIM_VAN_OPEN_L, - ANIM_VAN_GETIN_L, - ANIM_VAN_CLOSE_L, - ANIM_VAN_GETOUT_L, - ANIM_VAN_OPEN, - ANIM_VAN_GETIN, - ANIM_VAN_CLOSE, - ANIM_VAN_GETOUT, - ANIM_GETUP1, - ANIM_GETUP2, - ANIM_GETUP3, - ANIM_GETUP_FRONT, - ANIM_JUMP_LAUNCH, - ANIM_JUMP_GLIDE, - ANIM_JUMP_LAND, - ANIM_FALL_FALL, - ANIM_FALL_GLIDE, - ANIM_FALL_LAND, - ANIM_FALL_COLLAPSE, - ANIM_EV_STEP, - ANIM_EV_DIVE, - ANIM_XPRESS_SCRATCH, - ANIM_ROAD_CROSS, - ANIM_TURN_180, - ANIM_ARREST_GUN, - ANIM_DROWN, - ANIM_CPR, - ANIM_DUCK_DOWN, - ANIM_DUCK_LOW, - ANIM_RBLOCK_CSHOOT, - ANIM_WEAPON_THROWU2, - ANIM_HANDSUP, - ANIM_HANDSCOWER, - ANIM_FUCKU, - ANIM_PHONE_IN, - ANIM_PHONE_OUT, - ANIM_PHONE_TALK, + /**/ - NUM_ANIMS + ANIM_STD_FIGHT_IDLE, + ANIM_STD_FIGHT_2IDLE, + ANIM_STD_FIGHT_SHUFFLE_F, + + /* names made up */ + ANIM_STD_FIGHT_BODYBLOW, + ANIM_STD_FIGHT_HEAD, + ANIM_STD_FIGHT_KICK, + ANIM_STD_FIGHT_KNEE, + ANIM_STD_FIGHT_LHOOK, + ANIM_STD_FIGHT_PUNCH, + ANIM_STD_FIGHT_ROUNDHOUSE, + ANIM_STD_FIGHT_LONGKICK, + /**/ + + ANIM_STD_PARTIAL_PUNCH, + ANIM_STD_JACKEDCAR_RHS, + ANIM_STD_JACKEDCAR_LO_RHS, + ANIM_STD_JACKEDCAR_LHS, + ANIM_STD_JACKEDCAR_LO_LHS, + ANIM_STD_QUICKJACK, + ANIM_STD_QUICKJACKED, + ANIM_STD_CAR_ALIGN_DOOR_LHS, + ANIM_STD_CAR_ALIGNHI_DOOR_LHS, + ANIM_STD_CAR_OPEN_DOOR_LHS, + ANIM_STD_CARDOOR_LOCKED_LHS, + ANIM_STD_CAR_PULL_OUT_PED_LHS, + ANIM_STD_CAR_PULL_OUT_PED_LO_LHS, + ANIM_STD_CAR_GET_IN_LHS, + ANIM_STD_CAR_GET_IN_LO_LHS, + ANIM_STD_CAR_CLOSE_DOOR_LHS, + ANIM_STD_CAR_CLOSE_DOOR_LO_LHS, + ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, + ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, + ANIM_STD_GETOUT_LHS, + ANIM_STD_GETOUT_LO_LHS, + ANIM_STD_CAR_CLOSE_LHS, + ANIM_STD_CAR_ALIGN_DOOR_RHS, + ANIM_STD_CAR_ALIGNHI_DOOR_RHS, + ANIM_STD_CAR_OPEN_DOOR_RHS, + ANIM_STD_CARDOOR_LOCKED_RHS, + ANIM_STD_CAR_PULL_OUT_PED_RHS, + ANIM_STD_CAR_PULL_OUT_PED_LO_RHS, + ANIM_STD_CAR_GET_IN_RHS, + ANIM_STD_CAR_GET_IN_LO_RHS, + ANIM_STD_CAR_CLOSE_DOOR_RHS, + ANIM_STD_CAR_CLOSE_DOOR_LO_RHS, + ANIM_STD_CAR_SHUFFLE_RHS, + ANIM_STD_CAR_SHUFFLE_LO_RHS, + ANIM_STD_CAR_SIT, + ANIM_STD_CAR_SIT_LO, + ANIM_STD_CAR_SIT_P, + ANIM_STD_CAR_SIT_P_LO, + ANIM_STD_CAR_DRIVE_LEFT, + ANIM_STD_CAR_DRIVE_RIGHT, + ANIM_STD_CAR_DRIVE_LEFT_LO, + ANIM_STD_CAR_DRIVE_RIGHT_LO, + ANIM_STD_CAR_DRIVEBY_LEFT, + ANIM_STD_CAR_DRIVEBY_RIGHT, + ANIM_STD_CAR_LOOKBEHIND, + ANIM_STD_BOAT_DRIVE, + ANIM_STD_GETOUT_RHS, + ANIM_STD_GETOUT_LO_RHS, + ANIM_STD_CAR_CLOSE_RHS, + ANIM_STD_CAR_HOOKERTALK, + ANIM_STD_COACH_OPEN_LHS, + ANIM_STD_COACH_OPEN_RHS, + ANIM_STD_COACH_GET_IN_LHS, + ANIM_STD_COACH_GET_IN_RHS, + ANIM_STD_COACH_GET_OUT_LHS, + ANIM_STD_TRAIN_GETIN, + ANIM_STD_TRAIN_GETOUT, + ANIM_STD_CRAWLOUT_LHS, + ANIM_STD_CRAWLOUT_RHS, + ANIM_STD_VAN_OPEN_DOOR_REAR_LHS, + ANIM_STD_VAN_GET_IN_REAR_LHS, + ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS, + ANIM_STD_VAN_GET_OUT_REAR_LHS, + ANIM_STD_VAN_OPEN_DOOR_REAR_RHS, + ANIM_STD_VAN_GET_IN_REAR_RHS, + ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS, + ANIM_STD_VAN_GET_OUT_REAR_RHS, + ANIM_STD_GET_UP, + ANIM_STD_GET_UP_LEFT, + ANIM_STD_GET_UP_RIGHT, + ANIM_STD_GET_UP_FRONT, + ANIM_STD_JUMP_LAUNCH, + ANIM_STD_JUMP_GLIDE, + ANIM_STD_JUMP_LAND, + ANIM_STD_FALL, + ANIM_STD_FALL_GLIDE, + ANIM_STD_FALL_LAND, + ANIM_STD_FALL_COLLAPSE, + ANIM_STD_EVADE_STEP, + ANIM_STD_EVADE_DIVE, + ANIM_STD_XPRESS_SCRATCH, + ANIM_STD_ROADCROSS, + ANIM_STD_TURN180, + ANIM_STD_ARREST, + ANIM_STD_DROWN, + ANIM_MEDIC_CPR, + ANIM_STD_DUCK_DOWN, + ANIM_STD_DUCK_LOW, + ANIM_STD_RBLOCK_SHOOT, + + /* names made up */ + ANIM_STD_THROW_UNDER2, + /**/ + + ANIM_STD_HANDSUP, + ANIM_STD_HANDSCOWER, + ANIM_STD_PARTIAL_FUCKU, + ANIM_STD_PHONE_IN, + ANIM_STD_PHONE_OUT, + ANIM_STD_PHONE_TALK, + + ANIM_STD_NUM }; \ No newline at end of file diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp index f649d435..ef7ecead 100644 --- a/src/control/Phones.cpp +++ b/src/control/Phones.cpp @@ -58,9 +58,9 @@ CPhoneInfo::Update(void) TheCamera.SetWideScreenOff(); pPhoneDisplayingMessages = nil; bDisplayingPhoneMessage = false; - CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(player->GetClump(), ANIM_PHONE_TALK); + CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(player->GetClump(), ANIM_STD_PHONE_TALK); if (talkAssoc && talkAssoc->blendAmount > 0.5f) { - CAnimBlendAssociation *endAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_PHONE_OUT, 8.0f); + CAnimBlendAssociation *endAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_OUT, 8.0f); endAssoc->flags &= ~ASSOC_DELETEFADEDOUT; endAssoc->SetFinishCallback(PhonePutDownCB, player); } else { @@ -117,7 +117,7 @@ CPhoneInfo::Update(void) CPad::GetPad(0)->SetDisablePlayerControls(PLAYERCONTROL_PHONE); TheCamera.SetWideScreenOn(); playerInfo->MakePlayerSafe(true); - CAnimBlendAssociation *phonePickAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_PHONE_IN, 4.0f); + CAnimBlendAssociation *phonePickAssoc = CAnimManager::BlendAnimation(player->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_IN, 4.0f); phonePickAssoc->SetFinishCallback(PhonePickUpCB, &m_aPhones[phoneId]); bPickingUpPhone = true; pCallBackPed = player; @@ -442,10 +442,10 @@ PhonePickUpCB(CAnimBlendAssociation *assoc, void *arg) CPed *ped = CPhoneInfo::pCallBackPed; ped->m_nMoveState = PEDMOVE_STILL; - CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 8.0f); + CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE, 8.0f); if (assoc->blendAmount > 0.5f && ped) - CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_PHONE_TALK, 8.0f); + CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_TALK, 8.0f); CPhoneInfo::pCallBackPed = nil; } diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp index 2dd66333..d8b15385 100644 --- a/src/control/Replay.cpp +++ b/src/control/Replay.cpp @@ -457,7 +457,7 @@ void CReplay::StoreDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationState state->aFunctionCallbackID[i] = 0; } }else{ - state->aAnimId[i] = NUM_ANIMS; + state->aAnimId[i] = ANIM_STD_NUM; state->aCurTime[i] = 0; state->aSpeed[i] = 85; state->aFunctionCallbackID[i] = 0; @@ -484,7 +484,7 @@ void CReplay::StoreDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationState } } else { - state->aAnimId2[i] = NUM_ANIMS; + state->aAnimId2[i] = ANIM_STD_NUM; state->aCurTime2[i] = 0; state->aSpeed2[i] = 85; state->aFunctionCallbackID2[i] = 0; @@ -558,7 +558,7 @@ void CReplay::RetrievePedAnimation(CPed *ped, CStoredAnimationState *state) float time = state->partAnimTime * 4.0f / 255.0f; float speed = state->partAnimSpeed * 3.0f / 255.0f; float blend = state->partBlendAmount * 2.0f / 255.0f; - if (blend > 0.0f && state->partAnimId != ANIM_IDLE_STANCE){ + if (blend > 0.0f && state->partAnimId != ANIM_STD_IDLE){ CAnimBlendAssociation* anim3 = CAnimManager::BlendAnimation( (RpClump*)ped->m_rwObject, ASSOCGRP_STD, (AnimationId)state->partAnimId, 1000.0f); anim3->SetCurrentTime(time); @@ -578,7 +578,7 @@ void CReplay::RetrieveDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationSt assoc->SetBlend(0.0f, -1.0f); #endif for (int i = 0; i < NUM_MAIN_ANIMS_IN_REPLAY; i++) { - if (state->aAnimId[i] == NUM_ANIMS) + if (state->aAnimId[i] == ANIM_STD_NUM) continue; #ifdef FIX_REPLAY_BUGS CAnimBlendAssociation* anim = CAnimManager::AddAnimation(ped->GetClump(), @@ -607,7 +607,7 @@ void CReplay::RetrieveDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationSt anim->SetDeleteCallback(FindCBFunction(callback & 0x7F), ped); } for (int i = 0; i < NUM_PARTIAL_ANIMS_IN_REPLAY; i++) { - if (state->aAnimId2[i] == NUM_ANIMS) + if (state->aAnimId2[i] == ANIM_STD_NUM) continue; #ifdef FIX_REPLAY_BUGS CAnimBlendAssociation* anim = CAnimManager::AddAnimation(ped->GetClump(), diff --git a/src/control/Script.cpp b/src/control/Script.cpp index e70bd508..5598f3c9 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -4266,7 +4266,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) #ifdef FIX_BUGS AnimationId anim = pVehicle->GetDriverAnim(); #else - AnimationId anim = pVehicle->bLowVehicle ? ANIM_CAR_LSIT : ANIM_CAR_SIT; + AnimationId anim = pVehicle->bLowVehicle ? ANIM_STD_CAR_SIT_LO : ANIM_STD_CAR_SIT; #endif pPed->m_pVehicleAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, anim, 100.0f); pPed->StopNonPartialAnims(); @@ -4309,7 +4309,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) pPlayer->m_pPed->m_pVehicleAnim->blendDelta = -1000.0f; pPlayer->m_pPed->m_pVehicleAnim = nil; pPlayer->m_pPed->SetMoveState(PEDMOVE_NONE); - CAnimManager::BlendAnimation(pPlayer->m_pPed->GetClump(), pPlayer->m_pPed->m_animGroup, ANIM_IDLE_STANCE, 100.0f); + CAnimManager::BlendAnimation(pPlayer->m_pPed->GetClump(), pPlayer->m_pPed->m_animGroup, ANIM_STD_IDLE, 100.0f); pPlayer->m_pPed->RestartNonPartialAnims(); AudioManager.PlayerJustLeftCar(); pos.z += pPlayer->m_pPed->GetDistanceFromCentreOfMassToBaseOfModel(); diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp index 9329b3bc..210b9327 100644 --- a/src/control/Script2.cpp +++ b/src/control/Script2.cpp @@ -913,7 +913,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command) if (strcmp(m_abScriptName, "camera") == 0){ pPlayer->m_pPed->SetMoveSpeed(0.0f, 0.0f, 0.0f); pPlayer->m_pPed->SetTurnSpeed(0.0f, 0.0f, 0.0f); - CAnimManager::BlendAnimation((RpClump*)pPlayer->m_pPed->m_rwObject, pPlayer->m_pPed->m_animGroup, ANIM_IDLE_STANCE, 1000.0f); + CAnimManager::BlendAnimation((RpClump*)pPlayer->m_pPed->m_rwObject, pPlayer->m_pPed->m_animGroup, ANIM_STD_IDLE, 1000.0f); } } return 0; diff --git a/src/control/Script3.cpp b/src/control/Script3.cpp index 6e6e15bf..b166403c 100644 --- a/src/control/Script3.cpp +++ b/src/control/Script3.cpp @@ -417,7 +417,7 @@ int8 CRunningScript::ProcessCommands500To599(int32 command) pPed->FlagToDestroyWhenNextProcessed(); } else { - pPed->SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + pPed->SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); } return 0; } diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp index 40f9f2f1..93956ea2 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -68,7 +68,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) pPed->ApplyHeadShot(WEAPONTYPE_SNIPERRIFLE, pPed->GetNodePosition(PED_HEAD), true); } else { - pPed->SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + pPed->SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); } return 0; } @@ -81,7 +81,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) pPed->ApplyHeadShot(WEAPONTYPE_SNIPERRIFLE, pPed->GetNodePosition(PED_HEAD), true); } else { - pPed->SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + pPed->SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); } return 0; } @@ -793,7 +793,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) pPed->m_pVehicleAnim = nil; pPed->RestartNonPartialAnims(); pPed->SetMoveState(PEDMOVE_NONE); - CAnimManager::BlendAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_IDLE_STANCE, 100.0f); + CAnimManager::BlendAnimation(pPed->GetClump(), pPed->m_animGroup, ANIM_STD_IDLE, 100.0f); pos.z += pPed->GetDistanceFromCentreOfMassToBaseOfModel(); pPed->Teleport(pos); CTheScripts::ClearSpaceForMissionEntity(pos, pPed); diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index b54d425c..464a77d8 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -2450,10 +2450,10 @@ bool CTheScripts::IsPlayerStopped(CPlayerInfo* pPlayer) CPed* pPed = pPlayer->m_pPed; if (pPed->bInVehicle) return IsVehicleStopped(pPed->m_pMyVehicle); - if (RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_RUN_STOP) || - RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_RUN_STOP_R) || - RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_JUMP_LAUNCH) || - RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_JUMP_GLIDE)) + if (RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_RUNSTOP1) || + RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_RUNSTOP2) || + RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_JUMP_LAUNCH) || + RpAnimBlendClumpGetAssociation(pPed->GetClump(), ANIM_STD_JUMP_GLIDE)) return false; return pPed->m_nMoveState == PEDMOVE_NONE || pPed->m_nMoveState == PEDMOVE_STILL; } diff --git a/src/core/AnimViewer.cpp b/src/core/AnimViewer.cpp index a888d528..946693a7 100644 --- a/src/core/AnimViewer.cpp +++ b/src/core/AnimViewer.cpp @@ -230,7 +230,7 @@ CAnimViewer::Update(void) if (modelInfo->GetModelType() == MITYPE_PED) { int animGroup = ((CPedModelInfo*)modelInfo)->m_animGroup; - if (animId > ANIM_IDLE_STANCE) + if (animId > ANIM_STD_IDLE) animGroup = ASSOCGRP_STD; if (reloadIFP) { @@ -318,14 +318,14 @@ CAnimViewer::Update(void) CMessages::AddMessage(gUString, 1000, 0); } else if (pad->GetCircleJustDown()) { - PlayAnimation(pTarget->GetClump(), animGroup, ANIM_IDLE_STANCE); + PlayAnimation(pTarget->GetClump(), animGroup, ANIM_STD_IDLE); AsciiToUnicode("Idle animation playing", gUString); CMessages::AddMessage(gUString, 1000, 0); } else if (pad->GetDPadUpJustDown()) { animId--; if (animId < 0) { - animId = NUM_ANIMS - 1; + animId = ANIM_STD_NUM - 1; } PlayAnimation(pTarget->GetClump(), animGroup, (AnimationId)animId); @@ -334,7 +334,7 @@ CAnimViewer::Update(void) CMessages::AddMessage(gUString, 1000, 0); } else if (pad->GetDPadDownJustDown()) { - animId = (animId == (NUM_ANIMS - 1) ? 0 : animId + 1); + animId = (animId == (ANIM_STD_NUM - 1) ? 0 : animId + 1); PlayAnimation(pTarget->GetClump(), animGroup, (AnimationId)animId); sprintf(gString, "Current anim: %d", animId); diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index f43ff57a..2a32ed1f 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -1644,10 +1644,10 @@ CCam::Process_FollowPedWithMouse(const CVector &CameraTarget, float TargetOrient if(CamTargetEntity->m_rwObject){ // what's going on here? - if(RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_PUMP) || - RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_THROW) || - RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_THROWU) || - RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_WEAPON_START_THROW)){ + if(RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_STD_WEAPON_PUMP) || + RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_STD_WEAPON_THROW) || + RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_STD_THROW_UNDER) || + RpAnimBlendClumpGetAssociation(CamTargetEntity->GetClump(), ANIM_STD_START_THROW)){ CPed *player = FindPlayerPed(); float PlayerDist = (Source - player->GetPosition()).Magnitude(); if(PlayerDist < 2.75f) diff --git a/src/core/PlayerInfo.cpp b/src/core/PlayerInfo.cpp index 1af8f924..bd6feeed 100644 --- a/src/core/PlayerInfo.cpp +++ b/src/core/PlayerInfo.cpp @@ -155,8 +155,8 @@ CPlayerInfo::Process(void) m_pPed->SetPedState(PED_IDLE); m_pPed->SetMoveState(PEDMOVE_STILL); CPed::PedSetOutCarCB(0, m_pPed); - CAnimManager::BlendAnimation(m_pPed->GetClump(), m_pPed->m_animGroup, ANIM_IDLE_STANCE, 100.0f); - CAnimManager::BlendAnimation(m_pPed->GetClump(), ASSOCGRP_STD, ANIM_FALL_LAND, 100.0f); + CAnimManager::BlendAnimation(m_pPed->GetClump(), m_pPed->m_animGroup, ANIM_STD_IDLE, 100.0f); + CAnimManager::BlendAnimation(m_pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_LAND, 100.0f); m_pPed->SetPosition(sth); m_pPed->SetMoveState(PEDMOVE_STILL); m_pPed->m_vecMoveSpeed = veh->m_vecMoveSpeed; diff --git a/src/core/World.cpp b/src/core/World.cpp index 6ecc294a..78b0f8ee 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -2123,7 +2123,7 @@ CWorld::TriggerExplosionSectorList(CPtrList &list, const CVector &position, floa PEDPIECE_TORSO, direction); if(pPed->m_nPedState != PED_DIE) pPed->SetFall(2000, - (AnimationId)(direction + ANIM_KO_SKID_FRONT), 0); + (AnimationId)(direction + ANIM_STD_HIGHIMPACT_FRONT), 0); if(pCreator && pCreator->IsPed()) { eEventType eventType = EVENT_SHOOT_PED; if(pPed->m_nPedType == PEDTYPE_COP) eventType = EVENT_SHOOT_COP; diff --git a/src/peds/CopPed.cpp b/src/peds/CopPed.cpp index 29612ccf..44e3baf0 100644 --- a/src/peds/CopPed.cpp +++ b/src/peds/CopPed.cpp @@ -239,9 +239,9 @@ CCopPed::ArrestPlayer(void) if (suspect && (suspect->m_nPedState == PED_ARRESTED || suspect->DyingOrDead() || suspect->EnteringCar())) { - CAnimBlendAssociation *arrestAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ARREST_GUN); + CAnimBlendAssociation *arrestAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ARREST); if (!arrestAssoc || arrestAssoc->blendDelta < 0.0f) - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ARREST_GUN, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ARREST, 4.0f); CVector suspMidPos; suspect->m_pedIK.GetComponentPosition(suspMidPos, PED_MID); @@ -401,7 +401,7 @@ CCopPed::CopAI(void) if (m_nPedState != PED_ATTACK && m_nPedState != PED_FIGHT && !m_bZoneDisabled) { CVector targetDist = playerOrHisVeh->GetPosition() - GetPosition(); if (m_fDistanceToTarget > 30.0f) { - CAnimBlendAssociation* crouchShootAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RBLOCK_CSHOOT); + CAnimBlendAssociation* crouchShootAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RBLOCK_SHOOT); if (crouchShootAssoc) crouchShootAssoc->blendDelta = -1000.0f; diff --git a/src/peds/EmergencyPed.cpp b/src/peds/EmergencyPed.cpp index 9f87c12b..d8c8309e 100644 --- a/src/peds/EmergencyPed.cpp +++ b/src/peds/EmergencyPed.cpp @@ -317,7 +317,7 @@ CEmergencyPed::MedicAI(void) m_nEmergencyPedState = EMERGENCY_PED_STAND_STILL; } else { m_nEmergencyPedState = EMERGENCY_PED_FACE_TO_PATIENT; - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CPR, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_MEDIC_CPR, 4.0f); bIsDucking = true; } SetLookTimer(2000); diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index a9529d2d..5da41a9c 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -329,7 +329,7 @@ CPed::SetModelIndex(uint32 mi) SetPedStats(modelInfo->m_pedStatType); m_headingRate = m_pedStats->m_headingChangeRate; m_animGroup = (AssocGroupId) modelInfo->m_animGroup; - CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE); + CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE); (*RPANIMBLENDCLUMPDATA(m_rwObject))->velocity2d = &m_vecAnimMoveDelta; @@ -496,30 +496,30 @@ CPed::SetMoveAnim(void) CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_BLOCK); if (!animAssoc) { - CAnimBlendAssociation *fightIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + CAnimBlendAssociation *fightIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); animAssoc = fightIdleAssoc; if (fightIdleAssoc && m_nPedState == PED_FIGHT) return; if (fightIdleAssoc) { - CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); + CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); if (!idleAssoc || idleAssoc->blendDelta <= 0.0f) { animAssoc->flags |= ASSOC_DELETEFADEDOUT; - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_IDLE_STANCE, 8.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_IDLE, 8.0f); } } } if (!animAssoc) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); if (animAssoc) if (m_nWaitState == WAITSTATE_STUCK || m_nWaitState == WAITSTATE_FINISH_FLEE) return; if (animAssoc) { - CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); + CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); if (!idleAssoc || idleAssoc->blendDelta <= 0.0f) { animAssoc->flags |= ASSOC_DELETEFADEDOUT; - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_IDLE_STANCE, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_IDLE, 4.0f); } } } @@ -541,20 +541,20 @@ CPed::SetMoveAnim(void) switch (m_nMoveState) { case PEDMOVE_STILL: - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_IDLE_STANCE, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_IDLE, 4.0f); break; case PEDMOVE_WALK: - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_WALK, 1.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_WALK, 1.0f); break; case PEDMOVE_RUN: if (m_nPedState == PED_FLEE_ENTITY) { - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_RUN, 3.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_RUN, 3.0f); } else { - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_RUN, 1.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_RUN, 1.0f); } break; case PEDMOVE_SPRINT: - animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_SPRINT, 1.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), animGroupToUse, ANIM_STD_RUNFAST, 1.0f); break; default: break; @@ -562,12 +562,12 @@ CPed::SetMoveAnim(void) if (animAssoc) { if (m_leader) { - CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_WALK); + CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_STD_WALK); if (!walkAssoc) - walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_RUN); + walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_STD_RUN); if (!walkAssoc) - walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_SPRINT); + walkAssoc = RpAnimBlendClumpGetAssociation(m_leader->GetClump(), ANIM_STD_RUNFAST); if (walkAssoc) { animAssoc->speed = walkAssoc->speed; @@ -920,7 +920,7 @@ FinishFuckUCB(CAnimBlendAssociation *animAssoc, void *arg) { CPed *ped = (CPed*)arg; - if (animAssoc->animId == ANIM_FUCKU && ped->GetWeapon()->m_eWeaponType == WEAPONTYPE_UNARMED) + if (animAssoc->animId == ANIM_STD_PARTIAL_FUCKU && ped->GetWeapon()->m_eWeaponType == WEAPONTYPE_UNARMED) ped->RemoveWeaponModel(0); } @@ -939,7 +939,7 @@ CPed::MoveHeadToLook(void) if (!bShakeFist && GetWeapon()->m_eWeaponType == WEAPONTYPE_UNARMED) { - CAnimBlendAssociation *fuckUAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FUCKU); + CAnimBlendAssociation *fuckUAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PARTIAL_FUCKU); if (fuckUAssoc) { float animTime = fuckUAssoc->currentTime; @@ -984,7 +984,7 @@ CPed::MoveHeadToLook(void) bool notRocketLauncher = false; bool notTwoHanded = false; - AnimationId animToPlay = NUM_ANIMS; + AnimationId animToPlay = ANIM_STD_NUM; if (!GetWeapon()->IsType2Handed()) notTwoHanded = true; @@ -1002,24 +1002,24 @@ CPed::MoveHeadToLook(void) #ifndef FIX_BUGS if (m_pedStats->m_temper < 47) #endif - animToPlay = ANIM_FIGHT_PPUNCH; + animToPlay = ANIM_STD_PARTIAL_PUNCH; } else { - animToPlay = ANIM_FUCKU; + animToPlay = ANIM_STD_PARTIAL_FUCKU; } } else if (m_pedStats->m_temper > 49 || m_pLookTarget->GetModelIndex() == MI_POLICE) { - animToPlay = ANIM_FUCKU; + animToPlay = ANIM_STD_PARTIAL_FUCKU; } } else if (notRocketLauncher && (CGeneral::GetRandomNumber() & 1)) { - animToPlay = ANIM_FUCKU; + animToPlay = ANIM_STD_PARTIAL_FUCKU; } - if (animToPlay != NUM_ANIMS) { + if (animToPlay != ANIM_STD_NUM) { CAnimBlendAssociation *newAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay, 4.0f); if (newAssoc) { newAssoc->flags |= ASSOC_FADEOUTWHENDONE; newAssoc->flags |= ASSOC_DELETEFADEDOUT; - if (newAssoc->animId == ANIM_FUCKU) + if (newAssoc->animId == ANIM_STD_PARTIAL_FUCKU) newAssoc->SetDeleteCallback(FinishFuckUCB, this); } } @@ -1365,8 +1365,8 @@ CPed::CalculateNewVelocity(void) m_moved = CVector2D(-Sin(walkAngle), Cos(walkAngle)) * pedSpeed; } - CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); - CAnimBlendAssociation *fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); + CAnimBlendAssociation *fightAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); #ifdef VC_PED_PORTS if ((!idleAssoc || idleAssoc->blendAmount < 0.5f) && !fightAssoc && !bIsDucking) { #else @@ -1809,7 +1809,7 @@ CPed::ProcessControl(void) ++m_panicCounter; if (m_fHealth <= 1.0f && m_nPedState <= PED_STATES_NO_AI && !bIsInTheAir && !bIsLanding) - SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); bCollidedWithMyVehicle = false; @@ -1900,9 +1900,9 @@ CPed::ProcessControl(void) } else { if (m_nPedType != PEDTYPE_COP && neededTurn < DEGTORAD(15.0f) && m_nWaitState == WAITSTATE_FALSE) { if ((m_nStoredMoveState == PEDMOVE_RUN || m_nStoredMoveState == PEDMOVE_SPRINT) && m_vecDamageNormal.z < 0.3f) { - CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN); + CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUN); if (!runAssoc) - runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT); + runAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNFAST); if (runAssoc && runAssoc->blendAmount > 0.9f && runAssoc->IsRunning()) { SetWaitState(WAITSTATE_HITWALL, nil); @@ -2189,7 +2189,7 @@ CPed::ProcessControl(void) bIsStanding = false; CVector2D collidingEntMoveDir = -collidingVeh->m_vecMoveSpeed; int dir = GetLocalDirection(collidingEntMoveDir); - SetFall(1000, (AnimationId)(dir + ANIM_KO_SKID_FRONT), false); + SetFall(1000, (AnimationId)(dir + ANIM_STD_HIGHIMPACT_FRONT), false); float damage; if (collidingVeh->m_modelIndex == MI_TRAIN) { @@ -2321,7 +2321,7 @@ CPed::ProcessControl(void) bIsStanding = false; CVector2D collidingEntMoveDir = -collidingVeh->m_vecMoveSpeed; int dir = GetLocalDirection(collidingEntMoveDir); - SetFall(1000, (AnimationId)(dir + ANIM_KO_SKID_FRONT), false); + SetFall(1000, (AnimationId)(dir + ANIM_STD_HIGHIMPACT_FRONT), false); CPed *driver = collidingVeh->pDriver; float damage; @@ -2479,7 +2479,7 @@ CPed::ProcessControl(void) SetHeading(m_fRotationCur); if (m_nPedState != PED_FALL && !bIsPedDieAnimPlaying) { - SetFall(1000, ANIM_KO_SKID_BACK, true); + SetFall(1000, ANIM_STD_HIGHIMPACT_BACK, true); } bIsInTheAir = false; } else if (m_vecDamageNormal.z > 0.4f) { @@ -2534,10 +2534,10 @@ CPed::ProcessControl(void) m_fRotationCur = m_fRotationDest; SetHeading(m_fRotationCur); } - CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_JUMP_GLIDE); + CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_JUMP_GLIDE); if (!jumpAssoc) - jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_GLIDE); + jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_GLIDE); if (jumpAssoc) { jumpAssoc->blendDelta = -3.0f; @@ -2546,10 +2546,10 @@ CPed::ProcessControl(void) if (m_nPedState == PED_JUMP) m_nPedState = PED_IDLE; } else { - CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_JUMP_GLIDE); + CAnimBlendAssociation *jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_JUMP_GLIDE); if (!jumpAssoc) - jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_GLIDE); + jumpAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_GLIDE); if (jumpAssoc) { jumpAssoc->blendDelta = -3.0f; @@ -2675,7 +2675,7 @@ CPed::ProcessControl(void) Wait(); if (m_nPedState != PED_IDLE) { - CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_ARMED); + CAnimBlendAssociation *idleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_BIGGUN); if(idleAssoc) { idleAssoc->blendDelta = -8.0f; idleAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -2694,27 +2694,27 @@ CPed::ProcessControl(void) int16 padWalkX = pad->GetPedWalkLeftRight(); int16 padWalkY = pad->GetPedWalkUpDown(); if (Abs(padWalkX) > 0.0f || Abs(padWalkY) > 0.0f) { - if (vehAnim == ANIM_CAR_OPEN_LHS || vehAnim == ANIM_CAR_OPEN_RHS || vehAnim == ANIM_COACH_OPEN_L || vehAnim == ANIM_COACH_OPEN_R || - vehAnim == ANIM_VAN_OPEN_L || vehAnim == ANIM_VAN_OPEN) { + if (vehAnim == ANIM_STD_CAR_OPEN_DOOR_LHS || vehAnim == ANIM_STD_CAR_OPEN_DOOR_RHS || vehAnim == ANIM_STD_COACH_OPEN_LHS || vehAnim == ANIM_STD_COACH_OPEN_RHS || + vehAnim == ANIM_STD_VAN_OPEN_DOOR_REAR_LHS || vehAnim == ANIM_STD_VAN_OPEN_DOOR_REAR_RHS) { if (!m_pMyVehicle->pDriver) { cancelJack = false; bCancelEnteringCar = true; } else cancelJack = true; - } else if (vehAnim == ANIM_CAR_QJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f) { + } else if (vehAnim == ANIM_STD_QUICKJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f) { cancelJack = true; - } else if (vehAnim == ANIM_CAR_PULLOUT_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_RHS || vehAnim == ANIM_CAR_PULLOUT_RHS) { + } else if (vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_RHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_RHS) { bCancelEnteringCar = true; cancelJack = false; } } - if (cancelJack && vehAnim == ANIM_CAR_QJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f && m_pVehicleAnim->GetTimeLeft() < 0.78f) { + if (cancelJack && vehAnim == ANIM_STD_QUICKJACK && m_pVehicleAnim->GetTimeLeft() > 0.75f && m_pVehicleAnim->GetTimeLeft() < 0.78f) { cancelJack = false; QuitEnteringCar(); RestorePreviousObjective(); } - if (cancelJack && (vehAnim == ANIM_CAR_PULLOUT_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_LHS || vehAnim == ANIM_CAR_PULLOUT_LOW_RHS || vehAnim == ANIM_CAR_PULLOUT_RHS)) { + if (cancelJack && (vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_LHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_LO_RHS || vehAnim == ANIM_STD_CAR_PULL_OUT_PED_RHS)) { cancelJack = false; bCancelEnteringCar = true; } @@ -2874,25 +2874,25 @@ CPed::ProcessControl(void) CAnimBlendAssociation *lbAssoc; CAnimBlendAssociation *sitAssoc; if (m_pMyVehicle->bLowVehicle) { - sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSIT); + sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_LO); if (!sitAssoc || sitAssoc->blendAmount < 1.0f) { break; } - lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_LOW_L); + lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_LEFT_LO); lbAssoc = nil; - rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_LOW_R); + rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_RIGHT_LO); } else { - sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SIT); + sitAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT); if (!sitAssoc || sitAssoc->blendAmount < 1.0f) { break; } - lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_L); - rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_R); - lbAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LB); + lDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_LEFT); + rDriveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_RIGHT); + lbAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_LOOKBEHIND); if (lbAssoc && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON @@ -2901,10 +2901,10 @@ CPed::ProcessControl(void) } } - CAnimBlendAssociation *driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_L); + CAnimBlendAssociation *driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT); if (!driveByAssoc) - driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_R); + driveByAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT); if (m_pMyVehicle->bLowVehicle || m_pMyVehicle->m_fGasPedal >= 0.0f || driveByAssoc) { if (steerAngle == 0.0f || driveByAssoc) { @@ -2920,9 +2920,9 @@ CPed::ProcessControl(void) if (rDriveAssoc) rDriveAssoc->blendAmount = clamp(steerAngle * -100.0f / 61.0f, 0.0f, 1.0f); else if (m_pMyVehicle->bLowVehicle) - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_LOW_R); + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_RIGHT_LO); else - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_R); + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_RIGHT); } else { if (rDriveAssoc) @@ -2931,9 +2931,9 @@ CPed::ProcessControl(void) if (lDriveAssoc) lDriveAssoc->blendAmount = clamp(steerAngle * 100.0f / 61.0f, 0.0f, 1.0f); else if (m_pMyVehicle->bLowVehicle) - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_LOW_L); + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_LEFT_LO); else - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_L); + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_LEFT); } if (lbAssoc) @@ -2943,7 +2943,7 @@ CPed::ProcessControl(void) if ((TheCamera.Cams[TheCamera.ActiveCam].Mode != CCam::MODE_1STPERSON || TheCamera.Cams[TheCamera.ActiveCam].DirectionWasLooking != LOOKING_LEFT) && (!lbAssoc || lbAssoc->blendAmount < 1.0f)) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_LB, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_LOOKBEHIND, 4.0f); } } break; @@ -2953,12 +2953,12 @@ CPed::ProcessControl(void) break; case PED_HANDS_UP: if (m_pedStats->m_temper <= 50) { - if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSCOWER)) { - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSCOWER); + if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSCOWER)) { + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSCOWER); Say(SOUND_PED_HANDS_COWER); } - } else if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSUP)) { - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSUP); + } else if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSUP)) { + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSUP); Say(SOUND_PED_HANDS_UP); } break; @@ -3150,7 +3150,7 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints) upperSpeedLimit *= 2.0f; lowerSpeedLimit *= 1.5f; } - CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL); + CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL); if (!bWasStanding && speed > upperSpeedLimit && (/*!bPushedAlongByCar ||*/ m_vecMoveSpeed.z < lowerSpeedLimit) && m_pCollidingEntity != collidingEnt) { @@ -3174,7 +3174,7 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints) } #else float speedSqr = 0.0f; - CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL); + CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL); if (!bWasStanding && (m_vecMoveSpeed.z < -0.25f || (speedSqr = m_vecMoveSpeed.MagnitudeSqr()) > sq(0.5f))) { if (speedSqr == 0.0f) speedSqr = sq(m_vecMoveSpeed.z); @@ -3326,10 +3326,10 @@ CPed::PlayFootSteps(void) if ( IsPlayer() ) { - runStopAsoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP); + runStopAsoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2); if ( runStopAsoc == NULL ) - runStopAsoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R); + runStopAsoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2); } if ( runStopAsoc != NULL && runStopAsoc->blendAmount > 0.1f ) @@ -4158,7 +4158,7 @@ CPed::PedSetOutCarCB(CAnimBlendAssociation *animAssoc, void *arg) #ifdef VC_PED_PORTS else if (ped->m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE) { ped->m_fHealth = 0.0f; - ped->SetDie(ANIM_FLOOR_HIT, 4.0f, 0.5f); + ped->SetDie(ANIM_STD_HIT_FLOOR, 4.0f, 0.5f); } #endif @@ -4286,7 +4286,7 @@ CPed::PedSetOutCarCB(CAnimBlendAssociation *animAssoc, void *arg) ped->bOnBoat = false; if (ped->bBusJacked) { - ped->SetFall(1500, ANIM_KO_SKID_BACK, false); + ped->SetFall(1500, ANIM_STD_HIGHIMPACT_BACK, false); ped->bBusJacked = false; } ped->m_nStoredMoveState = PEDMOVE_NONE; @@ -4310,7 +4310,7 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg) CVehicle *vehicle; CPed *ped = (CPed*)arg; - quickJackedAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_CAR_QJACKED); + quickJackedAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_STD_QUICKJACKED); if (ped->m_nPedState != PED_ARRESTED) { ped->m_nLastPedState = PED_NONE; if (dragAssoc) @@ -4343,7 +4343,7 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg) if (ped->m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE) { dragAssoc->SetDeleteCallback(PedSetDraggedOutCarPositionCB, ped); ped->m_fHealth = 0.0f; - ped->SetDie(ANIM_FLOOR_HIT, 1000.0f, 0.5f); + ped->SetDie(ANIM_STD_HIT_FLOOR, 1000.0f, 0.5f); return; } #endif @@ -4353,7 +4353,7 @@ CPed::PedSetDraggedOutCarCB(CAnimBlendAssociation *dragAssoc, void *arg) } else { dragAssoc->SetDeleteCallback(PedSetDraggedOutCarPositionCB, ped); if (ped->CanSetPedState()) - CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_GETUP1, 1000.0f); + CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP, 1000.0f); } ped->ReplaceWeaponWhenExitingVehicle(); @@ -4588,14 +4588,14 @@ CPed::PedSetInCarCB(CAnimBlendAssociation *animAssoc, void *arg) if (veh->pDriver == ped) { if (veh->bLowVehicle) { - ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_LSIT, 100.0f); + ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_LO, 100.0f); } else { - ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); + ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f); } } else if (veh->bLowVehicle) { - ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_SITPLO, 100.0f); + ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_P_LO, 100.0f); } else { - ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_SITP, 100.0f); + ped->m_pVehicleAnim = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_P, 100.0f); } ped->StopNonPartialAnims(); @@ -4839,7 +4839,7 @@ CPed::PreRender(void) if (Abs(speed.x) <= 0.05f && Abs(speed.y) <= 0.05f) { if (!OnGround() && m_nPedState != PED_ATTACK && m_nPedState != PED_FIGHT) { - if (!IsPedHeadAbovePos(0.3f) || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED)) { + if (!IsPedHeadAbovePos(0.3f) || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED)) { doSplashUp = false; } } else @@ -4973,8 +4973,8 @@ CPed::Idle(void) } } - CAnimBlendAssociation *armedIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_ARMED); - CAnimBlendAssociation *unarmedIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); + CAnimBlendAssociation *armedIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_BIGGUN); + CAnimBlendAssociation *unarmedIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); int waitTime; if (m_nMoveState == PEDMOVE_STILL) { @@ -4989,7 +4989,7 @@ CPed::Idle(void) m_moved = CVector2D(0.0f, 0.0f); return; } - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_ARMED, 3.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_BIGGUN, 3.0f); waitTime = CGeneral::GetRandomNumberInRange(4000, 7500); } else { armedIdleAssoc->blendDelta = -2.0f; @@ -5113,7 +5113,7 @@ CPed::SetInTheAir(void) return; bIsInTheAir = true; - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_GLIDE, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_GLIDE, 4.0f); if (m_nPedState == PED_ATTACK) { ClearAttack(); @@ -5144,9 +5144,9 @@ CPed::InTheAir(void) ) SetLanding(); } else { - if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL)) { + if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL)) { if (m_vecMoveSpeed.z < -0.1f) - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_FALL, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL, 4.0f); } } } @@ -5159,19 +5159,19 @@ CPed::SetLanding(void) if (DyingOrDead()) return; - CAnimBlendAssociation *fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_FALL); + CAnimBlendAssociation *fallAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL); CAnimBlendAssociation *landAssoc; RpAnimBlendClumpSetBlendDeltas(GetClump(), ASSOC_PARTIAL, -1000.0f); if (fallAssoc) { - landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_COLLAPSE); + landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_COLLAPSE); DMAudio.PlayOneShot(m_audioEntityId, SOUND_FALL_COLLAPSE, 1.0f); if (IsPlayer()) Say(SOUND_PED_LAND); } else { - landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FALL_LAND); + landAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FALL_LAND); DMAudio.PlayOneShot(m_audioEntityId, SOUND_FALL_LAND, 1.0f); } @@ -5222,25 +5222,25 @@ CPed::SetGetUp(void) bGetUpAnimStarted = true; m_pCollidingEntity = nil; bKnockedUpIntoAir = false; - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNFAST); if (animAssoc) { - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN)) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_RUN, 8.0f); + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUN)) { + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_RUN, 8.0f); } else { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f); } animAssoc->flags |= ASSOC_DELETEFADEDOUT; } if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL)) - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_GETUP_FRONT, 1000.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP_FRONT, 1000.0f); else - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_GETUP1, 1000.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GET_UP, 1000.0f); animAssoc->SetFinishCallback(PedGetupCB,this); } else { m_fHealth = 0.0f; - SetDie(NUM_ANIMS, 4.0f, 0.0f); + SetDie(ANIM_STD_NUM, 4.0f, 0.0f); } } @@ -6087,7 +6087,7 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType) if (neededTurn <= DEGTORAD(90.0f) || veh->GetModelIndex() == MI_RCBANDIT || vehPressedHorn || animType != 0) { SetLookFlag(veh, true); if ((CGeneral::GetRandomNumber() & 1) && veh->GetModelIndex() != MI_RCBANDIT && animType == 0) { - stepAnim = ANIM_IDLE_TAXI; + stepAnim = ANIM_STD_HAILTAXI; } else { float vehDirection = CGeneral::GetRadianAngleBetweenPoints( @@ -6110,11 +6110,11 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType) else angleToFace = vehDirection + HALFPI; - stepAnim = NUM_ANIMS; + stepAnim = ANIM_STD_NUM; if (animType == 0 || animType == 1) - stepAnim = ANIM_EV_STEP; + stepAnim = ANIM_STD_EVADE_STEP; else if (animType == 2) - stepAnim = ANIM_HANDSCOWER; + stepAnim = ANIM_STD_HANDSCOWER; } if (!RpAnimBlendClumpGetAssociation(GetClump(), stepAnim)) { CAnimBlendAssociation *stepAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, stepAnim, 8.0f); @@ -6216,11 +6216,11 @@ CPed::SetEvasiveDive(CPhysical *reason, uint8 onlyRandomJump) ClearLookFlag(); ClearAimFlag(); SetLookFlag(reason, true); - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HANDSUP); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HANDSUP); if (animAssoc) return; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSUP, 8.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSUP, 8.0f); animAssoc->flags &= ~ASSOC_DELETEFADEDOUT; animAssoc->SetFinishCallback(PedEvadeCB, this); SetStoredState(); @@ -6231,7 +6231,7 @@ CPed::SetEvasiveDive(CPhysical *reason, uint8 onlyRandomJump) ClearAimFlag(); SetStoredState(); SetPedState(PED_DIVE_AWAY); - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_EV_DIVE, 8.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_EVADE_DIVE, 8.0f); animAssoc->SetFinishCallback(PedEvadeCB, this); } @@ -6262,7 +6262,7 @@ CPed::PedEvadeCB(CAnimBlendAssociation* animAssoc, void* arg) if (ped->m_nPedState == PED_DIVE_AWAY || ped->m_nPedState == PED_STEP_AWAY) ped->RestorePreviousState(); - } else if (animAssoc->animId == ANIM_EV_DIVE) { + } else if (animAssoc->animId == ANIM_STD_EVADE_DIVE) { ped->bUpdateAnimHeading = true; ped->ClearLookFlag(); if (ped->m_nPedState == PED_DIVE_AWAY) @@ -6320,7 +6320,7 @@ CPed::SetDie(AnimationId animId, float delta, float speed) } SetPedState(PED_DIE); - if (animId == NUM_ANIMS) { + if (animId == ANIM_STD_NUM) { bIsPedDieAnimPlaying = false; } else { CAnimBlendAssociation *dieAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animId, delta); @@ -6429,7 +6429,7 @@ CPed::Chat(void) } if (bIsTalking) { if (CGeneral::GetRandomNumber() < 512) { - CAnimBlendAssociation *chatAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT); + CAnimBlendAssociation *chatAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT); if (chatAssoc) { chatAssoc->blendDelta = -4.0f; chatAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -6441,10 +6441,10 @@ CPed::Chat(void) } else { if (CGeneral::GetRandomNumber() < 20 && !RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_IDLE)) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_XPRESS_SCRATCH, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_XPRESS_SCRATCH, 4.0f); } if (!bIsTalking && !RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_IDLE)) { - CAnimBlendAssociation *chatAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_CHAT, 4.0f); + CAnimBlendAssociation *chatAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CHAT, 4.0f); float chatTime = CGeneral::GetRandomNumberInRange(0.0f, 3.0f); chatAssoc->SetCurrentTime(chatTime); @@ -6461,7 +6461,7 @@ CPed::Chat(void) void CPed::ClearChat(void) { - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -6477,10 +6477,10 @@ ReportPhonePickUpCB(CAnimBlendAssociation* assoc, void* arg) { CPed* ped = (CPed*)arg; ped->m_nMoveState = PEDMOVE_STILL; - CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 8.0f); + CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE, 8.0f); if (assoc->blendAmount > 0.5f && ped) { - CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_PHONE_TALK, 8.0f); + CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_TALK, 8.0f); } } @@ -6524,7 +6524,7 @@ CPed::FacePhone(void) ClearLookFlag(); SetIdle(); m_phoneTalkTimer = CTimer::GetTimeInMilliseconds() + 10000; - CAnimBlendAssociation* assoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_PHONE_IN, 4.0f); + CAnimBlendAssociation* assoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_IN, 4.0f); assoc->SetFinishCallback(ReportPhonePickUpCB, this); return true; } @@ -6579,9 +6579,9 @@ CPed::MakePhonecall(void) return false; #ifdef PEDS_REPORT_CRIMES_ON_PHONE - CAnimBlendAssociation* talkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_PHONE_TALK); + CAnimBlendAssociation* talkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_PHONE_TALK); if (talkAssoc && talkAssoc->blendAmount > 0.5f) { - CAnimBlendAssociation* endAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_PHONE_OUT, 8.0f); + CAnimBlendAssociation* endAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PHONE_OUT, 8.0f); endAssoc->flags &= ~ASSOC_DELETEFADEDOUT; endAssoc->SetFinishCallback(ReportPhonePutDownCB, this); } @@ -6911,18 +6911,18 @@ CPed::SetPedPositionInCar(void) if (bChangedSeat) { bool notYet = false; - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_GETIN_LHS) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_GETIN_LOW_LHS) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_CLOSEDOOR_LHS) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_CLOSEDOOR_LOW_LHS) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SHUFFLE_RHS) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSHUFFLE_RHS) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_CLOSE_L) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_CLOSE) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_GETIN_L) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_VAN_GETIN) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_COACH_IN_L) - || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_COACH_IN_R)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_GET_IN_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_GET_IN_LO_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_LO_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SHUFFLE_RHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SHUFFLE_LO_RHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_GET_IN_REAR_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_VAN_GET_IN_REAR_RHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_COACH_GET_IN_LHS) + || RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_COACH_GET_IN_RHS)) { notYet = true; } if (notYet) { @@ -7175,7 +7175,7 @@ CPed::LookForInterestingNodes(void) void CPed::SetWaitState(eWaitState state, void *time) { - AnimationId waitAnim = NUM_ANIMS; + AnimationId waitAnim = ANIM_STD_NUM; CAnimBlendAssociation *animAssoc; if (!IsPedInControl()) @@ -7191,10 +7191,10 @@ CPed::SetWaitState(eWaitState state, void *time) break; case WAITSTATE_CROSS_ROAD: m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 1000; - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_HBHB, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_HBHB, 4.0f); break; case WAITSTATE_CROSS_ROAD_LOOK: - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ROAD_CROSS, 8.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROADCROSS, 8.0f); if (time) m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time; @@ -7210,7 +7210,7 @@ CPed::SetWaitState(eWaitState state, void *time) case WAITSTATE_DOUBLEBACK: m_headingRate = 0.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 3500; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_HBHB, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_HBHB, 4.0f); #ifdef FIX_BUGS animAssoc->SetFinishCallback(RestoreHeadingRateCB, this); #endif @@ -7218,7 +7218,7 @@ CPed::SetWaitState(eWaitState state, void *time) case WAITSTATE_HITWALL: m_headingRate = 2.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HIT_WALL, 16.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_WALL, 16.0f); animAssoc->flags |= ASSOC_DELETEFADEDOUT; animAssoc->flags |= ASSOC_FADEOUTWHENDONE; animAssoc->SetDeleteCallback(FinishedWaitCB, this); @@ -7232,14 +7232,14 @@ CPed::SetWaitState(eWaitState state, void *time) case WAITSTATE_TURN180: m_headingRate = 0.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_TURN_180, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_TURN180, 4.0f); animAssoc->SetFinishCallback(FinishedWaitCB, this); animAssoc->SetDeleteCallback(RestoreHeadingRateCB, this); break; case WAITSTATE_SURPRISE: m_headingRate = 0.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 2000; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HIT_WALL, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_WALL, 4.0f); animAssoc->SetFinishCallback(FinishedWaitCB, this); break; case WAITSTATE_STUCK: @@ -7247,7 +7247,7 @@ CPed::SetWaitState(eWaitState state, void *time) SetMoveAnim(); m_headingRate = 0.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f); #ifdef FIX_BUGS animAssoc->SetFinishCallback(RestoreHeadingRateCB, this); #endif @@ -7263,20 +7263,20 @@ CPed::SetWaitState(eWaitState state, void *time) SetMoveAnim(); m_headingRate = 0.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_HBHB, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_HBHB, 4.0f); #ifdef FIX_BUGS animAssoc->SetFinishCallback(RestoreHeadingRateCB, this); #endif break; case WAITSTATE_PLAYANIM_COWER: - waitAnim = ANIM_HANDSCOWER; + waitAnim = ANIM_STD_HANDSCOWER; case WAITSTATE_PLAYANIM_HANDSUP: - if (waitAnim == NUM_ANIMS) - waitAnim = ANIM_HANDSUP; + if (waitAnim == ANIM_STD_NUM) + waitAnim = ANIM_STD_HANDSUP; case WAITSTATE_PLAYANIM_HANDSCOWER: - if (waitAnim == NUM_ANIMS) - waitAnim = ANIM_HANDSCOWER; + if (waitAnim == ANIM_STD_NUM) + waitAnim = ANIM_STD_HANDSCOWER; m_headingRate = 0.0f; if (time) m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time; @@ -7287,13 +7287,13 @@ CPed::SetWaitState(eWaitState state, void *time) animAssoc->SetDeleteCallback(FinishedWaitCB, this); break; case WAITSTATE_PLAYANIM_DUCK: - waitAnim = ANIM_DUCK_DOWN; + waitAnim = ANIM_STD_DUCK_DOWN; case WAITSTATE_PLAYANIM_TAXI: - if (waitAnim == NUM_ANIMS) - waitAnim = ANIM_IDLE_TAXI; + if (waitAnim == ANIM_STD_NUM) + waitAnim = ANIM_STD_HAILTAXI; case WAITSTATE_PLAYANIM_CHAT: - if (waitAnim == NUM_ANIMS) - waitAnim = ANIM_IDLE_CHAT; + if (waitAnim == ANIM_STD_NUM) + waitAnim = ANIM_STD_CHAT; if (time) m_nWaitTimer = CTimer::GetTimeInMilliseconds() + *(int*)time; else @@ -7309,7 +7309,7 @@ CPed::SetWaitState(eWaitState state, void *time) SetMoveAnim(); m_headingRate = 0.0f; m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 2500; - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f); #ifdef FIX_BUGS animAssoc->SetFinishCallback(RestoreHeadingRateCB, this); #endif @@ -7325,7 +7325,7 @@ CPed::SetWaitState(eWaitState state, void *time) void CPed::Wait(void) { - AnimationId mustHaveAnim = NUM_ANIMS; + AnimationId mustHaveAnim = ANIM_STD_NUM; CAnimBlendAssociation *animAssoc; CPed *pedWeLook; @@ -7353,7 +7353,7 @@ CPed::Wait(void) else SetWaitState(WAITSTATE_CROSS_ROAD_LOOK, nil); - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -7364,7 +7364,7 @@ CPed::Wait(void) case WAITSTATE_CROSS_ROAD_LOOK: if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { m_nWaitState = WAITSTATE_FALSE; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -7377,7 +7377,7 @@ CPed::Wait(void) uint32 timeLeft = m_nWaitTimer - CTimer::GetTimeInMilliseconds(); if (timeLeft < 2500 && timeLeft > 2000) { m_nWaitTimer -= 500; - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_XPRESS_SCRATCH, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_XPRESS_SCRATCH, 4.0f); } } else { m_nWaitState = WAITSTATE_FALSE; @@ -7411,8 +7411,8 @@ CPed::Wait(void) case WAITSTATE_SURPRISE: if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HIT_WALL)) { - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_XPRESS_SCRATCH, 4.0f); + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HIT_WALL)) { + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_XPRESS_SCRATCH, 4.0f); animAssoc->SetFinishCallback(FinishedWaitCB, this); m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 5000; } else { @@ -7425,14 +7425,14 @@ CPed::Wait(void) if (CTimer::GetTimeInMilliseconds() <= m_nWaitTimer) break; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_TURN_180); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_TURN180); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS); if (animAssoc) { if (animAssoc->IsPartial()) { @@ -7440,10 +7440,10 @@ CPed::Wait(void) animAssoc->flags |= ASSOC_DELETEFADEDOUT; } else { animAssoc->flags |= ASSOC_DELETEFADEDOUT; - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f); } - if (animAssoc->animId == ANIM_TURN_180) { + if (animAssoc->animId == ANIM_STD_TURN180) { m_fRotationCur = CGeneral::LimitRadianAngle(PI + m_fRotationCur); m_nWaitState = WAITSTATE_FALSE; SetMoveState(PEDMOVE_WALK); @@ -7457,16 +7457,16 @@ CPed::Wait(void) switch (CGeneral::GetRandomNumber() & 3) { case 0: - animToPlay = ANIM_ROAD_CROSS; + animToPlay = ANIM_STD_ROADCROSS; break; case 1: - animToPlay = ANIM_IDLE_TIRED; + animToPlay = ANIM_STD_IDLE_TIRED; break; case 2: - animToPlay = ANIM_XPRESS_SCRATCH; + animToPlay = ANIM_STD_XPRESS_SCRATCH; break; case 3: - animToPlay = ANIM_TURN_180; + animToPlay = ANIM_STD_TURN180; break; default: break; @@ -7474,7 +7474,7 @@ CPed::Wait(void) animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay, 4.0f); - if (animToPlay == ANIM_TURN_180) + if (animToPlay == ANIM_STD_TURN180) animAssoc->SetFinishCallback(FinishedWaitCB, this); m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(1500, 5000); @@ -7483,7 +7483,7 @@ CPed::Wait(void) case WAITSTATE_LOOK_ABOUT: if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { m_nWaitState = WAITSTATE_FALSE; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -7492,11 +7492,11 @@ CPed::Wait(void) break; case WAITSTATE_PLAYANIM_HANDSUP: - mustHaveAnim = ANIM_HANDSUP; + mustHaveAnim = ANIM_STD_HANDSUP; case WAITSTATE_PLAYANIM_HANDSCOWER: - if (mustHaveAnim == NUM_ANIMS) - mustHaveAnim = ANIM_HANDSCOWER; + if (mustHaveAnim == ANIM_STD_NUM) + mustHaveAnim = ANIM_STD_HANDSCOWER; animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), mustHaveAnim); pedWeLook = (CPed*) m_pLookTarget; @@ -7564,19 +7564,19 @@ CPed::Wait(void) } break; case WAITSTATE_PLAYANIM_COWER: - mustHaveAnim = ANIM_HANDSCOWER; + mustHaveAnim = ANIM_STD_HANDSCOWER; case WAITSTATE_PLAYANIM_DUCK: - if (mustHaveAnim == NUM_ANIMS) - mustHaveAnim = ANIM_DUCK_DOWN; + if (mustHaveAnim == ANIM_STD_NUM) + mustHaveAnim = ANIM_STD_DUCK_DOWN; case WAITSTATE_PLAYANIM_TAXI: - if (mustHaveAnim == NUM_ANIMS) - mustHaveAnim = ANIM_IDLE_TAXI; + if (mustHaveAnim == ANIM_STD_NUM) + mustHaveAnim = ANIM_STD_HAILTAXI; case WAITSTATE_PLAYANIM_CHAT: - if (mustHaveAnim == NUM_ANIMS) - mustHaveAnim = ANIM_IDLE_CHAT; + if (mustHaveAnim == ANIM_STD_NUM) + mustHaveAnim = ANIM_STD_CHAT; if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), mustHaveAnim); @@ -7602,11 +7602,11 @@ CPed::Wait(void) break; case WAITSTATE_FINISH_FLEE: - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); if (animAssoc) { if (CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { animAssoc->flags |= ASSOC_DELETEFADEDOUT; - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f); int timer = 2000; m_nWaitState = WAITSTATE_FALSE; SetWaitState(WAITSTATE_CROSS_ROAD_LOOK, &timer); @@ -7686,7 +7686,7 @@ CPed::SetSolicit(uint32 time) m_chatTimer = CTimer::GetTimeInMilliseconds() + time; if(!m_carInObjective->bIsVan && !m_carInObjective->bIsBus) - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_HOOKERTALK, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_HOOKERTALK, 4.0f); SetPedState(PED_SOLICIT); } @@ -7713,7 +7713,7 @@ CPed::Solicit(void) if ((GetPosition() - doorPos).MagnitudeSqr() <= 1.0f) return; - CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_HOOKERTALK); + CAnimBlendAssociation *talkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_HOOKERTALK); if (talkAssoc) { talkAssoc->blendDelta = -1000.0f; talkAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -7959,12 +7959,12 @@ CPed::SetJump(void) { if (!bInVehicle && #if defined VC_PED_PORTS || defined FIX_BUGS - m_nPedState != PED_JUMP && !RpAnimBlendClumpGetAssociation(GetClump(), ANIM_JUMP_LAUNCH) && + m_nPedState != PED_JUMP && !RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_JUMP_LAUNCH) && #endif (m_nSurfaceTouched != SURFACE_STEEP_CLIFF || DotProduct(GetForward(), m_vecDamageNormal) >= 0.0f)) { SetStoredState(); SetPedState(PED_JUMP); - CAnimBlendAssociation *jumpAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_JUMP_LAUNCH, 8.0f); + CAnimBlendAssociation *jumpAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_JUMP_LAUNCH, 8.0f); jumpAssoc->SetFinishCallback(FinishLaunchCB, this); m_fRotationDest = m_fRotationCur; } @@ -7993,7 +7993,7 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg) animAssoc->flags |= ASSOC_DELETEFADEDOUT; // ANIM_HIT_WALL in VC (which makes more sense) - CAnimBlendAssociation *handsCoverAssoc = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_HANDSCOWER, 8.0f); + CAnimBlendAssociation *handsCoverAssoc = CAnimManager::BlendAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSCOWER, 8.0f); handsCoverAssoc->flags &= ~ASSOC_FADEOUTWHENDONE; handsCoverAssoc->SetFinishCallback(FinishHitHeadCB, ped); ped->bIsLanding = true; @@ -8001,12 +8001,12 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg) } float velocityFromAnim = 0.1f; - CAnimBlendAssociation *sprintAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_SPRINT); + CAnimBlendAssociation *sprintAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_STD_RUNFAST); if (sprintAssoc) { velocityFromAnim = 0.05f * sprintAssoc->blendAmount + 0.17f; } else { - CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_RUN); + CAnimBlendAssociation *runAssoc = RpAnimBlendClumpGetAssociation(ped->GetClump(), ANIM_STD_RUN); if (runAssoc) { velocityFromAnim = 0.07f * runAssoc->blendAmount + 0.1f; } @@ -8050,7 +8050,7 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg) ped->bIsStanding = false; ped->bIsInTheAir = true; animAssoc->blendDelta = -1000.0f; - CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_JUMP_GLIDE); + CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_JUMP_GLIDE); if (ped->bDoBloodyFootprints) { CVector bloodPos(0.0f, 0.0f, 0.0f); @@ -8318,7 +8318,7 @@ CPed::WarpPedIntoCar(CVehicle *car) #else if (car->IsBoat()) { #ifndef FIX_BUGS - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE, 100.0f); #else m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, car->GetDriverAnim(), 100.0f); #endif @@ -8329,9 +8329,9 @@ CPed::WarpPedIntoCar(CVehicle *car) RemoveWeaponWhenEnteringVehicle(); if (car->bLowVehicle) - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_LSIT, 100.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT_LO, 100.0f); else - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f); } #endif diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp index 089c8d9d..56c9429a 100644 --- a/src/peds/PedAI.cpp +++ b/src/peds/PedAI.cpp @@ -1121,7 +1121,7 @@ CPed::ProcessObjective(void) if (m_attackTimer < CTimer::GetTimeInMilliseconds() && distWithTargetSc < wepRange && m_pedInObjective->m_nPedState != PED_GETUP && m_pedInObjective->m_nPedState != PED_DRAG_FROM_CAR) { if (bIsDucking) { - CAnimBlendAssociation *duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN); + CAnimBlendAssociation *duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN); if (duckAnim) { duckAnim->blendDelta = -2.0f; break; @@ -1202,14 +1202,14 @@ CPed::ProcessObjective(void) // This is weird... if (bNotAllowedToDuck && bKindaStayInSamePlace) { if (!bIsDucking) { - CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN); + CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN); if (!duckAnim || duckAnim->blendDelta < 0.0f) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DUCK_DOWN, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_DOWN, 4.0f); bIsDucking = true; } break; } else { - CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN); + CAnimBlendAssociation* duckAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN); if (!duckAnim || duckAnim->blendDelta < 0.0f) { bIsDucking = false; } else { @@ -1701,9 +1701,9 @@ CPed::ProcessObjective(void) } break; case OBJECTIVE_HAIL_TAXI: - if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TAXI) && CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { + if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HAILTAXI) && CTimer::GetTimeInMilliseconds() > m_nWaitTimer) { Say(SOUND_PED_TAXI_WAIT); - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TAXI, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HAILTAXI, 4.0f); m_nWaitTimer = CTimer::GetTimeInMilliseconds() + 2000; } break; @@ -1813,7 +1813,7 @@ CPed::ProcessObjective(void) float distWithTargetScSqr = distWithTarget.MagnitudeSqr(); if (distWithTargetScSqr <= sq(10.0f)) { if (distWithTargetScSqr <= sq(1.4f)) { - CAnimBlendAssociation *reloadAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_AK_RELOAD); + CAnimBlendAssociation *reloadAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_AK_RELOAD); m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints( m_pedInObjective->GetPosition().x, m_pedInObjective->GetPosition().y, GetPosition().x, GetPosition().y); @@ -1821,7 +1821,7 @@ CPed::ProcessObjective(void) if (reloadAssoc || !m_pedInObjective->IsPedShootable()) { if (reloadAssoc && (!reloadAssoc->IsRunning() || reloadAssoc->currentTime / reloadAssoc->hierarchy->totalLength > 0.8f)) { - CAnimBlendAssociation *punchAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_PPUNCH, 8.0f); + CAnimBlendAssociation *punchAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PARTIAL_PUNCH, 8.0f); punchAssoc->flags |= ASSOC_DELETEFADEDOUT; punchAssoc->flags |= ASSOC_FADEOUTWHENDONE; CVector2D offset(distWithTarget.x, distWithTarget.y); @@ -1850,13 +1850,13 @@ CPed::ProcessObjective(void) if (weaponType != WEAPONTYPE_UNARMED && weaponType != WEAPONTYPE_BASEBALLBAT) SetCurrentWeapon(WEAPONTYPE_UNARMED); - CAnimBlendAssociation *newReloadAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_AK_RELOAD, 8.0f); + CAnimBlendAssociation *newReloadAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_AK_RELOAD, 8.0f); newReloadAssoc->flags |= ASSOC_DELETEFADEDOUT; newReloadAssoc->flags |= ASSOC_FADEOUTWHENDONE; } } else { SetSeek(m_pedInObjective, 1.0f); - CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK); + CAnimBlendAssociation *walkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_WALK); if (walkAssoc) walkAssoc->speed = 1.3f; @@ -2256,26 +2256,26 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg) } if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) { if (itsVan) { - enterAnim = ANIM_VAN_GETIN; + enterAnim = ANIM_STD_VAN_GET_IN_REAR_RHS; } else if (itsBus) { - enterAnim = ANIM_COACH_IN_R; + enterAnim = ANIM_STD_COACH_GET_IN_RHS; #ifdef FIX_BUGS } else if (itsLow) { - enterAnim = ANIM_CAR_GETIN_LOW_RHS; + enterAnim = ANIM_STD_CAR_GET_IN_LO_RHS; #endif } else { - enterAnim = ANIM_CAR_GETIN_RHS; + enterAnim = ANIM_STD_CAR_GET_IN_RHS; } } else if (itsVan) { - enterAnim = ANIM_VAN_GETIN_L; + enterAnim = ANIM_STD_VAN_GET_IN_REAR_LHS; } else if (itsBus) { - enterAnim = ANIM_COACH_IN_L; + enterAnim = ANIM_STD_COACH_GET_IN_LHS; #ifdef FIX_BUGS } else if (itsLow) { - enterAnim = ANIM_CAR_GETIN_LOW_LHS; + enterAnim = ANIM_STD_CAR_GET_IN_LO_LHS; #endif } else { - enterAnim = ANIM_CAR_GETIN_LHS; + enterAnim = ANIM_STD_CAR_GET_IN_LHS; } ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, enterAnim); ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped); @@ -2285,16 +2285,16 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg) veh->AutoPilot.m_nCruiseSpeed = 0; if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) { if (itsVan) { - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_VAN_OPEN); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_VAN_OPEN_DOOR_REAR_RHS); } else if (itsBus) { - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_COACH_OPEN_R); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_COACH_OPEN_RHS); } else { - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_OPEN_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_OPEN_DOOR_RHS); } } else if (itsVan) { - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_VAN_OPEN_L); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_VAN_OPEN_DOOR_REAR_LHS); } else if (itsBus) { - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_COACH_OPEN_L); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_COACH_OPEN_LHS); } else { if (ped->m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER && veh->pDriver) { @@ -2303,7 +2303,7 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg) && veh->pDriver->CharCreatedBy != MISSION_CHAR && veh->pDriver->m_nPedState == PED_DRIVING) { - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_QJACK); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_QUICKJACK); ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped); veh->pDriver->SetBeingDraggedFromCar(veh, ped->m_vehDoor, true); @@ -2312,15 +2312,15 @@ CPed::PedAnimAlignCB(CAnimBlendAssociation *animAssoc, void *arg) return; } } - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_OPEN_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_OPEN_DOOR_LHS); } ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorOpenCB, ped); } else { if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_DOORLOCKED_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CARDOOR_LOCKED_RHS); else - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_DOORLOCKED_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CARDOOR_LOCKED_LHS); ped->bCancelEnteringCar = true; ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorOpenCB, ped); @@ -2393,13 +2393,13 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg) if (veh->m_vecMoveSpeed.Magnitude() > 0.2f) { ped->QuitEnteringCar(); if (ped->m_vehDoor != CAR_DOOR_LF && ped->m_vehDoor != CAR_DOOR_LR) - ped->SetFall(1000, ANIM_KO_SPIN_R, false); + ped->SetFall(1000, ANIM_STD_HIGHIMPACT_LEFT, false); else - ped->SetFall(1000, ANIM_KO_SPIN_L, false); + ped->SetFall(1000, ANIM_STD_HIGHIMPACT_RIGHT, false); return; } - veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_CAR_OPEN_LHS, 1.0f); + veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_STD_CAR_OPEN_DOOR_LHS, 1.0f); if (ped->m_vehDoor == CAR_DOOR_LF || ped->m_vehDoor == CAR_DOOR_RF) isVan = false; @@ -2409,22 +2409,22 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg) if (ped->m_vehDoor != CAR_DOOR_LF && ped->m_vehDoor != CAR_DOOR_LR) { if (isVan) { - animToPlay = ANIM_VAN_GETIN; + animToPlay = ANIM_STD_VAN_GET_IN_REAR_RHS; } else if (isBus) { - animToPlay = ANIM_COACH_IN_R; + animToPlay = ANIM_STD_COACH_GET_IN_RHS; } else if (isLow) { - animToPlay = ANIM_CAR_GETIN_LOW_RHS; + animToPlay = ANIM_STD_CAR_GET_IN_LO_RHS; } else { - animToPlay = ANIM_CAR_GETIN_RHS; + animToPlay = ANIM_STD_CAR_GET_IN_RHS; } } else if (isVan) { - animToPlay = ANIM_VAN_GETIN_L; + animToPlay = ANIM_STD_VAN_GET_IN_REAR_LHS; } else if (isBus) { - animToPlay = ANIM_COACH_IN_L; + animToPlay = ANIM_STD_COACH_GET_IN_LHS; } else if (isLow) { - animToPlay = ANIM_CAR_GETIN_LOW_LHS; + animToPlay = ANIM_STD_CAR_GET_IN_LO_LHS; } else { - animToPlay = ANIM_CAR_GETIN_LHS; + animToPlay = ANIM_STD_CAR_GET_IN_LHS; } ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, animToPlay); ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped); @@ -2451,9 +2451,9 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg) pedToDragOut = nil; } else { if (isLow) - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_LOW_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_LO_RHS); else - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_RHS); ped->m_pVehicleAnim->SetFinishCallback(PedAnimPullPedOutCB, ped); } @@ -2468,9 +2468,9 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg) } else { // BUG: Probably we will sit on top of the passenger if his m_ped_flagF4 is true. if (isLow) - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS); else - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS); ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped); } @@ -2483,17 +2483,17 @@ CPed::PedAnimDoorOpenCB(CAnimBlendAssociation* animAssoc, void* arg) pedToDragOut = nil; } else { if (isLow) - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_LOW_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_LO_LHS); else - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_PULLOUT_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_PULL_OUT_PED_LHS); ped->m_pVehicleAnim->SetFinishCallback(PedAnimPullPedOutCB, ped); } } else { if (isLow) - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS); else - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_GETIN_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS); ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped); } @@ -2577,13 +2577,13 @@ CPed::PedAnimPullPedOutCB(CAnimBlendAssociation* animAssoc, void* arg) AnimationId animToPlay; if (ped->m_vehDoor != CAR_DOOR_LF && ped->m_vehDoor != CAR_DOOR_LR) { if (isLow) - animToPlay = ANIM_CAR_GETIN_LOW_RHS; + animToPlay = ANIM_STD_CAR_GET_IN_LO_RHS; else - animToPlay = ANIM_CAR_GETIN_RHS; + animToPlay = ANIM_STD_CAR_GET_IN_RHS; } else if (isLow) { - animToPlay = ANIM_CAR_GETIN_LOW_LHS; + animToPlay = ANIM_STD_CAR_GET_IN_LO_LHS; } else { - animToPlay = ANIM_CAR_GETIN_LHS; + animToPlay = ANIM_STD_CAR_GET_IN_LHS; } ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, animToPlay); ped->m_pVehicleAnim->SetFinishCallback(PedAnimGetInCB, ped); @@ -2717,18 +2717,18 @@ CPed::PedAnimGetInCB(CAnimBlendAssociation *animAssoc, void *arg) AnimationId animToPlay; if (enterDoor != DOOR_FRONT_LEFT && enterDoor != DOOR_REAR_LEFT) { if (isVan) { - animToPlay = ANIM_VAN_CLOSE; + animToPlay = ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS; } else if (isLow) { - animToPlay = ANIM_CAR_CLOSEDOOR_LOW_RHS; + animToPlay = ANIM_STD_CAR_CLOSE_DOOR_LO_RHS; } else { - animToPlay = ANIM_CAR_CLOSEDOOR_RHS; + animToPlay = ANIM_STD_CAR_CLOSE_DOOR_RHS; } } else if (isVan) { - animToPlay = ANIM_VAN_CLOSE_L; + animToPlay = ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS; } else if (isLow) { - animToPlay = ANIM_CAR_CLOSEDOOR_LOW_LHS; + animToPlay = ANIM_STD_CAR_CLOSE_DOOR_LO_LHS; } else { - animToPlay = ANIM_CAR_CLOSEDOOR_LHS; + animToPlay = ANIM_STD_CAR_CLOSE_DOOR_LHS; } ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, animToPlay); ped->m_pVehicleAnim->SetFinishCallback(PedAnimDoorCloseCB, ped); @@ -2749,7 +2749,7 @@ CPed::PedAnimDoorCloseCB(CAnimBlendAssociation *animAssoc, void *arg) bool isLow = !!veh->bLowVehicle; if (!veh->bIsBus) - veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_CAR_CLOSEDOOR_LHS, 1.0f); + veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_STD_CAR_CLOSE_DOOR_LHS, 1.0f); eDoors door; switch (ped->m_vehDoor) { @@ -2796,9 +2796,9 @@ CPed::PedAnimDoorCloseCB(CAnimBlendAssociation *animAssoc, void *arg) animAssoc->blendDelta = -1000.0f; if (isLow) - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_LSHUFFLE_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SHUFFLE_LO_RHS); else - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_SHUFFLE_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SHUFFLE_RHS); ped->m_pVehicleAnim->SetFinishCallback(PedSetInCarCB, ped); } @@ -2902,7 +2902,7 @@ CPed::PedAnimStepOutCarCB(CAnimBlendAssociation* animAssoc, void* arg) veh->m_vecMoveSpeed += CVector(0.001f, 0.001f, 0.001f); veh->m_vecTurnSpeed += CVector(0.001f, 0.001f, 0.001f); if (!veh->bIsBus) - veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_CAR_GETOUT_LHS, 1.0f); + veh->ProcessOpenDoor(ped->m_vehDoor, ANIM_STD_GETOUT_LHS, 1.0f); /* // Duplicate and only in PC for some reason @@ -2991,16 +2991,16 @@ CPed::PedAnimStepOutCarCB(CAnimBlendAssociation* animAssoc, void* arg) } else { switch (door) { case DOOR_FRONT_LEFT: - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_LHS); break; case DOOR_FRONT_RIGHT: - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_RHS); break; case DOOR_REAR_LEFT: - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_LHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_LHS); break; case DOOR_REAR_RIGHT: - ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_CAR_CLOSE_RHS); + ped->m_pVehicleAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_RHS); break; default: break; @@ -3026,19 +3026,19 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase) return; if (!bChangedSeat && phase != LINE_UP_TO_CAR_2) { - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SIT)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT)) { SetPedPositionInCar(); return; } - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSIT)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_LO)) { SetPedPositionInCar(); return; } - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SITP)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_P)) { SetPedPositionInCar(); return; } - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SITPLO)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_P_LO)) { SetPedPositionInCar(); return; } @@ -3093,22 +3093,22 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase) vehAnim = m_pVehicleAnim->animId; switch (vehAnim) { - case ANIM_CAR_JACKED_RHS: - case ANIM_CAR_LJACKED_RHS: - case ANIM_CAR_JACKED_LHS: - case ANIM_CAR_LJACKED_LHS: - case ANIM_VAN_GETIN_L: - case ANIM_VAN_GETIN: + case ANIM_STD_JACKEDCAR_RHS: + case ANIM_STD_JACKEDCAR_LO_RHS: + case ANIM_STD_JACKEDCAR_LHS: + case ANIM_STD_JACKEDCAR_LO_LHS: + case ANIM_STD_VAN_GET_IN_REAR_LHS: + case ANIM_STD_VAN_GET_IN_REAR_RHS: #ifdef VC_PED_PORTS multExtractedFromAnim = true; zBlend = Max(m_pVehicleAnim->currentTime / m_pVehicleAnim->hierarchy->totalLength - 0.3f, 0.0f) / (1.0f - 0.3f); // fall through #endif - case ANIM_CAR_QJACKED: - case ANIM_CAR_GETOUT_LHS: - case ANIM_CAR_GETOUT_LOW_LHS: - case ANIM_CAR_GETOUT_RHS: - case ANIM_CAR_GETOUT_LOW_RHS: + case ANIM_STD_QUICKJACKED: + case ANIM_STD_GETOUT_LHS: + case ANIM_STD_GETOUT_LO_LHS: + case ANIM_STD_GETOUT_RHS: + case ANIM_STD_GETOUT_LO_RHS: #ifdef VC_PED_PORTS if (!multExtractedFromAnim) { multExtractedFromAnim = true; @@ -3116,14 +3116,14 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase) } // fall through #endif - case ANIM_CAR_CRAWLOUT_RHS: - case ANIM_CAR_CRAWLOUT_RHS2: - case ANIM_VAN_GETOUT_L: - case ANIM_VAN_GETOUT: + case ANIM_STD_CRAWLOUT_LHS: + case ANIM_STD_CRAWLOUT_RHS: + case ANIM_STD_VAN_GET_OUT_REAR_LHS: + case ANIM_STD_VAN_GET_OUT_REAR_RHS: seatPosMult = m_pVehicleAnim->currentTime / m_pVehicleAnim->hierarchy->totalLength; break; - case ANIM_CAR_GETIN_RHS: - case ANIM_CAR_GETIN_LHS: + case ANIM_STD_CAR_GET_IN_RHS: + case ANIM_STD_CAR_GET_IN_LHS: #ifdef VC_PED_PORTS if (veh && veh->IsCar() && veh->bIsBus) { multExtractedFromAnimBus = true; @@ -3131,27 +3131,27 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase) } // fall through #endif - case ANIM_CAR_QJACK: - case ANIM_CAR_GETIN_LOW_LHS: - case ANIM_CAR_GETIN_LOW_RHS: - case ANIM_DRIVE_BOAT: + case ANIM_STD_QUICKJACK: + case ANIM_STD_CAR_GET_IN_LO_LHS: + case ANIM_STD_CAR_GET_IN_LO_RHS: + case ANIM_STD_BOAT_DRIVE: seatPosMult = m_pVehicleAnim->GetTimeLeft() / m_pVehicleAnim->hierarchy->totalLength; break; - case ANIM_CAR_CLOSEDOOR_LHS: - case ANIM_CAR_CLOSEDOOR_LOW_LHS: - case ANIM_CAR_CLOSEDOOR_RHS: - case ANIM_CAR_CLOSEDOOR_LOW_RHS: - case ANIM_CAR_SHUFFLE_RHS: - case ANIM_CAR_LSHUFFLE_RHS: + case ANIM_STD_CAR_CLOSE_DOOR_LHS: + case ANIM_STD_CAR_CLOSE_DOOR_LO_LHS: + case ANIM_STD_CAR_CLOSE_DOOR_RHS: + case ANIM_STD_CAR_CLOSE_DOOR_LO_RHS: + case ANIM_STD_CAR_SHUFFLE_RHS: + case ANIM_STD_CAR_SHUFFLE_LO_RHS: seatPosMult = 0.0f; break; - case ANIM_CAR_CLOSE_LHS: - case ANIM_CAR_CLOSE_RHS: - case ANIM_COACH_OPEN_L: - case ANIM_COACH_OPEN_R: - case ANIM_COACH_IN_L: - case ANIM_COACH_IN_R: - case ANIM_COACH_OUT_L: + case ANIM_STD_CAR_CLOSE_LHS: + case ANIM_STD_CAR_CLOSE_RHS: + case ANIM_STD_COACH_OPEN_LHS: + case ANIM_STD_COACH_OPEN_RHS: + case ANIM_STD_COACH_GET_IN_LHS: + case ANIM_STD_COACH_GET_IN_RHS: + case ANIM_STD_COACH_GET_OUT_LHS: seatPosMult = 1.0f; break; default: @@ -3203,10 +3203,10 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase) } else { #endif currentZ = GetPosition().z; - if (m_pVehicleAnim && vehAnim != ANIM_VAN_GETIN_L && vehAnim != ANIM_VAN_CLOSE_L && vehAnim != ANIM_VAN_CLOSE && vehAnim != ANIM_VAN_GETIN) { + if (m_pVehicleAnim && vehAnim != ANIM_STD_VAN_GET_IN_REAR_LHS && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS && vehAnim != ANIM_STD_VAN_GET_IN_REAR_RHS) { neededPos.z = autoZPos.z; m_vecMoveSpeed = CVector(0.0f, 0.0f, 0.0f); - } else if (neededPos.z < currentZ && m_pVehicleAnim && vehAnim != ANIM_VAN_CLOSE_L && vehAnim != ANIM_VAN_CLOSE) { + } else if (neededPos.z < currentZ && m_pVehicleAnim && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS && vehAnim != ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS) { adjustedTimeStep = Max(m_pVehicleAnim->timeStep, 0.1f); // Smoothly change ped position @@ -3227,8 +3227,8 @@ CPed::LineUpPedWithCar(PedLineUpPhase phase) } else { #endif if (m_pVehicleAnim && - (vehAnim == ANIM_CAR_GETIN_RHS || vehAnim == ANIM_CAR_GETIN_LOW_RHS || vehAnim == ANIM_CAR_GETIN_LHS || vehAnim == ANIM_CAR_GETIN_LOW_LHS - || vehAnim == ANIM_CAR_QJACK || vehAnim == ANIM_VAN_GETIN_L || vehAnim == ANIM_VAN_GETIN)) { + (vehAnim == ANIM_STD_CAR_GET_IN_RHS || vehAnim == ANIM_STD_CAR_GET_IN_LO_RHS || vehAnim == ANIM_STD_CAR_GET_IN_LHS || vehAnim == ANIM_STD_CAR_GET_IN_LO_LHS + || vehAnim == ANIM_STD_QUICKJACK || vehAnim == ANIM_STD_VAN_GET_IN_REAR_LHS || vehAnim == ANIM_STD_VAN_GET_IN_REAR_RHS)) { adjustedTimeStep = Max(m_pVehicleAnim->timeStep, 0.1f); // Smoothly change ped position @@ -3358,9 +3358,9 @@ CPed::SetCarJack_AllClear(CVehicle *car, uint32 doorNode, uint32 doorFlag) bUsesCollision = false; if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR) - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_CAR_ALIGNHI_LHS : ANIM_CAR_ALIGN_LHS, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_STD_CAR_ALIGNHI_DOOR_LHS : ANIM_STD_CAR_ALIGN_DOOR_LHS, 4.0f); else - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_CAR_ALIGNHI_RHS : ANIM_CAR_ALIGN_RHS, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, zDiff > 4.4f ? ANIM_STD_CAR_ALIGNHI_DOOR_RHS : ANIM_STD_CAR_ALIGN_DOOR_RHS, 4.0f); m_pVehicleAnim->SetFinishCallback(PedAnimAlignCB, this); } @@ -3408,14 +3408,14 @@ CPed::BeingDraggedFromCar(void) PedLineUpPhase lineUpType; if (!m_pVehicleAnim) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 100.0f); - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SIT); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 100.0f); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT); if (!animAssoc) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LSIT); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_LO); if (!animAssoc) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SITP); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_P); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_SITPLO); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_SIT_P_LO); } } if (animAssoc) @@ -3423,17 +3423,17 @@ CPed::BeingDraggedFromCar(void) if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR) { if (bWillBeQuickJacked) { - enterAnim = ANIM_CAR_QJACKED; + enterAnim = ANIM_STD_QUICKJACKED; } else if (m_pMyVehicle->bLowVehicle) { - enterAnim = ANIM_CAR_LJACKED_LHS; + enterAnim = ANIM_STD_JACKEDCAR_LO_LHS; } else { - enterAnim = ANIM_CAR_JACKED_LHS; + enterAnim = ANIM_STD_JACKEDCAR_LHS; } } else if (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR) { if (m_pMyVehicle->bLowVehicle) - enterAnim = ANIM_CAR_LJACKED_RHS; + enterAnim = ANIM_STD_JACKEDCAR_LO_RHS; else - enterAnim = ANIM_CAR_JACKED_RHS; + enterAnim = ANIM_STD_JACKEDCAR_RHS; } else dontRunAnim = true; @@ -3534,16 +3534,16 @@ CPed::SetEnterCar_AllClear(CVehicle *car, uint32 doorNode, uint32 doorFlag) #ifdef VC_PED_PORTS // VC checks for handling flag, but we can't do that if(car->GetModelIndex() == MI_SPEEDER) - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f); else - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE, 100.0f); PedSetInCarCB(nil, this); bVehExitWillBeInstant = true; #else #ifndef FIX_BUGS - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DRIVE_BOAT, 100.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_BOAT_DRIVE, 100.0f); #else m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, car->GetDriverAnim(), 100.0f); #endif @@ -3555,15 +3555,15 @@ CPed::SetEnterCar_AllClear(CVehicle *car, uint32 doorNode, uint32 doorFlag) } else { if (zDiff > 4.4f) { if (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR) - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ALIGNHI_RHS, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_ALIGNHI_DOOR_RHS, 4.0f); else - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ALIGNHI_LHS, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_ALIGNHI_DOOR_LHS, 4.0f); } else { if (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR) - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ALIGN_RHS, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_ALIGN_DOOR_RHS, 4.0f); else - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ALIGN_LHS, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_ALIGN_DOOR_LHS, 4.0f); } m_pVehicleAnim->SetFinishCallback(PedAnimAlignCB, this); car->AutoPilot.m_nCruiseSpeed = 0; @@ -3588,7 +3588,7 @@ CPed::EnterCar(void) LineUpPedWithCar(LINE_UP_TO_CAR_START); } else { QuitEnteringCar(); - SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); } } @@ -3601,8 +3601,8 @@ CPed::QuitEnteringCar(void) RestartNonPartialAnims(); - if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE)) - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 100.0f); + if (!RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE)) + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 100.0f); if (veh) { if (m_objective == OBJECTIVE_ENTER_CAR_AS_DRIVER || m_nPedState == PED_CARJACK) @@ -3677,9 +3677,9 @@ CPed::SetExitBoat(CVehicle *boat) #ifndef VC_PED_PORTS SetPedState(PED_IDLE); CVector firstPos = GetPosition(); - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 100.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 100.0f); if (boat->GetModelIndex() == MI_SPEEDER && boat->IsUpsideDown()) { - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_CRAWLOUT_RHS, 8.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CRAWLOUT_LHS, 8.0f); m_pVehicleAnim->SetFinishCallback(PedSetOutCarCB, this); m_vehDoor = CAR_DOOR_RF; SetPedState(PED_EXIT_CAR); @@ -3926,7 +3926,7 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode) if (m_pVehicleAnim && m_pVehicleAnim->flags & ASSOC_PARTIAL) m_pVehicleAnim->blendDelta = -1000.0f; SetMoveState(PEDMOVE_NONE); - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 100.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 100.0f); RemoveInCarAnims(); veh->AutoPilot.m_nCruiseSpeed = 0; if (teleportNeeded) { @@ -3966,12 +3966,12 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode) switch (m_vehDoor) { case CAR_DOOR_RF: if (veh->bIsBus) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_COACH_OUT_L); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_COACH_GET_OUT_LHS); } else { if (isLow) - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_RHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_RHS); else - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_RHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_RHS); if (addDoorSmoke) AddYardieDoorSmoke(veh, CAR_DOOR_RF); @@ -3979,21 +3979,21 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode) break; case CAR_DOOR_RR: if (veh->bIsVan) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_VAN_GETOUT); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_VAN_GET_OUT_REAR_RHS); } else if (isLow) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_RHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_RHS); } else { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_RHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_RHS); } break; case CAR_DOOR_LF: if (veh->bIsBus) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_COACH_OUT_L); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_COACH_GET_OUT_LHS); } else { if (isLow) - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_LHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_LHS); else - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LHS); if (addDoorSmoke) AddYardieDoorSmoke(veh, CAR_DOOR_LF); @@ -4001,11 +4001,11 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode) break; case CAR_DOOR_LR: if (veh->bIsVan) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_VAN_GETOUT_L); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_VAN_GET_OUT_REAR_LHS); } else if (isLow) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LOW_LHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LO_LHS); } else { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_GETOUT_LHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_GETOUT_LHS); } break; default: @@ -4032,9 +4032,9 @@ CPed::SetExitCar(CVehicle *veh, uint32 wantedDoorNode) m_pVehicleAnim->SetFinishCallback(PedAnimStepOutCarCB, this); } else { if (m_vehDoor == CAR_DOOR_RF || m_vehDoor == CAR_DOOR_RR) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_CRAWLOUT_RHS2); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CRAWLOUT_RHS); } else if (m_vehDoor == CAR_DOOR_LF || m_vehDoor == CAR_DOOR_LR) { - m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_CRAWLOUT_RHS); + m_pVehicleAnim = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CRAWLOUT_LHS); } m_pVehicleAnim->SetFinishCallback(PedSetOutCarCB, this); } @@ -4067,7 +4067,7 @@ CPed::ExitCar(void) if (m_pSeekTarget) { // Car is upside down if (m_pMyVehicle->GetUp().z > -0.8f) { - if (exitAnim == ANIM_CAR_CLOSE_RHS || exitAnim == ANIM_CAR_CLOSE_LHS || animTime > 0.3f) + if (exitAnim == ANIM_STD_CAR_CLOSE_RHS || exitAnim == ANIM_STD_CAR_CLOSE_LHS || animTime > 0.3f) LineUpPedWithCar(LINE_UP_TO_CAR_END); else LineUpPedWithCar((m_pMyVehicle->GetModelIndex() == MI_DODO ? LINE_UP_TO_CAR_END : LINE_UP_TO_CAR_START)); @@ -4086,7 +4086,7 @@ CPed::ExitCar(void) } } if (foundPed && animTime > 0.4f && foundPed->IsPedInControl()) - foundPed->SetFall(1000, ANIM_KO_SKID_FRONT, 1); + foundPed->SetFall(1000, ANIM_STD_HIGHIMPACT_FRONT, 1); } } @@ -4248,7 +4248,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void) { // FIX: If there were no translations on enter anims, there were overflows all over this function. - CAnimBlendHierarchy *enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_JACKED_LHS)->hierarchy; + CAnimBlendHierarchy *enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_JACKEDCAR_LHS)->hierarchy; CAnimBlendSequence *seq = enterAssoc->sequences; CAnimManager::UncompressAnimation(enterAssoc); if (seq->numFrames > 0) { @@ -4260,7 +4260,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void) } } - enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_GETIN_LHS)->hierarchy; + enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LHS)->hierarchy; seq = enterAssoc->sequences; CAnimManager::UncompressAnimation(enterAssoc); if (seq->numFrames > 0) { @@ -4272,7 +4272,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void) } } - enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_GETIN_LOW_LHS)->hierarchy; + enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_CAR_GET_IN_LO_LHS)->hierarchy; seq = enterAssoc->sequences; CAnimManager::UncompressAnimation(enterAssoc); if (seq->numFrames > 0) { @@ -4284,7 +4284,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void) } } - enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_CAR_QJACKED)->hierarchy; + enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_QUICKJACKED)->hierarchy; seq = enterAssoc->sequences; CAnimManager::UncompressAnimation(enterAssoc); if (seq->numFrames > 0) { @@ -4296,7 +4296,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void) } } - enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_VAN_GETIN_L)->hierarchy; + enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_VAN_GET_IN_REAR_LHS)->hierarchy; seq = enterAssoc->sequences; CAnimManager::UncompressAnimation(enterAssoc); if (seq->numFrames > 0) { @@ -4308,7 +4308,7 @@ CPed::SetAnimOffsetForEnterOrExitVehicle(void) } } - enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_TRAIN_GETOUT)->hierarchy; + enterAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, ANIM_STD_TRAIN_GETOUT)->hierarchy; seq = enterAssoc->sequences; CAnimManager::UncompressAnimation(enterAssoc); if (seq->numFrames > 0) { @@ -4614,7 +4614,7 @@ CPed::SetEnterTrain(CVehicle *train, uint32 unused) m_pMyVehicle->RegisterReference((CEntity **) &m_pMyVehicle); SetPedState(PED_ENTER_TRAIN); - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_TRAIN_GETIN, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_TRAIN_GETIN, 4.0f); m_pVehicleAnim->SetFinishCallback(PedSetInTrainCB, this); bUsesCollision = false; LineUpPedWithTrain(); @@ -4688,7 +4688,7 @@ CPed::SetExitTrain(CVehicle* train) GetNearestTrainPedPosition(train, exitPos); */ SetPedState(PED_EXIT_TRAIN); - m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_TRAIN_GETOUT, 4.0f); + m_pVehicleAnim = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_TRAIN_GETOUT, 4.0f); m_pVehicleAnim->SetFinishCallback(PedSetOutTrainCB, this); bUsesCollision = false; LineUpPedWithTrain(); @@ -5060,16 +5060,16 @@ CPed::SetDuck(uint32 time) return; if (bCrouchWhenShooting && (m_nPedState == PED_ATTACK || m_nPedState == PED_AIM_GUN)) { - CAnimBlendAssociation *duckAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_LOW); + CAnimBlendAssociation *duckAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_LOW); if (!duckAssoc || duckAssoc->blendDelta < 0.0f) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DUCK_LOW, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_LOW, 4.0f); bIsDucking = true; m_duckTimer = CTimer::GetTimeInMilliseconds() + time; } } else { - CAnimBlendAssociation *duckAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN); + CAnimBlendAssociation *duckAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN); if (!duckAssoc || duckAssoc->blendDelta < 0.0f) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_DUCK_DOWN, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_DUCK_DOWN, 4.0f); bIsDucking = true; m_duckTimer = CTimer::GetTimeInMilliseconds() + time; } @@ -5086,9 +5086,9 @@ CPed::Duck(void) void CPed::ClearDuck(void) { - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_DOWN); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_DOWN); if (!animAssoc) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DUCK_LOW); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_DUCK_LOW); if (!animAssoc) { bIsDucking = false; @@ -5102,9 +5102,9 @@ CPed::ClearDuck(void) if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN) return; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RBLOCK_CSHOOT); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RBLOCK_SHOOT); if (!animAssoc || animAssoc->blendDelta < 0.0f) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_RBLOCK_CSHOOT, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_RBLOCK_SHOOT, 4.0f); } } @@ -5154,9 +5154,9 @@ CPed::PedAnimDoorCloseRollingCB(CAnimBlendAssociation* animAssoc, void* arg) animAssoc->blendDelta = -1000.0f; if (veh->bLowVehicle) { - veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR_LOW, 1.0f); + veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS, 1.0f); } else { - veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, 1.0f); + veh->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, 1.0f); } veh->m_nGettingOutFlags &= ~CAR_DOOR_FLAG_LF; @@ -5235,40 +5235,40 @@ CPed::RemoveInCarAnims(void) CAnimBlendAssociation *animAssoc; if (m_pMyVehicle && m_pMyVehicle->bLowVehicle) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_LOW_L); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_LEFT_LO); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_LOW_R); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_RIGHT_LO); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_L); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_R); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT); if (animAssoc) animAssoc->blendDelta = -1000.0f; } else { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_L); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_LEFT); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_R); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVE_RIGHT); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_L); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT); if (animAssoc) animAssoc->blendDelta = -1000.0f; - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVEBY_R); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT); if (animAssoc) animAssoc->blendDelta = -1000.0f; } #ifdef VC_PED_PORTS - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_DRIVE_BOAT); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_BOAT_DRIVE); if (animAssoc) animAssoc->blendDelta = -1000.0f; #endif - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_LB); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_LOOKBEHIND); if (animAssoc) animAssoc->blendDelta = -1000.0f; } diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index 8625f23e..c03d492a 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -29,30 +29,30 @@ RpClump *flyingClumpTemp; // This is beta fistfite.dat array. Not used anymore since they're being fetched from fistfite.dat. FightMove tFightMoves[NUM_FIGHTMOVES] = { - {NUM_ANIMS, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_PUNCH_R, 0.2f, 8.0f / 30.0f, 0.0f, 0.3f, HITLEVEL_HIGH, 1, 0}, - {ANIM_FIGHT_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_FIGHT_SH_F, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_FIGHT_KNEE, 4.0f / 30.0f, 0.2f, 0.0f, 0.6f, HITLEVEL_LOW, 2, 0}, - {ANIM_FIGHT_HEAD, 4.0f / 30.0f, 0.2f, 0.0f, 0.7f, HITLEVEL_HIGH, 3, 0}, - {ANIM_FIGHT_PUNCH, 4.0f / 30.0f, 7.0f / 30.0f, 10.0f / 30.0f, 0.4f, HITLEVEL_HIGH, 1, 0}, - {ANIM_FIGHT_LHOOK, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.4f, HITLEVEL_HIGH, 3, 0}, - {ANIM_FIGHT_KICK, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.5, HITLEVEL_MEDIUM, 2, 0}, - {ANIM_FIGHT_LONGKICK, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.5, HITLEVEL_MEDIUM, 4, 0}, - {ANIM_FIGHT_ROUNDHOUSE, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.6f, HITLEVEL_MEDIUM, 4, 0}, - {ANIM_FIGHT_BODYBLOW, 5.0f / 30.0f, 7.0f / 30.0f, 0.0f, 0.35f, HITLEVEL_LOW, 2, 0}, - {ANIM_KICK_FLOOR, 10.0f / 30.0f, 14.0f / 30.0f, 0.0f, 0.4f, HITLEVEL_GROUND, 1, 0}, - {ANIM_HIT_FRONT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_BACK, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_RIGHT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_LEFT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_BODYBLOW, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_CHEST, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_HEAD, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_WALK, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_FLOOR_HIT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_HIT_BEHIND, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, - {ANIM_FIGHT2_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_NUM, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_PUNCH, 0.2f, 8.0f / 30.0f, 0.0f, 0.3f, HITLEVEL_HIGH, 1, 0}, + {ANIM_STD_FIGHT_IDLE, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_FIGHT_SHUFFLE_F, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_FIGHT_KNEE, 4.0f / 30.0f, 0.2f, 0.0f, 0.6f, HITLEVEL_LOW, 2, 0}, + {ANIM_STD_FIGHT_HEAD, 4.0f / 30.0f, 0.2f, 0.0f, 0.7f, HITLEVEL_HIGH, 3, 0}, + {ANIM_STD_FIGHT_PUNCH, 4.0f / 30.0f, 7.0f / 30.0f, 10.0f / 30.0f, 0.4f, HITLEVEL_HIGH, 1, 0}, + {ANIM_STD_FIGHT_LHOOK, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.4f, HITLEVEL_HIGH, 3, 0}, + {ANIM_STD_FIGHT_KICK, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.5, HITLEVEL_MEDIUM, 2, 0}, + {ANIM_STD_FIGHT_LONGKICK, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.5, HITLEVEL_MEDIUM, 4, 0}, + {ANIM_STD_FIGHT_ROUNDHOUSE, 8.0f / 30.0f, 10.0f / 30.0f, 0.0f, 0.6f, HITLEVEL_MEDIUM, 4, 0}, + {ANIM_STD_FIGHT_BODYBLOW, 5.0f / 30.0f, 7.0f / 30.0f, 0.0f, 0.35f, HITLEVEL_LOW, 2, 0}, + {ANIM_STD_KICKGROUND, 10.0f / 30.0f, 14.0f / 30.0f, 0.0f, 0.4f, HITLEVEL_GROUND, 1, 0}, + {ANIM_STD_HIT_FRONT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_BACK, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_RIGHT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_LEFT, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_BODYBLOW, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_CHEST, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_HEAD, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_WALK, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_FLOOR, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_HIT_BEHIND, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, + {ANIM_STD_FIGHT_2IDLE, 0.0f, 0.0f, 0.0f, 0.0f, HITLEVEL_NULL, 0, 0}, }; static PedOnGroundState @@ -247,7 +247,7 @@ CPed::SetAttack(CEntity *victim) if (victim && victim->IsPed()) victimPed = (CPed*)victim; - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_ARMED); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_BIGGUN); if (animAssoc) { animAssoc->blendDelta = -1000.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -256,12 +256,12 @@ CPed::SetAttack(CEntity *victim) if (m_attackTimer > CTimer::GetTimeInMilliseconds() || m_nWaitState == WAITSTATE_SURPRISE) return; - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_HGUN_RELOAD)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_HGUN_RELOAD)) { bIsAttacking = false; return; } - if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_AK_RELOAD)) { + if (RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_AK_RELOAD)) { if (!IsPlayer() || m_nPedState != PED_ATTACK || ((CPlayerPed*)this)->m_bHaveTargetSelected) bIsAttacking = false; else @@ -351,7 +351,7 @@ CPed::SetAttack(CEntity *victim) SetPedState(PED_ATTACK); SetMoveState(PEDMOVE_NONE); if (bCrouchWhenShooting) { - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_RBLOCK_CSHOOT, 4.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_RBLOCK_SHOOT, 4.0f); } else { float animDelta = 8.0f; if (curWeapon->m_eWeaponFire == WEAPON_FIRE_MELEE) @@ -418,7 +418,7 @@ CPed::ClearAttackByRemovingAnim(void) weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), weapon->m_Anim2ToPlay); if (!weaponAssoc && weapon->IsFlagSet(WEAPONFLAG_THROW)) - weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_THROWU); + weaponAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_THROW_UNDER); if (!weaponAssoc) { ClearAttack(); @@ -440,27 +440,27 @@ CPed::FinishedAttackCB(CAnimBlendAssociation *attackAssoc, void *arg) if (attackAssoc) { switch (attackAssoc->animId) { - case ANIM_WEAPON_START_THROW: + case ANIM_STD_START_THROW: // what?! if ((!ped->IsPlayer() || ((CPlayerPed*)ped)->m_bHaveTargetSelected) && ped->IsPlayer()) { attackAssoc->blendDelta = -1000.0f; - newAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_THROWU); + newAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_THROW_UNDER); } else { attackAssoc->blendDelta = -1000.0f; - newAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_WEAPON_THROW); + newAnim = CAnimManager::AddAnimation(ped->GetClump(), ASSOCGRP_STD, ANIM_STD_WEAPON_THROW); } newAnim->SetFinishCallback(FinishedAttackCB, ped); return; - case ANIM_FIGHT_PPUNCH: + case ANIM_STD_PARTIAL_PUNCH: attackAssoc->blendDelta = -8.0f; attackAssoc->flags |= ASSOC_DELETEFADEDOUT; ped->ClearAttack(); return; - case ANIM_WEAPON_THROW: - case ANIM_WEAPON_THROWU: + case ANIM_STD_WEAPON_THROW: + case ANIM_STD_THROW_UNDER: if (ped->GetWeapon()->m_nAmmoTotal > 0) { currentWeapon = CWeaponInfo::GetWeaponInfo(ped->GetWeapon()->m_eWeaponType); ped->AddWeaponModel(currentWeapon->m_nModelId); @@ -535,16 +535,16 @@ CPed::Attack(void) weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ourWeapon->m_AnimToPlay); attackShouldContinue = bIsAttacking; reloadAnimAssoc = nil; - reloadAnim = NUM_ANIMS; + reloadAnim = ANIM_STD_NUM; delayBetweenAnimAndFire = ourWeapon->m_fAnimFrameFire; weaponAnim = ourWeapon->m_AnimToPlay; - if (weaponAnim == ANIM_WEAPON_HGUN_BODY) - reloadAnim = ANIM_HGUN_RELOAD; - else if (weaponAnim == ANIM_WEAPON_AK_BODY) - reloadAnim = ANIM_AK_RELOAD; + if (weaponAnim == ANIM_STD_WEAPON_HGUN_BODY) + reloadAnim = ANIM_STD_HGUN_RELOAD; + else if (weaponAnim == ANIM_STD_WEAPON_AK_BODY) + reloadAnim = ANIM_STD_AK_RELOAD; - if (reloadAnim != NUM_ANIMS) + if (reloadAnim != ANIM_STD_NUM) reloadAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), reloadAnim); if (bIsDucking) @@ -566,7 +566,7 @@ CPed::Attack(void) // Long throw granade, molotov if (!weaponAnimAssoc && ourWeapon->IsFlagSet(WEAPONFLAG_THROW)) { - weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WEAPON_THROWU); + weaponAnimAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_THROW_UNDER); delayBetweenAnimAndFire = 0.2f; } @@ -619,7 +619,7 @@ CPed::Attack(void) firePos = GetMatrix() * firePos; } else if (GetWeapon()->m_eWeaponType != WEAPONTYPE_UNARMED) { - TransformToNode(firePos, weaponAnimAssoc->animId == ANIM_KICK_FLOOR ? PED_FOOTR : PED_HANDR); + TransformToNode(firePos, weaponAnimAssoc->animId == ANIM_STD_KICKGROUND ? PED_FOOTR : PED_HANDR); } else { firePos = GetMatrix() * firePos; } @@ -636,7 +636,7 @@ CPed::Attack(void) if (GetWeapon()->m_eWeaponState != WEAPONSTATE_MELEE_MADECONTACT) { // If reloading just began, start the animation // Last condition will always return true, even IDA hides it - if (GetWeapon()->m_eWeaponState == WEAPONSTATE_RELOADING && reloadAnim != NUM_ANIMS /* && !reloadAnimAssoc*/) { + if (GetWeapon()->m_eWeaponState == WEAPONSTATE_RELOADING && reloadAnim != ANIM_STD_NUM /* && !reloadAnimAssoc*/) { CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, reloadAnim, 8.0f); ClearLookFlag(); ClearAimFlag(); @@ -646,9 +646,9 @@ CPed::Attack(void) return; } } else { - if (weaponAnimAssoc->animId == ANIM_WEAPON_BAT_V || weaponAnimAssoc->animId == ANIM_WEAPON_BAT_H) { + if (weaponAnimAssoc->animId == ANIM_STD_WEAPON_BAT_V || weaponAnimAssoc->animId == ANIM_STD_WEAPON_BAT_H) { DMAudio.PlayOneShot(m_audioEntityId, SOUND_WEAPON_BAT_ATTACK, 1.0f); - } else if (weaponAnimAssoc->animId == ANIM_FIGHT_PPUNCH) { + } else if (weaponAnimAssoc->animId == ANIM_STD_PARTIAL_PUNCH) { DMAudio.PlayOneShot(m_audioEntityId, SOUND_FIGHT_PUNCH_39, 0.0f); } @@ -712,7 +712,7 @@ CPed::Attack(void) weaponAnim = weaponAnimAssoc->animId; if (ourWeapon->m_eWeaponFire != WEAPON_FIRE_MELEE || CheckForPedsOnGroundToAttack(this, nil) < PED_ON_THE_FLOOR) { - if (weaponAnim != ourWeapon->m_Anim2ToPlay || weaponAnim == ANIM_RBLOCK_CSHOOT) { + if (weaponAnim != ourWeapon->m_Anim2ToPlay || weaponAnim == ANIM_STD_RBLOCK_SHOOT) { weaponAnimAssoc->Start(ourWeapon->m_fAnimLoopStart); } else { CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ourWeapon->m_AnimToPlay, 8.0f); @@ -785,16 +785,16 @@ CPed::StartFightAttack(uint8 buttonPressure) SetPedState(PED_FIGHT); m_fightButtonPressure = 0; RpAnimBlendClumpRemoveAssociations(GetClump(), ASSOC_REPEAT); - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_STARTWALK); if (animAssoc) { animAssoc->flags |= ASSOC_DELETEFADEDOUT; animAssoc->blendDelta = -1000.0f; } - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP1); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2); if (animAssoc) { animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -805,7 +805,7 @@ CPed::StartFightAttack(uint8 buttonPressure) SetMoveState(PEDMOVE_NONE); m_nStoredMoveState = PEDMOVE_NONE; - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_IDLE)->blendAmount = 1.0f; + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_IDLE)->blendAmount = 1.0f; CPed *pedOnGround = nil; if (IsPlayer() && CheckForPedsOnGroundToAttack(this, &pedOnGround) > PED_IN_FRONT_OF_ATTACKER) { @@ -845,7 +845,7 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) if (hitLevel == HITLEVEL_GROUND) { CAnimBlendAssociation *floorHitAssoc; if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL)) { - floorHitAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f); + floorHitAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f); } else { floorHitAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, tFightMoves[FIGHTMOVE_HITONFLOOR].animId, 8.0f); } @@ -867,8 +867,8 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) } else if (m_nPedState == PED_FALL) { if (hitLevel == HITLEVEL_GROUND && !IsPedHeadAbovePos(-0.3f)) { CAnimBlendAssociation *floorHitAssoc = RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL) ? - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f) : - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f) : + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f); if (floorHitAssoc) { floorHitAssoc->flags &= ~ASSOC_FADEOUTWHENDONE; floorHitAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -887,16 +887,16 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) AnimationId shotAnim; switch (direction) { case 1: - shotAnim = ANIM_SHOT_LEFT_PARTIAL; + shotAnim = ANIM_STD_HITBYGUN_LEFT; break; case 2: - shotAnim = ANIM_SHOT_BACK_PARTIAL; + shotAnim = ANIM_STD_HITBYGUN_BACK; break; case 3: - shotAnim = ANIM_SHOT_RIGHT_PARTIAL; + shotAnim = ANIM_STD_HITBYGUN_RIGHT; break; default: - shotAnim = ANIM_SHOT_FRONT_PARTIAL; + shotAnim = ANIM_STD_HITBYGUN_FRONT; break; } CAnimBlendAssociation *shotAssoc = RpAnimBlendClumpGetAssociation(GetClump(), shotAnim); @@ -914,16 +914,16 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) #ifndef VC_PED_PORTS switch (direction) { case 1: - SetFall(500, ANIM_KO_SPIN_R, false); + SetFall(500, ANIM_STD_HIGHIMPACT_LEFT, false); break; case 2: - SetFall(500, ANIM_KO_SKID_BACK, false); + SetFall(500, ANIM_STD_HIGHIMPACT_BACK, false); break; case 3: - SetFall(500, ANIM_KO_SPIN_L, false); + SetFall(500, ANIM_STD_HIGHIMPACT_RIGHT, false); break; default: - SetFall(500, ANIM_KO_SHOT_STOM, false); + SetFall(500, ANIM_STD_KO_SHOT_STOMACH, false); break; } #else @@ -931,30 +931,30 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) AnimationId hitAnim; switch (direction) { case 1: - hitAnim = ANIM_KO_SPIN_R; + hitAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: if (CGeneral::GetRandomNumber() & 1) { fall = false; - hitAnim = ANIM_HIT_BACK; + hitAnim = ANIM_STD_HIT_BACK; } else { - hitAnim = ANIM_KO_SKID_BACK; + hitAnim = ANIM_STD_HIGHIMPACT_BACK; } break; case 3: - hitAnim = ANIM_KO_SPIN_L; + hitAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: if (hitLevel == HITLEVEL_LOW) { - hitAnim = ANIM_KO_SHOT_STOM; + hitAnim = ANIM_STD_KO_SHOT_STOMACH; } else if (CGeneral::GetRandomNumber() & 1) { fall = false; - hitAnim = ANIM_HIT_WALK; + hitAnim = ANIM_STD_HIT_WALK; } else if (CGeneral::GetRandomNumber() & 1) { fall = false; - hitAnim = ANIM_HIT_HEAD; + hitAnim = ANIM_STD_HIT_HEAD; } else { - hitAnim = ANIM_KO_SHOT_FACE; + hitAnim = ANIM_STD_KO_SHOT_FACE; } break; } @@ -981,15 +981,15 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) case HITLEVEL_LOW: #ifndef VC_PED_PORTS if (direction == 2) { - SetFall(1000, ANIM_KO_SKID_BACK, false); + SetFall(1000, ANIM_STD_HIGHIMPACT_BACK, false); return; } #else if (direction == 2 && (!IsPlayer() || ((CGeneral::GetRandomNumber() & 1) && m_fHealth < 30.0f))) { - SetFall(1000, ANIM_KO_SKID_BACK, false); + SetFall(1000, ANIM_STD_HIGHIMPACT_BACK, false); return; } else if (direction != 2 && !IsPlayer() && (CGeneral::GetRandomNumber() & 1) && m_fHealth < 30.0f) { - SetFall(1000, ANIM_KO_SHOT_STOM, false); + SetFall(1000, ANIM_STD_KO_SHOT_STOMACH, false); return; } #endif @@ -1061,14 +1061,14 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) SetPedState(PED_FIGHT); m_fightButtonPressure = 0; RpAnimBlendClumpRemoveAssociations(GetClump(), ASSOC_REPEAT); - CAnimBlendAssociation *walkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START); + CAnimBlendAssociation *walkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_STARTWALK); if (walkStartAssoc) { walkStartAssoc->flags |= ASSOC_DELETEFADEDOUT; walkStartAssoc->blendDelta = -1000.0f; } - CAnimBlendAssociation *walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP); + CAnimBlendAssociation *walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP1); if (!walkStopAssoc) - walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R); + walkStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2); if (walkStopAssoc) { walkStopAssoc->flags |= ASSOC_DELETEFADEDOUT; walkStopAssoc->blendDelta = -1000.0f; @@ -1076,7 +1076,7 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) } SetMoveState(PEDMOVE_NONE); m_nStoredMoveState = PEDMOVE_NONE; - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_IDLE)->blendAmount = 1.0f; + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_IDLE)->blendAmount = 1.0f; CAnimBlendAssociation *moveAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, tFightMoves[m_curFightMove].animId, 8.0f); moveAssoc->SetFinishCallback(FinishFightMoveCB, this); m_fightState = FIGHTSTATE_NO_MOVE; @@ -1445,22 +1445,22 @@ CPed::EndFight(uint8 endType) m_curFightMove = FIGHTMOVE_NULL; RestorePreviousState(); - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); if (animAssoc) animAssoc->flags |= ASSOC_DELETEFADEDOUT; switch (endType) { case ENDFIGHT_NORMAL: - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f); - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT2_IDLE, 8.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_2IDLE, 8.0f); break; case ENDFIGHT_WITH_A_STEP: - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 1.0f); - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_WALK_START, 8.0f); + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 1.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_STARTWALK, 8.0f); break; case ENDFIGHT_FAST: - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f); - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT2_IDLE, 8.0f)->speed = 2.0f; + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_FIGHT_2IDLE, 8.0f)->speed = 2.0f; break; default: break; @@ -1656,7 +1656,7 @@ CPed::FightStrike(CVector &touchedNodePos) || GetWeapon()->m_eWeaponType != WEAPONTYPE_UNARMED && IsPlayer() || nearPed->m_pedStats->m_flags & STAT_ONE_HIT_KNOCKDOWN)) { - nearPed->SetFall(0, (AnimationId)(direction + ANIM_KO_SKID_FRONT), 0); + nearPed->SetFall(0, (AnimationId)(direction + ANIM_STD_HIGHIMPACT_FRONT), 0); if (nearPed->m_nPedState == PED_FALL) nearPed->bIsStanding = false; } @@ -1778,7 +1778,7 @@ CPed::LoadFightData(void) animAssoc = CAnimManager::GetAnimAssociation(ASSOCGRP_STD, animName); tFightMoves[moveId].animId = (AnimationId)animAssoc->animId; } else { - tFightMoves[moveId].animId = ANIM_WALK; + tFightMoves[moveId].animId = ANIM_STD_WALK; } moveId++; } @@ -1802,7 +1802,7 @@ CPed::SetInvestigateEvent(eEventType event, CVector2D pos, float distanceToCount if (m_eventType >= EVENT_ICECREAM) m_lookTimer = 0; else - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_HANDSCOWER, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_HANDSCOWER, 4.0f); } @@ -1842,7 +1842,7 @@ CPed::InvestigateEvent(void) case EVENT_HIT_AND_RUN_COP: if (CTimer::GetTimeInMilliseconds() > m_lookTimer) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS); if (animAssoc) { animAssoc->blendDelta = -8.0f; @@ -1854,7 +1854,7 @@ CPed::InvestigateEvent(void) } else if (CGeneral::GetRandomNumber() & 3) { ClearLookFlag(); - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ROAD_CROSS, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROADCROSS, 4.0f); SetLookTimer(CGeneral::GetRandomNumberInRange(1000, 2500)); Say(SOUND_PED_CHAT_EVENT); @@ -1868,16 +1868,16 @@ CPed::InvestigateEvent(void) case EVENT_EXPLOSION: if (bHasACamera && CTimer::GetTimeInMilliseconds() > m_lookTimer) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CAM); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_CAM); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); - if (animAssoc && animAssoc->animId == ANIM_IDLE_CAM) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + if (animAssoc && animAssoc->animId == ANIM_STD_IDLE_CAM) { + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f); SetLookTimer(CGeneral::GetRandomNumberInRange(1000, 2500)); } else if (CGeneral::GetRandomNumber() & 3) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_CAM, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_CAM, 4.0f); SetLookTimer(CGeneral::GetRandomNumberInRange(2500, 5000)); Say(SOUND_PED_CHAT_EVENT); @@ -1886,30 +1886,30 @@ CPed::InvestigateEvent(void) } } else if (CTimer::GetTimeInMilliseconds() > m_lookTimer) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH); - if (animAssoc && animAssoc->animId == ANIM_IDLE_STANCE) { + if (animAssoc && animAssoc->animId == ANIM_STD_IDLE) { if (CGeneral::GetRandomNumber() & 1) - animToPlay = ANIM_IDLE_HBHB; + animToPlay = ANIM_STD_IDLE_HBHB; else - animToPlay = ANIM_XPRESS_SCRATCH; + animToPlay = ANIM_STD_XPRESS_SCRATCH; CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay, 4.0f); SetLookTimer(CGeneral::GetRandomNumberInRange(1500, 4000)); - } else if (animAssoc && animAssoc->animId == ANIM_IDLE_HBHB) { + } else if (animAssoc && animAssoc->animId == ANIM_STD_IDLE_HBHB) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; if (CGeneral::GetRandomNumber() & 1) { - animToPlay = ANIM_IDLE_STANCE; + animToPlay = ANIM_STD_IDLE; animGroup = m_animGroup; } else { - animToPlay = ANIM_XPRESS_SCRATCH; + animToPlay = ANIM_STD_XPRESS_SCRATCH; animGroup = ASSOCGRP_STD; } @@ -1918,10 +1918,10 @@ CPed::InvestigateEvent(void) } else { if (CGeneral::GetRandomNumber() & 1) { - animToPlay = ANIM_IDLE_STANCE; + animToPlay = ANIM_STD_IDLE; animGroup = m_animGroup; } else { - animToPlay = ANIM_IDLE_HBHB; + animToPlay = ANIM_STD_IDLE_HBHB; animGroup = ASSOCGRP_STD; } @@ -1938,26 +1938,26 @@ CPed::InvestigateEvent(void) if (CTimer::GetTimeInMilliseconds() > m_lookTimer) { if (m_lookTimer) { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; if (m_eventType == EVENT_ICECREAM) - animToPlay = ANIM_IDLE_CHAT; + animToPlay = ANIM_STD_CHAT; else - animToPlay = ANIM_XPRESS_SCRATCH; + animToPlay = ANIM_STD_XPRESS_SCRATCH; CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, animToPlay,4.0f); SetLookTimer(CGeneral::GetRandomNumberInRange(2000, 5000)); } else { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; ClearInvestigateEvent(); } else { - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -1966,7 +1966,7 @@ CPed::InvestigateEvent(void) } } } else { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_ROAD_CROSS, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_ROADCROSS, 4.0f); SetLookTimer(CGeneral::GetRandomNumberInRange(1000, 2500)); } } @@ -2009,13 +2009,13 @@ CPed::InvestigateEvent(void) void CPed::ClearInvestigateEvent(void) { - CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_ROAD_CROSS); + CAnimBlendAssociation *animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_ROADCROSS); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_XPRESS_SCRATCH); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_XPRESS_SCRATCH); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_HBHB); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_HBHB); if (!animAssoc) - animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_CHAT); + animAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CHAT); if (animAssoc) { animAssoc->blendDelta = -8.0f; animAssoc->flags |= ASSOC_DELETEFADEDOUT; @@ -2037,7 +2037,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi CPlayerPed *player = FindPlayerPed(); float dieDelta = 4.0f; float dieSpeed = 0.0f; - AnimationId dieAnim = ANIM_KO_SHOT_FRONT1; + AnimationId dieAnim = ANIM_STD_KO_FRONT; bool headShot = false; bool willLinger = false; int random; @@ -2069,14 +2069,14 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (m_nPedState == PED_FALL || m_nPedState == PED_GETUP) { if (!IsPedHeadAbovePos(-0.3f)) { if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL)) - dieAnim = ANIM_FLOOR_HIT_F; + dieAnim = ANIM_STD_HIT_FLOOR_FRONT; else - dieAnim = ANIM_FLOOR_HIT; + dieAnim = ANIM_STD_HIT_FLOOR; dieDelta *= 2.0f; dieSpeed = 0.5f; detectDieAnim = false; } else if (m_nPedState == PED_FALL) { - dieAnim = NUM_ANIMS; + dieAnim = ANIM_STD_NUM; detectDieAnim = false; } } @@ -2088,28 +2088,28 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (m_nPedState == PED_FALL) { if (IsPedHeadAbovePos(-0.3f)) { - dieAnim = NUM_ANIMS; + dieAnim = ANIM_STD_NUM; } else { if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL)) - dieAnim = ANIM_FLOOR_HIT_F; + dieAnim = ANIM_STD_HIT_FLOOR_FRONT; else - dieAnim = ANIM_FLOOR_HIT; + dieAnim = ANIM_STD_HIT_FLOOR; dieDelta = dieDelta * 2.0f; dieSpeed = 0.5f; } } else { switch (direction) { case 0: - dieAnim = ANIM_KO_SKID_FRONT; + dieAnim = ANIM_STD_HIGHIMPACT_FRONT; break; case 1: - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: - dieAnim = ANIM_KO_SKID_BACK; + dieAnim = ANIM_STD_HIGHIMPACT_BACK; break; case 3: - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: break; @@ -2122,28 +2122,28 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (m_nPedState == PED_FALL) { if (IsPedHeadAbovePos(-0.3f)) { - dieAnim = NUM_ANIMS; + dieAnim = ANIM_STD_NUM; } else { if (RpAnimBlendClumpGetFirstAssociation(GetClump(), ASSOC_FRONTAL)) - dieAnim = ANIM_FLOOR_HIT_F; + dieAnim = ANIM_STD_HIT_FLOOR_FRONT; else - dieAnim = ANIM_FLOOR_HIT; + dieAnim = ANIM_STD_HIT_FLOOR; dieDelta = dieDelta * 2.0f; dieSpeed = 0.5f; } } else { switch (direction) { case 0: - dieAnim = ANIM_KO_SKID_FRONT; + dieAnim = ANIM_STD_HIGHIMPACT_FRONT; break; case 1: - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: - dieAnim = ANIM_KO_SKID_BACK; + dieAnim = ANIM_STD_HIGHIMPACT_BACK; break; case 3: - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: break; @@ -2183,56 +2183,56 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (method == WEAPONTYPE_SHOTGUN) { switch (direction) { case 0: - dieAnim = ANIM_KO_SKID_FRONT; + dieAnim = ANIM_STD_HIGHIMPACT_FRONT; break; case 1: - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: - dieAnim = ANIM_KO_SKID_BACK; + dieAnim = ANIM_STD_HIGHIMPACT_BACK; break; case 3: - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: break; } } else - dieAnim = ANIM_KO_SHOT_FRONT1; + dieAnim = ANIM_STD_KO_FRONT; willLinger = false; } else { switch (pedPiece) { case PEDPIECE_TORSO: willLinger = false; - dieAnim = ANIM_KO_SHOT_FRONT1; + dieAnim = ANIM_STD_KO_FRONT; break; case PEDPIECE_MID: willLinger = false; - dieAnim = ANIM_KO_SHOT_STOM; + dieAnim = ANIM_STD_KO_SHOT_STOMACH; break; case PEDPIECE_LEFTARM: - dieAnim = ANIM_KO_SHOT_ARML; + dieAnim = ANIM_STD_KO_SHOT_ARM_L; RemoveBodyPart(PED_UPPERARML, direction); willLinger = true; break; case PEDPIECE_RIGHTARM: - dieAnim = ANIM_KO_SHOT_ARMR; + dieAnim = ANIM_STD_KO_SHOT_ARM_R; RemoveBodyPart(PED_UPPERARMR, direction); willLinger = true; break; case PEDPIECE_LEFTLEG: - dieAnim = ANIM_KO_SHOT_LEGL; + dieAnim = ANIM_STD_KO_SHOT_LEG_L; RemoveBodyPart(PED_UPPERLEGL, direction); willLinger = true; break; case PEDPIECE_RIGHTLEG: - dieAnim = ANIM_KO_SHOT_LEGR; + dieAnim = ANIM_STD_KO_SHOT_LEG_R; RemoveBodyPart(PED_UPPERLEGR, direction); willLinger = true; break; case PEDPIECE_HEAD: - dieAnim = ANIM_KO_SHOT_FACE; + dieAnim = ANIM_STD_KO_SHOT_FACE; RemoveBodyPart(PED_HEAD, direction); headShot = true; willLinger = true; @@ -2272,16 +2272,16 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi switch (direction) { case 0: - dieAnim = ANIM_KO_SKID_FRONT; + dieAnim = ANIM_STD_HIGHIMPACT_FRONT; break; case 1: - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: - dieAnim = ANIM_KO_SKID_BACK; + dieAnim = ANIM_STD_HIGHIMPACT_BACK; break; case 3: - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: break; @@ -2291,7 +2291,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (bFireProof) return false; - dieAnim = ANIM_KO_SHOT_FRONT1; + dieAnim = ANIM_STD_KO_FRONT; break; case WEAPONTYPE_RAMMEDBYCAR: case WEAPONTYPE_RUNOVERBYCAR: @@ -2306,36 +2306,36 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (pedPiece == PEDPIECE_RIGHTARM && random > 1 || pedPiece == PEDPIECE_MID && random == 2) - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; else - dieAnim = ANIM_KO_SKID_FRONT; + dieAnim = ANIM_STD_HIGHIMPACT_FRONT; } else - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 1: if (m_nPedState == PED_DIVE_AWAY) - dieAnim = ANIM_KD_LEFT; + dieAnim = ANIM_STD_SPINFORWARD_LEFT; else - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: if ((pedPiece != PEDPIECE_LEFTARM || random <= 1) && (pedPiece != PEDPIECE_MID || random != 1)) { if ((pedPiece != PEDPIECE_RIGHTARM || random <= 1) && (pedPiece != PEDPIECE_MID || random != 2)) { - dieAnim = ANIM_KO_SKID_BACK; + dieAnim = ANIM_STD_HIGHIMPACT_BACK; } else { - dieAnim = ANIM_KD_RIGHT; + dieAnim = ANIM_STD_SPINFORWARD_RIGHT; } } else - dieAnim = ANIM_KD_LEFT; + dieAnim = ANIM_STD_SPINFORWARD_LEFT; break; case 3: if (m_nPedState == PED_DIVE_AWAY) - dieAnim = ANIM_KD_RIGHT; + dieAnim = ANIM_STD_SPINFORWARD_RIGHT; else - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: break; @@ -2353,7 +2353,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi } break; case WEAPONTYPE_DROWNING: - dieAnim = ANIM_DROWN; + dieAnim = ANIM_STD_DROWN; break; case WEAPONTYPE_FALL: if (bCollisionProof) @@ -2361,16 +2361,16 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi switch (direction) { case 0: - dieAnim = ANIM_KO_SKID_FRONT; + dieAnim = ANIM_STD_HIGHIMPACT_FRONT; break; case 1: - dieAnim = ANIM_KO_SPIN_R; + dieAnim = ANIM_STD_HIGHIMPACT_LEFT; break; case 2: - dieAnim = ANIM_KO_SKID_BACK; + dieAnim = ANIM_STD_HIGHIMPACT_BACK; break; case 3: - dieAnim = ANIM_KO_SPIN_L; + dieAnim = ANIM_STD_HIGHIMPACT_RIGHT; break; default: break; @@ -2460,7 +2460,7 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi if (player == this) m_pMyVehicle->SetStatus(STATUS_PLAYER_DISABLED); - SetDie(NUM_ANIMS, 4.0f, 0.0f); + SetDie(ANIM_STD_NUM, 4.0f, 0.0f); return true; } else { m_fHealth = 0.0f; @@ -2663,7 +2663,7 @@ CPed::ApplyHeadShot(eWeaponType weaponType, CVector pos, bool evenOnPlayer) // BUG: This condition will always return true. Even fixing it won't work, because these states are unused. // if (m_nPedState != PED_PASSENGER || m_nPedState != PED_TAXI_PASSENGER) { - SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); // } bBodyPartJustCameOff = true; @@ -2887,7 +2887,7 @@ CPed::CollideWithPed(CPed *collideWith) } else { SetLookFlag(collideWith, false); TurnBody(); - animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_FIGHT_PPUNCH, 8.0f); + animAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_PARTIAL_PUNCH, 8.0f); animAssoc->flags |= ASSOC_FADEOUTWHENDONE; #ifdef VC_PED_PORTS m_nPedStateTimer = CTimer::GetTimeInMilliseconds() + 2000; @@ -2912,22 +2912,22 @@ CPed::CollideWithPed(CPed *collideWith) moveForce.z += 0.1f; ApplyMoveForce(moveForce); if (collideWith->m_nMoveState != PEDMOVE_RUN && collideWith->m_nMoveState != PEDMOVE_SPRINT) - animToPlay = ANIM_HIT_LEFT; + animToPlay = ANIM_STD_HIT_LEFT; else - animToPlay = ANIM_SHOT_LEFT_PARTIAL; + animToPlay = ANIM_STD_HITBYGUN_LEFT; } else if (heLooksToUs) { CVector moveForce = GetRight() * -1.0f; moveForce.z += 0.1f; ApplyMoveForce(moveForce); if (collideWith->m_nMoveState != PEDMOVE_RUN && collideWith->m_nMoveState != PEDMOVE_SPRINT) - animToPlay = ANIM_HIT_RIGHT; + animToPlay = ANIM_STD_HIT_RIGHT; else - animToPlay = ANIM_SHOT_RIGHT_PARTIAL; + animToPlay = ANIM_STD_HITBYGUN_RIGHT; } else { if (collideWith->m_nMoveState != PEDMOVE_RUN && collideWith->m_nMoveState != PEDMOVE_SPRINT) - animToPlay = ANIM_HIT_BACK; + animToPlay = ANIM_STD_HIT_BACK; else - animToPlay = ANIM_SHOT_BACK_PARTIAL; + animToPlay = ANIM_STD_HITBYGUN_BACK; } if (collideWith->IsPedInControl() && CTimer::GetTimeInMilliseconds() > collideWith->m_nPedStateTimer) { @@ -2944,17 +2944,17 @@ CPed::CollideWithPed(CPed *collideWith) moveForce.z += 0.1f; ApplyMoveForce(moveForce); if (heLooksToUs) - animToPlay = ANIM_KO_SPIN_L; + animToPlay = ANIM_STD_HIGHIMPACT_RIGHT; else - animToPlay = ANIM_KD_RIGHT; + animToPlay = ANIM_STD_SPINFORWARD_RIGHT; } else { CVector moveForce = GetRight(); moveForce.z += 0.1f; ApplyMoveForce(moveForce); if (heLooksToUs) - animToPlay = ANIM_KO_SPIN_R; + animToPlay = ANIM_STD_HIGHIMPACT_LEFT; else - animToPlay = ANIM_KD_LEFT; + animToPlay = ANIM_STD_SPINFORWARD_LEFT; } if (m_nPedState == PED_ATTACK && collideWith->IsPedInControl()) @@ -3209,7 +3209,7 @@ CPed::KillPedWithCar(CVehicle *car, float impulse) damage = 30.0f; InflictDamage(car, WEAPONTYPE_RAMMEDBYCAR, damage, PEDPIECE_TORSO, fallDirection); - SetFall(1000, (AnimationId)(fallDirection + ANIM_KO_SKID_FRONT), true); + SetFall(1000, (AnimationId)(fallDirection + ANIM_STD_HIGHIMPACT_FRONT), true); if (OnGround() && !m_pCollidingEntity && (!IsPlayer() || bHasHitWall || car->GetModelIndex() == MI_TRAIN || m_vecDamageNormal.z < -0.8f)) { diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index ae981d1d..53187d0b 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -206,7 +206,7 @@ CPlayerPed::MakeChangesForNewWeapon(int8 weapon) void CPlayerPed::ReApplyMoveAnims(void) { - static AnimationId moveAnims[] = { ANIM_WALK, ANIM_RUN, ANIM_SPRINT, ANIM_IDLE_STANCE, ANIM_WALK_START }; + static AnimationId moveAnims[] = { ANIM_STD_WALK, ANIM_STD_RUN, ANIM_STD_RUNFAST, ANIM_STD_IDLE, ANIM_STD_STARTWALK }; for(int i = 0; i < ARRAY_SIZE(moveAnims); i++) { CAnimBlendAssociation *curMoveAssoc = RpAnimBlendClumpGetAssociation(GetClump(), moveAnims[i]); @@ -262,13 +262,13 @@ CPlayerPed::SetInitialState(void) void CPlayerPed::SetRealMoveAnim(void) { - CAnimBlendAssociation *curWalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK); - CAnimBlendAssociation *curRunAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN); - CAnimBlendAssociation *curSprintAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_SPRINT); - CAnimBlendAssociation *curWalkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_WALK_START); - CAnimBlendAssociation *curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_STANCE); - CAnimBlendAssociation *curRunStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP); - CAnimBlendAssociation *curRunStopRAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_RUN_STOP_R); + CAnimBlendAssociation *curWalkAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_WALK); + CAnimBlendAssociation *curRunAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUN); + CAnimBlendAssociation *curSprintAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNFAST); + CAnimBlendAssociation *curWalkStartAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_STARTWALK); + CAnimBlendAssociation *curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE); + CAnimBlendAssociation *curRunStopAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP1); + CAnimBlendAssociation *curRunStopRAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_RUNSTOP2); if (bResetWalkAnims) { if (curWalkAssoc) curWalkAssoc->SetCurrentTime(0.0f); @@ -280,9 +280,9 @@ CPlayerPed::SetRealMoveAnim(void) } if (!curIdleAssoc) - curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); if (!curIdleAssoc) - curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + curIdleAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); if (!((curRunStopAssoc && curRunStopAssoc->IsRunning()) || (curRunStopRAssoc && curRunStopRAssoc->IsRunning()))) { @@ -301,10 +301,10 @@ CPlayerPed::SetRealMoveAnim(void) if (!curIdleAssoc) { if (m_fCurrentStamina < 0.0f && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.5f, nil, true, false, false, false, false, false)) { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 8.0f); + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 8.0f); } else { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 8.0f); + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 8.0f); } m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000); } @@ -315,25 +315,25 @@ CPlayerPed::SetRealMoveAnim(void) if (!curIdleAssoc) { if (m_fCurrentStamina < 0.0f && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.5f, nil, true, false, false, false, false, false)) { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f); } else { - curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + curIdleAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f); } m_nWaitTimer = CTimer::GetTimeInMilliseconds() + CGeneral::GetRandomNumberInRange(2500, 4000); } - if (m_fCurrentStamina > 0.0f && curIdleAssoc->animId == ANIM_IDLE_TIRED) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + if (m_fCurrentStamina > 0.0f && curIdleAssoc->animId == ANIM_STD_IDLE_TIRED) { + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f); } else if (m_nPedState != PED_FIGHT) { - if (m_fCurrentStamina < 0.0f && curIdleAssoc->animId != ANIM_IDLE_TIRED + if (m_fCurrentStamina < 0.0f && curIdleAssoc->animId != ANIM_STD_IDLE_TIRED && !CWorld::TestSphereAgainstWorld(GetPosition(), 0.5f, nil, true, false, false, false, false, false)) { - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_TIRED, 4.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE_TIRED, 4.0f); - } else if (curIdleAssoc->animId != ANIM_IDLE_STANCE) { - CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_IDLE_STANCE, 4.0f); + } else if (curIdleAssoc->animId != ANIM_STD_IDLE) { + CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_IDLE, 4.0f); } } m_nMoveState = PEDMOVE_STILL; @@ -344,7 +344,7 @@ CPlayerPed::SetRealMoveAnim(void) curWalkStartAssoc->blendAmount = 1.0f; curWalkStartAssoc->blendDelta = 0.0f; } else { - curWalkStartAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK_START); + curWalkStartAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_STARTWALK); } if (curWalkAssoc) curWalkAssoc->SetCurrentTime(0.0f); @@ -352,8 +352,8 @@ CPlayerPed::SetRealMoveAnim(void) curRunAssoc->SetCurrentTime(0.0f); delete curIdleAssoc; - delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_IDLE_TIRED); - delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FIGHT_IDLE); + delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_IDLE_TIRED); + delete RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FIGHT_IDLE); delete curSprintAssoc; curSprintAssoc = nil; @@ -368,11 +368,11 @@ CPlayerPed::SetRealMoveAnim(void) RestoreHeadingRate(); } if (!curWalkAssoc) { - curWalkAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_WALK); + curWalkAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_WALK); curWalkAssoc->blendAmount = 0.0f; } if (!curRunAssoc) { - curRunAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_RUN); + curRunAssoc = CAnimManager::AddAnimation(GetClump(), m_animGroup, ANIM_STD_RUN); curRunAssoc->blendAmount = 0.0f; } if (curWalkStartAssoc && !(curWalkStartAssoc->IsRunning())) { @@ -399,9 +399,9 @@ CPlayerPed::SetRealMoveAnim(void) if (m_fMoveSpeed < 0.4f) { AnimationId runStopAnim; if (curSprintAssoc->currentTime / curSprintAssoc->hierarchy->totalLength < 0.5) // double - runStopAnim = ANIM_RUN_STOP; + runStopAnim = ANIM_STD_RUNSTOP1; else - runStopAnim = ANIM_RUN_STOP_R; + runStopAnim = ANIM_STD_RUNSTOP2; CAnimBlendAssociation* newRunStopAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, runStopAnim); newRunStopAssoc->blendAmount = 1.0f; newRunStopAssoc->SetDeleteCallback(RestoreHeadingRateCB, this); @@ -444,7 +444,7 @@ CPlayerPed::SetRealMoveAnim(void) // Transition between run-sprint curWalkAssoc->blendAmount = 0.0f; curRunAssoc->blendAmount = 1.0f; - curSprintAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_SPRINT, 2.0f); + curSprintAssoc = CAnimManager::BlendAnimation(GetClump(), m_animGroup, ANIM_STD_RUNFAST, 2.0f); } UseSprintEnergy(); } else { @@ -539,14 +539,14 @@ CPlayerPed::DoesTargetHaveToBeBroken(CVector target, CWeapon *weaponUsed) void CPlayerPed::RunningLand(CPad *padUsed) { - CAnimBlendAssociation *landAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_FALL_LAND); + CAnimBlendAssociation *landAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL_LAND); if (landAssoc && landAssoc->currentTime == 0.0f && m_fMoveSpeed > 1.5f && padUsed && (padUsed->GetPedWalkLeftRight() != 0.0f || padUsed->GetPedWalkUpDown() != 0.0f)) { landAssoc->blendDelta = -1000.0f; landAssoc->flags |= ASSOC_DELETEFADEDOUT; - CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_JUMP_LAND)->SetFinishCallback(FinishJumpCB, this); + CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_JUMP_LAND)->SetFinishCallback(FinishJumpCB, this); if (m_nPedState == PED_JUMP) RestorePreviousState(); @@ -1009,7 +1009,7 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) TheCamera.SetNewPlayerWeaponMode(CCam::MODE_M16_1STPERSON, 0, 0); m_fMoveSpeed = 0.0f; - CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_IDLE_STANCE, 1000.0f); + CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_IDLE, 1000.0f); } if (GetWeapon()->m_eWeaponType == WEAPONTYPE_ROCKETLAUNCHER || GetWeapon()->m_eWeaponType == WEAPONTYPE_SNIPERRIFLE || TheCamera.PlayerWeaponMode.Mode == CCam::MODE_M16_1STPERSON) @@ -1280,24 +1280,24 @@ CPlayerPed::ProcessControl(void) } if (m_nPedState == PED_DRIVING && m_objective != OBJECTIVE_LEAVE_CAR) { if (m_pMyVehicle->IsCar() && ((CAutomobile*)m_pMyVehicle)->Damage.GetDoorStatus(DOOR_FRONT_LEFT) == DOOR_STATUS_SWINGING) { - CAnimBlendAssociation *rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR); + CAnimBlendAssociation *rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS); - if (m_pMyVehicle->m_nGettingOutFlags & CAR_DOOR_FLAG_LF || rollDoorAssoc || (rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_CAR_ROLLDOOR_LOW))) { + if (m_pMyVehicle->m_nGettingOutFlags & CAR_DOOR_FLAG_LF || rollDoorAssoc || (rollDoorAssoc = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS))) { if (rollDoorAssoc) - m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, rollDoorAssoc->currentTime); + m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, rollDoorAssoc->currentTime); } else { // These comparisons are wrong, they return uint16 if (padUsed && (padUsed->GetAccelerate() != 0.0f || padUsed->GetSteeringLeftRight() != 0.0f || padUsed->GetBrake() != 0.0f)) { if (rollDoorAssoc) - m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_CAR_ROLLDOOR, rollDoorAssoc->currentTime); + m_pMyVehicle->ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS, rollDoorAssoc->currentTime); } else { m_pMyVehicle->m_nGettingOutFlags |= CAR_DOOR_FLAG_LF; if (m_pMyVehicle->bLowVehicle) - rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR_LOW); + rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS); else - rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_CAR_ROLLDOOR); + rollDoorAssoc = CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS); rollDoorAssoc->SetFinishCallback(PedAnimDoorCloseRollingCB, this); } diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 053cf5e4..a0bf8be6 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -847,7 +847,7 @@ CPopulation::AddPedInCar(CVehicle* car) } #else { - newPed->m_pVehicleAnim = CAnimManager::BlendAnimation(newPed->GetClump(), ASSOCGRP_STD, ANIM_CAR_SIT, 100.0f); + newPed->m_pVehicleAnim = CAnimManager::BlendAnimation(newPed->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_SIT, 100.0f); } #endif diff --git a/src/render/WaterCannon.cpp b/src/render/WaterCannon.cpp index f54b31b9..5cc9d0b8 100644 --- a/src/render/WaterCannon.cpp +++ b/src/render/WaterCannon.cpp @@ -231,7 +231,7 @@ void CWaterCannon::PushPeds(void) ped->m_vecMoveSpeed.x = (0.6f * m_avecVelocity[j].x + ped->m_vecMoveSpeed.x) * 0.5f; ped->m_vecMoveSpeed.y = (0.6f * m_avecVelocity[j].y + ped->m_vecMoveSpeed.y) * 0.5f; - ped->SetFall(2000, AnimationId(ANIM_KO_SKID_FRONT + localDir), 0); + ped->SetFall(2000, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), 0); CFire *fire = ped->m_pFire; if ( fire ) diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 7e8c4702..4863b945 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -3058,21 +3058,21 @@ CAutomobile::DoDriveByShootings(void) if(lookingLeft || lookingRight){ if(lookingLeft){ - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_R); + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT); if(anim) anim->blendDelta = -1000.0f; - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_L); + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT); if(anim == nil || anim->blendDelta < 0.0f) - CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_DRIVEBY_L); + CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVEBY_LEFT); else anim->SetRun(); }else if(pDriver->m_pMyVehicle->pPassengers[0] == nil || TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_1STPERSON){ - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_L); + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT); if(anim) anim->blendDelta = -1000.0f; - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_R); + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT); if(anim == nil || anim->blendDelta < 0.0f) - CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_DRIVEBY_R); + CAnimManager::AddAnimation(pDriver->GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVEBY_RIGHT); else anim->SetRun(); } @@ -3083,10 +3083,10 @@ CAutomobile::DoDriveByShootings(void) } }else{ weapon->Reload(); - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_L); + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_LEFT); if(anim) anim->blendDelta = -1000.0f; - anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_DRIVEBY_R); + anim = RpAnimBlendClumpGetAssociation(pDriver->GetClump(), ANIM_STD_CAR_DRIVEBY_RIGHT); if(anim) anim->blendDelta = -1000.0f; } @@ -3094,11 +3094,11 @@ CAutomobile::DoDriveByShootings(void) // TODO: what is this? if(!lookingLeft && m_weaponDoorTimerLeft > 0.0f){ m_weaponDoorTimerLeft = Max(m_weaponDoorTimerLeft - CTimer::GetTimeStep()*0.1f, 0.0f); - ProcessOpenDoor(CAR_DOOR_LF, NUM_ANIMS, m_weaponDoorTimerLeft); + ProcessOpenDoor(CAR_DOOR_LF, ANIM_STD_NUM, m_weaponDoorTimerLeft); } if(!lookingRight && m_weaponDoorTimerRight > 0.0f){ m_weaponDoorTimerRight = Max(m_weaponDoorTimerRight - CTimer::GetTimeStep()*0.1f, 0.0f); - ProcessOpenDoor(CAR_DOOR_RF, NUM_ANIMS, m_weaponDoorTimerRight); + ProcessOpenDoor(CAR_DOOR_RF, ANIM_STD_NUM, m_weaponDoorTimerRight); } } @@ -3736,55 +3736,55 @@ CAutomobile::ProcessOpenDoor(uint32 component, uint32 anim, float time) return; switch(anim){ - case ANIM_CAR_QJACK: - case ANIM_CAR_OPEN_LHS: - case ANIM_CAR_OPEN_RHS: + case ANIM_STD_QUICKJACK: + case ANIM_STD_CAR_OPEN_DOOR_LHS: + case ANIM_STD_CAR_OPEN_DOOR_RHS: ProcessDoorOpenAnimation(this, component, door, time, 0.66f, 0.8f); break; - case ANIM_CAR_CLOSEDOOR_LHS: - case ANIM_CAR_CLOSEDOOR_LOW_LHS: - case ANIM_CAR_CLOSEDOOR_RHS: - case ANIM_CAR_CLOSEDOOR_LOW_RHS: + case ANIM_STD_CAR_CLOSE_DOOR_LHS: + case ANIM_STD_CAR_CLOSE_DOOR_LO_LHS: + case ANIM_STD_CAR_CLOSE_DOOR_RHS: + case ANIM_STD_CAR_CLOSE_DOOR_LO_RHS: ProcessDoorCloseAnimation(this, component, door, time, 0.2f, 0.63f); break; - case ANIM_CAR_ROLLDOOR: - case ANIM_CAR_ROLLDOOR_LOW: + case ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LHS: + case ANIM_STD_CAR_CLOSE_DOOR_ROLLING_LO_LHS: ProcessDoorOpenCloseAnimation(this, component, door, time, 0.1f, 0.6f, 0.95f); break; - case ANIM_CAR_GETOUT_LHS: - case ANIM_CAR_GETOUT_LOW_LHS: - case ANIM_CAR_GETOUT_RHS: - case ANIM_CAR_GETOUT_LOW_RHS: + case ANIM_STD_GETOUT_LHS: + case ANIM_STD_GETOUT_LO_LHS: + case ANIM_STD_GETOUT_RHS: + case ANIM_STD_GETOUT_LO_RHS: ProcessDoorOpenAnimation(this, component, door, time, 0.06f, 0.43f); break; - case ANIM_CAR_CLOSE_LHS: - case ANIM_CAR_CLOSE_RHS: + case ANIM_STD_CAR_CLOSE_LHS: + case ANIM_STD_CAR_CLOSE_RHS: ProcessDoorCloseAnimation(this, component, door, time, 0.1f, 0.23f); break; - case ANIM_CAR_PULLOUT_RHS: - case ANIM_CAR_PULLOUT_LOW_RHS: + case ANIM_STD_CAR_PULL_OUT_PED_RHS: + case ANIM_STD_CAR_PULL_OUT_PED_LO_RHS: OpenDoor(component, door, 1.0f); break; - case ANIM_COACH_OPEN_L: - case ANIM_COACH_OPEN_R: + case ANIM_STD_COACH_OPEN_LHS: + case ANIM_STD_COACH_OPEN_RHS: ProcessDoorOpenAnimation(this, component, door, time, 0.66f, 0.8f); break; - case ANIM_COACH_OUT_L: + case ANIM_STD_COACH_GET_OUT_LHS: ProcessDoorOpenAnimation(this, component, door, time, 0.0f, 0.3f); break; - case ANIM_VAN_OPEN_L: - case ANIM_VAN_OPEN: + case ANIM_STD_VAN_OPEN_DOOR_REAR_LHS: + case ANIM_STD_VAN_OPEN_DOOR_REAR_RHS: ProcessDoorOpenAnimation(this, component, door, time, 0.37f, 0.55f); break; - case ANIM_VAN_CLOSE_L: - case ANIM_VAN_CLOSE: + case ANIM_STD_VAN_CLOSE_DOOR_REAR_LHS: + case ANIM_STD_VAN_CLOSE_DOOR_REAR_RHS: ProcessDoorCloseAnimation(this, component, door, time, 0.5f, 0.8f); break; - case ANIM_VAN_GETOUT_L: - case ANIM_VAN_GETOUT: + case ANIM_STD_VAN_GET_OUT_REAR_LHS: + case ANIM_STD_VAN_GET_OUT_REAR_RHS: ProcessDoorOpenAnimation(this, component, door, time, 0.5f, 0.6f); break; - case NUM_ANIMS: + case ANIM_STD_NUM: OpenDoor(component, door, time); break; } @@ -3879,7 +3879,7 @@ CAutomobile::BlowUpCar(CEntity *culprit) if(!pDriver->IsPlayer()) pDriver->FlagToDestroyWhenNextProcessed(); }else - pDriver->SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + pDriver->SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); } for(i = 0; i < m_nNumMaxPassengers; i++){ if(pPassengers[i]){ @@ -3889,7 +3889,7 @@ CAutomobile::BlowUpCar(CEntity *culprit) if(!pPassengers[i]->IsPlayer()) pPassengers[i]->FlagToDestroyWhenNextProcessed(); }else - pPassengers[i]->SetDie(ANIM_KO_SHOT_FRONT1, 4.0f, 0.0f); + pPassengers[i]->SetDie(ANIM_STD_KO_FRONT, 4.0f, 0.0f); } } diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index a6a4f815..5caad727 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -276,7 +276,7 @@ public: #endif CVehicleModelInfo* GetModelInfo() { return (CVehicleModelInfo*)CModelInfo::GetModelInfo(GetModelIndex()); } bool IsTaxi(void) { return GetModelIndex() == MI_TAXI || GetModelIndex() == MI_CABBIE || GetModelIndex() == MI_BORGNINE; } - AnimationId GetDriverAnim(void) { return IsCar() && bLowVehicle ? ANIM_CAR_LSIT : (IsBoat() && GetModelIndex() != MI_SPEEDER ? ANIM_DRIVE_BOAT : ANIM_CAR_SIT); } + AnimationId GetDriverAnim(void) { return IsCar() && bLowVehicle ? ANIM_STD_CAR_SIT_LO : (IsBoat() && GetModelIndex() != MI_SPEEDER ? ANIM_STD_BOAT_DRIVE : ANIM_STD_CAR_SIT); } static bool bWheelsOnlyCheat; static bool bAllDodosCheat; diff --git a/src/weapons/BulletInfo.cpp b/src/weapons/BulletInfo.cpp index e87a7407..bfe27e18 100644 --- a/src/weapons/BulletInfo.cpp +++ b/src/weapons/BulletInfo.cpp @@ -121,7 +121,7 @@ void CBulletInfo::Update(void) if (pPed->DoesLOSBulletHitPed(point)) { if (pPed->IsPedInControl() && !pPed->bIsDucking) { pPed->ClearAttackByRemovingAnim(); - CAnimBlendAssociation* pAnim = CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_SHOT_FRONT_PARTIAL); + CAnimBlendAssociation* pAnim = CAnimManager::AddAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HITBYGUN_FRONT); pAnim->SetBlend(0.0f, 8.0f); } pPed->InflictDamage(pBullet->m_pSource, pBullet->m_eWeaponType, pBullet->m_nDamage, (ePedPieceTypes)point.pieceB, pPed->GetLocalDirection(pPed->GetPosition() - point.point)); @@ -146,9 +146,9 @@ void CBulletInfo::Update(void) if (pPed->GetPedState() == PED_DEAD) { CAnimBlendAssociation* pAnim; if (RpAnimBlendClumpGetFirstAssociation(pPed->GetClump(), ASSOC_FRONTAL)) - pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f); + pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f); else - pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f); + pAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f); if (pAnim) { pAnim->SetCurrentTime(0.0f); pAnim->flags |= ASSOC_RUNNING; diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index a987a4c7..dab510be 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -473,9 +473,9 @@ CWeapon::FireMelee(CEntity *shooter, CVector &fireSource) victimPed->ApplyMoveForce(posOffset.x*-5.0f, posOffset.y*-5.0f, 3.0f); if ( isBat && victimPed->IsPlayer() ) - victimPed->SetFall(3000, AnimationId(ANIM_KO_SKID_FRONT + localDir), false); + victimPed->SetFall(3000, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false); else - victimPed->SetFall(1500, AnimationId(ANIM_KO_SKID_FRONT + localDir), false); + victimPed->SetFall(1500, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false); shooterPed->m_pSeekTarget = victimPed; shooterPed->m_pSeekTarget->RegisterReference(&shooterPed->m_pSeekTarget); @@ -904,7 +904,7 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim, victimPed->bIsStanding = false; victimPed->ApplyMoveForce(posOffset.x*-5.0f, posOffset.y*-5.0f, 5.0f); - victimPed->SetFall(1500, AnimationId(ANIM_KO_SKID_FRONT + localDir), false); + victimPed->SetFall(1500, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false); victimPed->InflictDamage(shooter, m_eWeaponType, info->m_nDamage, (ePedPieceTypes)point->pieceB, localDir); } @@ -917,7 +917,7 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim, { victimPed->ClearAttackByRemovingAnim(); - CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir)); + CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir)); ASSERT(asoc!=nil); asoc->blendAmount = 0.0f; @@ -933,7 +933,7 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim, { victimPed->ClearAttackByRemovingAnim(); - CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir)); + CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir)); ASSERT(asoc!=nil); asoc->blendAmount = 0.0f; @@ -983,9 +983,9 @@ CWeapon::DoBulletImpact(CEntity *shooter, CEntity *victim, { CAnimBlendAssociation *asoc; if ( RpAnimBlendClumpGetFirstAssociation(victimPed->GetClump(), ASSOC_FRONTAL) ) - asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT_F, 8.0f); + asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR_FRONT, 8.0f); else - asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_FLOOR_HIT, 8.0f); + asoc = CAnimManager::BlendAnimation(victimPed->GetClump(), ASSOCGRP_STD, ANIM_STD_HIT_FLOOR, 8.0f); if ( asoc ) { @@ -1248,7 +1248,7 @@ CWeapon::FireShotgun(CEntity *shooter, CVector *fireSource) victimPed->ApplyMoveForce(posOffset.x*-2.0f, posOffset.y*-2.0f, 0.0f); if ( cantStandup ) - victimPed->SetFall(1500, AnimationId(ANIM_KO_SKID_FRONT + localDir), false); + victimPed->SetFall(1500, AnimationId(ANIM_STD_HIGHIMPACT_FRONT + localDir), false); victimPed->InflictDamage(shooter, m_eWeaponType, info->m_nDamage, (ePedPieceTypes)point.pieceB, localDir); @@ -1719,7 +1719,7 @@ CWeapon::FireInstantHitFromCar(CAutomobile *shooter, bool left) victimPed->ReactToAttack(FindPlayerPed()); victimPed->ClearAttackByRemovingAnim(); - CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir)); + CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir)); ASSERT(asoc!=nil); asoc->blendAmount = 0.0f; asoc->blendDelta = 8.0f; @@ -2089,7 +2089,7 @@ FireOneInstantHitRound(CVector *source, CVector *target, int32 damage) victimPed->ClearAttackByRemovingAnim(); - CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_SHOT_FRONT_PARTIAL + localDir)); + CAnimBlendAssociation *asoc = CAnimManager::AddAnimation(victimPed->GetClump(), ASSOCGRP_STD, AnimationId(ANIM_STD_HITBYGUN_FRONT + localDir)); ASSERT(asoc!=nil); asoc->blendAmount = 0.0f; asoc->blendDelta = 8.0f; diff --git a/src/weapons/WeaponInfo.cpp b/src/weapons/WeaponInfo.cpp index 10737acb..ba872454 100644 --- a/src/weapons/WeaponInfo.cpp +++ b/src/weapons/WeaponInfo.cpp @@ -37,8 +37,8 @@ CWeaponInfo::Initialise(void) debug("Initialising CWeaponInfo...\n"); for (int i = 0; i < WEAPONTYPE_TOTALWEAPONS; i++) { aWeaponInfo[i].m_eWeaponFire = WEAPON_FIRE_INSTANT_HIT; - aWeaponInfo[i].m_AnimToPlay = ANIM_PUNCH_R; - aWeaponInfo[i].m_Anim2ToPlay = NUM_ANIMS; + aWeaponInfo[i].m_AnimToPlay = ANIM_STD_PUNCH; + aWeaponInfo[i].m_Anim2ToPlay = ANIM_STD_NUM; aWeaponInfo[i].m_Flags = WEAPONFLAG_USE_GRAVITY | WEAPONFLAG_SLOWS_DOWN | WEAPONFLAG_RAND_SPEED | WEAPONFLAG_EXPANDS | WEAPONFLAG_EXPLODES; } debug("Loading weapon data...\n"); @@ -96,7 +96,7 @@ CWeaponInfo::LoadWeaponData(void) fireType[0] = '\0'; fireOffsetY = 0.0f; fireOffsetZ = 0.0f; - animId = ANIM_WALK; + animId = ANIM_STD_WALK; sscanf( &line[lp], "%s %s %f %d %d %d %d %f %f %f %f %f %f %f %s %s %f %f %f %f %d %d", From d76b58cc72442f5370fc9533b96194d5c5880e71 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Sun, 24 Jan 2021 14:02:15 +0100 Subject: [PATCH 004/314] Add unnamed semaphore define toggle for CdStreamPosix --- src/core/CdStreamPosix.cpp | 77 +++++++++++++++++++++++++++++--------- 1 file changed, 60 insertions(+), 17 deletions(-) diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp index e18280e5..09611fba 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include "CdStream.h" @@ -25,6 +26,58 @@ bool flushStream[MAX_CDCHANNELS]; #endif +#ifdef USE_UNNAMED_SEM + +#define RE3_SEM_OPEN(name, ...) re3_sem_open() +sem_t* +re3_sem_open(void) +{ + sem_t* sem = (sem_t*)malloc(sizeof(sem_t)); + if (sem_init(sem, 0, 1) == -1) { + sem = SEM_FAILED; + } + + return sem; +} + +#define RE3_SEM_CLOSE(sem, format, ...) re3_sem_close(sem) +void +re3_sem_close(sem_t* sem) +{ + sem_destroy(sem); + free(sem); +} + +#else + +#define RE3_SEM_OPEN re3_sem_open +sem_t* +re3_sem_open(const char* format, ...) +{ + char semName[20]; + va_list va; + va_start(va, format); + vsprintf(semName, format, va); + + return sem_open(semName, O_CREAT, 0644, 1); +} + +#define RE3_SEM_CLOSE re3_sem_close +void +re3_sem_close(sem_t* sem, const char* format, ...) +{ + sem_close(sem); + + char semName[20]; + va_list va; + va_start(va, format); + vsprintf(semName, format, va); + + sem_unlink(semName); +} + +#endif + struct CdReadInfo { uint32 nSectorOffset; @@ -69,14 +122,13 @@ void CdStreamInitThread(void) { int status; - char semName[20]; #ifndef ONE_THREAD_PER_CHANNEL gChannelRequestQ.items = (int32 *)calloc(gNumChannels + 1, sizeof(int32)); gChannelRequestQ.head = 0; gChannelRequestQ.tail = 0; gChannelRequestQ.size = gNumChannels + 1; ASSERT(gChannelRequestQ.items != nil ); - gCdStreamSema = sem_open("/semaphore_cd_stream", O_CREAT, 0644, 0); + gCdStreamSema = RE3_SEM_OPEN("/semaphore_cd_stream"); if (gCdStreamSema == SEM_FAILED) { @@ -90,8 +142,7 @@ CdStreamInitThread(void) { for ( int32 i = 0; i < gNumChannels; i++ ) { - sprintf(semName,"/semaphore_done%d",i); - gpReadInfo[i].pDoneSemaphore = sem_open(semName, O_CREAT, 0644, 0); + gpReadInfo[i].pDoneSemaphore = RE3_SEM_OPEN("/semaphore_done%d", i); if (gpReadInfo[i].pDoneSemaphore == SEM_FAILED) { @@ -101,8 +152,7 @@ CdStreamInitThread(void) } #ifdef ONE_THREAD_PER_CHANNEL - sprintf(semName,"/semaphore_start%d",i); - gpReadInfo[i].pStartSemaphore = sem_open(semName, O_CREAT, 0644, 0); + gpReadInfo[i].pStartSemaphore = RE3_SEM_OPEN("/semaphore_start%d", i); if (gpReadInfo[i].pStartSemaphore == SEM_FAILED) { @@ -464,21 +514,14 @@ void *CdStreamThread(void *param) #ifndef ONE_THREAD_PER_CHANNEL for ( int32 i = 0; i < gNumChannels; i++ ) { - sem_close(gpReadInfo[i].pDoneSemaphore); - sprintf(semName,"/semaphore_done%d",i); - sem_unlink(semName); + RE3_SEM_CLOSE(gpReadInfo[i].pDoneSemaphore, "/semaphore_done%d", i); } - sem_close(gCdStreamSema); - sem_unlink("/semaphore_cd_stream"); + RE3_SEM_CLOSE(gCdStreamSema, "/semaphore_cd_stream"); free(gChannelRequestQ.items); #else - sem_close(gpReadInfo[channel].pStartSemaphore); - sprintf(semName,"/semaphore_start%d",channel); - sem_unlink(semName); + RE3_SEM_CLOSE(gpReadInfo[channel].pStartSemaphore, "/semaphore_start%d", channel); - sem_close(gpReadInfo[channel].pDoneSemaphore); - sprintf(semName,"/semaphore_done%d",channel); - sem_unlink(semName); + RE3_SEM_CLOSE(gpReadInfo[channel].pDoneSemaphore, "/semaphore_done%d", channel); #endif if (gpReadInfo) free(gpReadInfo); From b60baf46f682ae9302f5ecec1ffa21b302d90fbd Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Sun, 24 Jan 2021 16:34:47 +0100 Subject: [PATCH 005/314] Only include sys/syscall.h when __linux__ is defined --- src/core/CdStreamPosix.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp index 09611fba..50d823d2 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -1,8 +1,8 @@ #ifndef _WIN32 #include "common.h" #include "crossplatform.h" -#include #include +#include #include #include #include @@ -13,7 +13,10 @@ #include #include #include + +#ifdef __linux__ #include +#endif #include "CdStream.h" #include "rwcore.h" From 8d4c134f804bef994c2cbaa10381d3684e10e223 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Mon, 1 Feb 2021 11:54:31 +0100 Subject: [PATCH 006/314] Adding strings to re3's GXT, recompiling GXT files - Adding the Radio Off string (thank you!) to the Spanish translation. - Added translations for the new languages to the French/German/Italian translations (using WordReference, no automated translation) as well as the Radio Off string (taken from LCS's official translations and uppercased). It's a bandaid, I know. - Recompiled the GXT files. Russian will probably have differences, but since the last recompilation was rejected because of Russian, I've removed its binary version. --- gamefiles/TEXT/french.gxt | Bin 244494 -> 244628 bytes gamefiles/TEXT/german.gxt | Bin 240448 -> 240566 bytes gamefiles/TEXT/italian.gxt | Bin 239912 -> 240052 bytes gamefiles/TEXT/spanish.gxt | Bin 234854 -> 235018 bytes utils/gxt/french.txt | 14 ++++++++++++++ utils/gxt/german.txt | 14 ++++++++++++++ utils/gxt/italian.txt | 14 ++++++++++++++ utils/gxt/spanish.txt | 3 +++ 8 files changed, 45 insertions(+) diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index cb2874f9f4b58cc157eb9e0eacb909ca419f655c..6ba7995d5e11bda11284365544893ac26bdd3951 100644 GIT binary patch delta 45022 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 delta 43989 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 RE40yQxIS&-kSg^a)DAr#1vCR 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

&ue)AzjS%B$aQOt!6*`SyUo2Quz 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 diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 6b188fc606253a4f2edfb8c03e3d48c6101cee98..d36c9e10bef55ddf208aae78b55691e9723c0e89 100644 GIT binary patch delta 27184 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 O5h~!n7A1+`-v0-EJio{Q delta 27039 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 Date: Tue, 2 Feb 2021 11:35:16 +0100 Subject: [PATCH 007/314] no advanced script log when log level is 0 --- src/core/config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/config.h b/src/core/config.h index bb1ca5e3..8a500fd5 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -340,6 +340,10 @@ enum Config { #define USE_ADVANCED_SCRIPT_DEBUG_OUTPUT #define SCRIPT_LOG_FILE_LEVEL 0 // 0 == no log, 1 == overwrite every frame, 2 == full log +#if SCRIPT_LOG_FILE_LEVEL == 0 +#undef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT +#endif + #ifndef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT #define USE_BASIC_SCRIPT_DEBUG_OUTPUT #endif From 91612eb45a4195484b43e446907317dbffbff730 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 3 Feb 2021 02:41:12 +0200 Subject: [PATCH 008/314] Controller menu --- gamefiles/TEXT/american.gxt | Bin 220176 -> 220474 bytes gamefiles/models/frontend_ds3.txd | Bin 0 -> 394024 bytes gamefiles/models/frontend_ds4.txd | Bin 0 -> 394024 bytes gamefiles/models/frontend_x360.txd | Bin 0 -> 394024 bytes gamefiles/models/frontend_xone.txd | Bin 0 -> 394024 bytes gamefiles/models/ps3btns.txd | Bin 0 -> 126760 bytes src/core/ControllerConfig.cpp | 38 ++- src/core/Frontend.cpp | 401 +++++++++++++++++++++++++++++ src/core/Frontend.h | 16 ++ src/core/MenuScreensCustom.cpp | 25 ++ src/core/Pad.cpp | 116 +++++++++ src/core/config.h | 5 + src/core/re3.cpp | 2 + src/render/Font.cpp | 31 ++- src/render/Font.h | 1 + utils/gxt/american.txt | 75 ++++-- 16 files changed, 670 insertions(+), 40 deletions(-) create mode 100644 gamefiles/models/frontend_ds3.txd create mode 100644 gamefiles/models/frontend_ds4.txd create mode 100644 gamefiles/models/frontend_x360.txd create mode 100644 gamefiles/models/frontend_xone.txd create mode 100644 gamefiles/models/ps3btns.txd diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 756fafa301e5a9e12e6e0d9ed307629a277800bf..270d5b5b33c1ed6d7e4dfe18292cfdcfe5e4c015 100644 GIT binary patch delta 23138 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

ZlvN5J%qw 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 G?EeF?YKh|j delta 22952 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 z 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


v!y4}{jgD7kX}E~Y=ruZQ^Zr}~QW+1M?S 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 Dfc&2c literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd new file mode 100644 index 0000000000000000000000000000000000000000..08988f868321383396ddd7afee82b8f9027b6ec5 GIT binary patch literal 394024 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 BQx*UK literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd new file mode 100644 index 0000000000000000000000000000000000000000..3d92cb43c4731a6763dc88f06e2de894d419ed5c GIT binary patch literal 394024 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 SKycVyKKM~l!*G?!-~R`FJ|7kU literal 0 HcmV?d00001 diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd new file mode 100644 index 0000000000000000000000000000000000000000..58fcbe2db82a244dca5ac076516598db726b0d99 GIT binary patch literal 394024 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 l-~&ek{sDXdA2 literal 0 HcmV?d00001 diff --git a/gamefiles/models/ps3btns.txd b/gamefiles/models/ps3btns.txd new file mode 100644 index 0000000000000000000000000000000000000000..63d8565d95c06cf0c272300f48fd0638dd137b3b GIT binary patch literal 126760 zcmeHw4|rU~b?@w5N!8jC$b|KuKod#qA}PfWJ0P%M%*$fTi`R}pb#-!n~GD@j9B zO3A+8nR{pM-78(~AFXW3+>Kf|%)K+`cjnC8IcLtCS;!c>eB8$}8KugHe=o!T(Z7EJ z{|w^)?yfOtD(f)+y%PVfEMV-*+je|;`&JOe{``zly%GGc##dI(P(NeQ{t*7?-v;q3 zHC=DiPcV7?dpP|{Ae&YW2zmi8@0l@vN{vq^etYjBv2uJm8@ZPgCY{kqzN=W}YQ|Jm zoyX~u%%leyr;k@;(@`beXgq&PXZI`bQswwj|M2#982@P|`pYRFXaAx7Cu>1_uiv`O|8e41(2c9VwH%eSI_RLF<@5Rz&|1dp+o_?x z;h~#OF0R(NJlkWC&n-PyGJk}gq52Jei`SotczaWopIk=O^ZJ2zch!<*oS#%UpiJP` z#2fhf!%dl8?GjJr4?=b7Xh6!N@&{#gs!cwe-e<|HapdN@(e|Cz^Xtm$n9?*bp*{VU zo^V=8lRVmD@wCqFQ^K16l;GFdpSfuC@9xV-l3eDzzkqjfpvF)2r<%jn6WTZNZhL8K z-In%6<)XZDq^zmhjt?|=O4!Ql82dNXMx*>{JB@M{kmWz{FGy&Xe7=qLK78->m?)R} zGPwQ0p_cj2lm4~0#uC7DG_+Q^GGBR&u|1bY`#J+Xm>V%(gBjh&JD=+F+3@_&=0~UULBv}#v+Vcgf?eec{!B6lf z>(>)K;aE?Y@OQ*wF_o?B39Ze-pDc?Gtdae%13W~~w2rY{_yIo)Kbnt=_RaZSmP>w$ z#?QYOS@N&04p{R8t=zsEAsDz+1d!CJ4bmf9eNdLpZ zU`pU|@(=y53si@#@ivrwh@~5Ic^#5`nW@$k; z{a|ZdOYHbDLCgAYKmKsniNU43|1kirVQZ&c?~SokBHA|)rTH(22{1DT$&}Ub@qksR z)t~zxs&kA-%-2?V(@41PSS&92BmHGcpk46i)DM%k`j@_US}Z7@=krZDt((R8FUR*H z9TzmsufKfn!wlv>7H1W;)PGFV;$tj%RnyV>8wgJ;@Z|pftxQ&qqz*}a(3jNsd;2=6 zzCd}i)Cb}>f`>%=YweDp!APz0c|YWut$9@2BH=0Frp= zd)sns^gYp@?C;@p)$x5BK12M*W3BBvi}f^o-qP<}_?_ir?6E}jz(5SFnCl;icX@I# z)vx%@-$^(A;O07Zs(nIcF*px+fM*7qBDcebf0E_?U*Kgjv3 zKF9bj6o0Pgb+$0M*fxKjWtY@OcMtqEX+NJohW+s!L%(^F`e)uj%qKc~z6;M2%?2l- z_h`@dg`%IP@_n0C^(=$Ed5^^Z0+UZ?|hf5?4>OI!2~oVy@ti6oS#dL z2cHoBBOgRg|HF%>R(dpnvfzH9o%Hi}sfhzhuvt{s&^iM)w>M zbgA3Vx4vTWlRx0}`*De9jE!86;SmscxPJlu2bw=rbyVT>WlsM?mFa)@3Cj$2{b;Cb z{v*coYFuZxD*r^4;YaeL_Coh7D~&eX!sxEW_>XY^$m8tIusZ3iIIHj8#F&k4Ef}X*ZI8Yf2aRpj75X% zAHUYtpS=tG6$ZY8)qaVOudlFR5_k=Ip0r=&`XCoxmvW=NeOdKuObKW7TNL0=bA8yH zfIK!R4Tt^QWkvduuRH{P@;@x@t>M!Wy$^j&RxOY7{!E3d<$8**7j5>~!p=}#u-dXm z7IyyErq-5-O+KeN4(-L(Pw-l=LTm^sUbHtL7Hhn56CMtc_h zufM;wsXS<{KdKDFSJ{u-lyBhr3c*jZM$$cERfFCyOm*WbUn zsik$2^{1}+bygK8eMrP3n$B93Rhm-k)OSHcKF@SUlVt*bM(^!g3>ByMgU!u(>#tKD z*LALGs&0NmuE*OuuR@JX$^-h+^tw$RB%eh#e_p#GKZ*A`^moFBm)fJA5%O@;r?d6_ z^}VpLsW()$ZNm2r{^GvN@n_**UgO6f;fH%g+V^htyS49>$3ox>gdexbyUC-9?_z1_pt$CG{Er@~)dT`u*raQvj-mc4X+=k3ei2$swK zcj7f^Sx)2ojgA&64`X~Na{kGipPcxk$u-fvhphgG^94hI=8tf=xp{&-r<|Xy{v-W< z0|QvR-`;uf%l7^aZV%N(TF4`b?>YV!g7%d!vgyZPeK}$qFZBF-$DH!8#*?c&>W_b` z>%^ZeCH-%0bGN?*{W*+K3;+;*av69H8!eD`Aa;ck9IuQgTE~pzyc59wU194 zzYz>zQ9f}#h5t^o#`ATMAKa~Pi07%k2pW_$#uMDnaY38>_{cs>v#J#|ezkNQ{%58% zrv1`BbNe0&{5o5boZs8`H8f?~+Z9RQh+%IB0^y*&y-393=X&t#t8RW=l(*x17)f-z zE@;AQ_fNa_m#Gi*yj>pc+ruOeSwG1qyMD}v5O`*g%^&)`zq^j`$2!P9g)x3hZvTV8 z@08CN>yJmjJg8I4NiZ=?b?f7Cx@24dn03iwnbIpKMX}T{zFLk z57ED`lK+A9TMd#181tv#r&!wT|Dx?F;)gb@MEgXOzeHuid7qZINu=u3@2db~! zQNO*tV)65ZK3>kp|IoR82Q^dt4~=1pVw3qFsM13074f{&UL*TBX4@|wWA9&Wx*vG` zV+*47Q_?JR1?=Ww{+%r}_}g8E^}FB)_S#zeQE6{h+^u za3!q2>GMM4aU$K2t}@H-(8h-AZtU-@{IpdcqxEYi%?C;#oXR;KXg>$*DSBRuceIZU zhi<|L=@R<>;`4)e4Dg3wIfEa>(@esTlV9ndQg=qUf2u`UA^6jouZI2vE%@W}m2H1} z)tScC@Sn={=BDwcbsKK7;sLDwN}zJX|ABZMP2c0!e44LT*01}MzTT&e^+@17+7GE( z@rPnRr(GT6@nV+06aEnC?`yXC`(%5j{#<_M;pJcIQDnTurg7r8Ek^z+IKFCW{Yvo* zSg-k)(I0;Fy>r8V+1u~l$o)@d{oUi+)}eX1p6*8dRG*NSlOIXz>w6H7w1WDxEtY^i zw6#dFXF4DJtymP881(d|I6M0euAIw@xhJUelhW{ z_~HJVUArE5AYc4%yj;0D2!#{%Z5jsxD6pXO#}DwPeUONeeURvBxbJf$epCK|zQsTF zX@btsezQ4V5MPjcyqNNE;@>p>H!ER)CPe=a9ej211G{$Z%86gv+hosK{#5n3#w>Yo z{Hvo|g*;^ckUpFHvFSvtZK6I$`?s6^YxSFmpVOnCZb&O}(hqer#>*hd!Y&Vt7qQL`fqamzgEcGw6_llI-^%$Ki62_`<~KzA&qVr($L#y}yz?MG@&0saZ~f=3e-S@-TIiFx z{yRkDt-L%qD&`~8KPbN^t~8&28NS!tzo}*hBl8c&O@CUfO~v~Eh0uo5>F;#)-}yei z??3a6?2+RO-y6nG?w$s%Rjr&syjarkUta!)JMaC9`FL^vKx3Z&0h4cO=U>nN;Q1fQ zXh0hF!`$}2c>V{w|6!@;e{ivPrM=)R*Uyjt!IhuM?XR5v2dDqVwSFglCw-3m53c;3 zcl_tZ|4=ggF8&AC`X}`F`SCxv@;7<^Pw9Uk`=0Cv)Blid&zt*|(%v6tL!SS^zW*{e z{13F>Oa5%9{ZuHOum9nhUkz>?%<^A;;WfDPZT{SB`swlLxBh^*vg32J&g|NQn8D@YDI;xf=gKcmj$d z=UeJ;bgwJjf$}t!o8RAag?|?MACwT{A1ZnOpX>Ms&;KCS2d?(b1pCYLKahW0%FFXV zoRjzmDQ~AfPHum@`=31j1CKAD?~Uhw7#y4!Pmmoi?ZrRjxBoxe{0~@rm1_N;SN!j6 z^FNdp|J?IGlnTGoeiZ%(QGcoY528M2d()*0@jq;*6L-`3&4B-5y7;~K4SyDOYbpF8 zo;(Yar!zkZ+265+wS1IOe~c~o>eT0ja-AnS*X0w>FTE2=`lmR5Fp{ba*z-;HF7hvl z^YcT9|MnMbe>&Iy=bDDSL7m6X&*Gn%;TQcUo~S-d>uH4J!yirgAbMmz2%Q<{{plU* z@64ES9-(n{PmMkP+SR@>@liass#@{d1|5_88M)riRlbSWACTv--*}nYYnAyeUEkN! z%2oIy|4ke}o!y~a8MpFrmJ+{RUWA{{OXaIS1|FO*G3CkejxM$BkNs#b#qNo6dY5g@EV^_&Hl?p|HWNXk7v^V8R~zW7fg1@`CmuAhvmtgq%Zy{&b#F5uk%(e*d1M%bvV0EO`~=f8eKzX=W($H--O!;ybXOIVSYWSp86hlp*h2G;u`Z z-N-Mw0~r<#+SpH>^8EN@=e6l|ULW$4{0;lG+&F*Tg7~4c?4>ZCV5e(owWv1H`Rve8H9x6m~Zj?EsBh<6nN+XDtDvb zhJ*pX74GA~UzXbtcnZa!*cRv>~@qBYW&L{sB*#VW1&%t@H2V{P}{PMwx_4IVV z&sKcMT}mAMQ2%V+2Yz(emq=Mj{Hg6bHQbM(T$xr-GC6+a7wSKR5EfJaTY>k-3!ghY zkH4R?^50LF-}Cmq&d-k;=g)C|6!|(|Kt4KYe^Y)XI=?FMQ~rPa5q^9A`}4-XxqdCW zedJ?Yfj^2DCVNt$c<&UJip+;Ol_?GbEf7^x#G_UfDTc%n|(5-{@W$kKH}~#>@E5Y62hi zFY>`ieQ?D)OYrCNH#o~TjsL}6xX(oT*Sg2A`f|k9-+ca?lE(ZynLqLz^}kbpXASM) z&*S_5L?~tDNKUT+_Pt;7Z*8(}?vPKF3(!@9YV!dq?_{ggrp(|5g|P zxc?>@{rSKH^gKR4t&~5K&SQ~0lyBmD2v-{EzecY21YS%fS@sb1 z|1r!TqMY#4_g81{JN)A)t}ct#&*?j>n~eN517wy{H*b~p!-92TlS;4pVMgX zMmR{&9{$Ap`O>6s_VZt2{>k+|;X4%gBAMWvzYIHYEt>Zk{EXs0g6Ji8Le7;me!n@7 z;XX=!cLJ3^r`YZF)3x759htKc{8zG{PuKn)(fW7&aZWS#M;g(TpUTW{xA_#yu-~g6 zvHTAmT;BH?S7c1pU#ODvEAZuuANB9Ov?)%n8+hRl=@j|-QixBN{s-I-fM>*dX~w?4 z*v}R-~|Lisz_&qF`b088VI?x#GZ86kD}NdA9;NsX(f>MI$?toB$c*tV<3EtR+vZPkt>5H#y7)K2{)YcS+E=U2MAyYz zS|q*fYsmjMIvNys$^K4jT13#U{9*k~@gJlQ2_FBEP_9HiUlTvp7j;P=@;yrYXGQ!= zcK$)v`b&i0S^sbU3G7jPpaee3|44&a&>fIZWM?dQ|Bo@n$iGSBA)QA4J^w2F3A~hl z&{t=>?`90SpZR@@JvEAA-KXf}&q+_W|37%E68@FvWd2OU-?CZyuP%EV=ch4%1%9&6 zHQW8G_u#yAdt2MYco^h^#C-_7{{bKIKODbYFYx%El}QqZ`F*Rv^^L}S@Avy8KTf<( zdUE_$e;MQ3ou+)Q)wcUQslQ{1wCryhA4vZy>F)8ryG>!1{{Lt%{4bPm(mCH^KD-M4 zS3V!c6Y#&bC|4o{s5Sn3lb1&a4q5Xb&;QBqHwfSYkO}oU>zDdpxjGQA+9$j;r%$i_eUV_1{*KH+DYMN@r9|1axz_J^eRARBUR6Ti~}%ZHwvKk)BPW$Aw}H3;vz4}U#ZK%Z<;B*zi~Y&oje_nGWpbSd{IU`Fq-T0mCDR`#@@=e>w2ilpot1FEtmVoc4Rn{IHC@wVV4d82gTSKS+|l&)BC%`S@bD z^ZR0P<3&5CpL)!AUb|1t+{^fVoYWrO$4SFcv)wm3%y9V!+7tWP zPt}mV3V!mXxuHWWaN$WF{e~Cu^Wb+m5(|+&%i#T6zdiP&g@dbQ; zb{5}%;X1xBpVs2nIApUE`{O{d=k-h%?sN8=+_7}{T zV4>@M=kr)EmR2*F2;isUoP6iPyIh|TF7s%+<)Qhe{(zlhA|%$ zON;yu=KB{^{>dF){)dA7J3^nt`0(iL@9jrj9%BDr=m*)~AFcck(SgOi_Wi%;!i$mr zf&8n;{~+UG`F#Ko(v17}o$HT6Y3aYi{prN7ng5{@c#!`gf%7N(?dMO5&3{1qZ&~cD9p*G8WwMPAkM9%lk_*?4F1b)u*C)2@??Rgvi zH(qA8`zVP&THp%)D1MyL{+ZdI-Q!<^2-mu0#z~gzj^#e1p3eOf5`To^%FiP{;BTc{D7aIusWeoKB_p19FWJYPEebu|k9Bz_tHfp|9jM0@$*M;#K6!LOBHm-h2fF7=nr z52ahuvOk^mJ87y9*E!E>{8RNm#U}(u?fv<|TlRb&DsyIbLQGf3hU~KNbFo z{rTVSQWU?`FX~_5m*;6FK0j0VS0*c?eQTut+wwp7E{yySkN$Yy2EMtL~eoE?9U z^^Y^2+{^!fC9=?mkNW!9!+&AhONGQg?3ls)4~335TF>(E4@dlj5f4F24H3UY{r8`; z=}eA%5WD#2kgo>|%>RIP41IC(=cEOH;(0fk?*}9QgDB_rX}J;KP50wWo&VuIng79P zKhOLR=?ZiIb)Pf;gXWh1f$9%}AI|SB%1WY{FDT=4IL*UfrXEjtKl{AJ@PV$U{vWN! zslR7q{s-&43eW#AJap5^#nqa@?`?=TM*aupPZM1Z0Xh4d&JP`e3s>}SX86Fik6ri0 zkJ0m^spe+4^|y0?f#*b`7aWl_SRU-FvZ`mx9$%Ie#ibrZ{K44RpR+({N_A< zbN__!(|L$twzdcU2f4l|7C*O-v+N=GBcMb=UbLQ`iY9w}s{9RfzFkdKOZ%7Cr&#rq zJ*V!}WP4`*#)RAL6ae=Sf~LuVj0&zFE@$AH3DHE|^M<3VzA|6oEhl-9Lc- zZGT4(H?%0tq#1V5dx2&P75|8$Rk;WfaQ{)fwP zo@mj+>#h}eo%taMf16ESMBC?AJ|E(Im3V)q@yq(1@}6z<4E6tog@3nP4Gy zr=tC*2S~exen;QwH%L?8qpSZto9+)Cp2z=-ct3P&Pc!`od%U>W-px*V7E4pSOg`s- z$i6?_n}Q`^@N<^E&+|Xfc|p=|*RG&`F%v|QH9O~@#o*=bU*Sb8Z-=!F?N6bKO_GGowq`JhP-c4Zon&9@+p*d!%ui0 zcqw6>kG{7qy5rf1uM+(7{9t2s)D-8>exK%yeV_Cv{Ashjo%ol`H78%_I$CiDtwvR~ zZ72ABCq!2O;%C>FT(rPXc)!-$C;d&CJ$2EI&!!E$sc^NG58>SA+jNyD&UX_w+OLh^ zpODA?M-NwY@&0LV!+Brie?SUKdS)_t82MEC%LM)m`yY2l9}5KxeI5Ut~{D<$oaiO}#BG?USp%41OqIlvBRL-=+IMjuW1?)>sVw zr*}f1xBM?U!{sNq0z}9sqa*mGB5sW5De^z?{ahPPWL(y52 zOa6z`wLT<35bZnh}T>f1ks`5eXb9qRy;!Y z_}4f3l=LZ4PWch+?@NC3$^WoqviY=#`*%v@0$O?FZD~x)6~CQ z_?^$w__X&Y#s4rQm=Jg=-^HSZyI&VH;ftg#`MmKm#Ya9Svd;Vn;zwBS)2Xly|o%o$J`3s<5 z@_Bl{t$;$%=WjW!q*Z(y9Z!Eo8mJ>hr`9ZcftYQDZ`ZMJHLi)Wno$^22V(o8Z zzl_@x5a%G$h*R^p$(E>1VUcBfI4LLBRht;hT(~dvfrXi+`+NSwa4X zZNGcRv=Ts|F)#mvpwEl~PxIBv`gMO&tWT7{ zd$hi&TJeWQer;M`jM05R(SF-}+PlDCVaUH38^XdqbGCo^nTMBusmJmcki7zbWDNPz zlw$Hf6pi0$U+C+5!pQ$e{g2~6u>btpn+d!9r=7km&NIK`QiMNtNrW5 z|1|tH+4)ZgH^w#StBHTb5BJyX+VueLOJe?I^k=qL^8TNIAK;ss@vbWEy zRFqfl67qWT^-3dNXmb6ZGXDeRyQlVi&vAR=`7Y4({bhrb(8Fx#$WYg3h<~1MewbFv zOKkI1e&bil)0jW_d`t7k*zJ$iMvs;?S^B|vK7QiI%x^a}fA?yQNC@|7!V|xZ?3MI` z;VJH8^zuKT`|u~^oojuJ^@1aQ5{qB_k-Y8kak77%^FuCrhSq;%&%u2j%!Mykxrd+n zf8eyx7cc*V|7X6DJ;Gnm!u<^=t@xV4X{~A{{7I(&0p`0gJ}2`>%t z`h$DExMM5zbdkRq@IMH75J$A$cGAXq3~N1U+|T(6xk32z2HkT+(9ZW~J5Bc5>E5jp z&lnrI9vUL!Kd`>Qe7=hNBUE*ipT`Kv`#1-U^A*Rd%<`YG%wX4#hPviILi0ED=@ibZ z8<$&{^5XX4{YHLcxF22p*`<=FYUsPP2gX?RnZbW*se|#!(h%|Q!y}XG-*ok7jP(ZBKYp#PKdto?uK(x} z_$a>}Sg`F6%sj18dphu&_GNoVVl}rfH9sO}ijxQQYwwz9AHB}y3H{wo@c^{G#Px8} z9wNNBpFr+6w!gXTDe@Kzd9=T|d`9W(jy-bYeVV3;_J|*TUVYCMSM=k;5dW#1l%?v4bg_b~n_{)5Yc_BZVDAJiV5=Me4x`onjh;Qj`4J$2o&o155w zv>p@X?QgEB!{sE%GH!f73a7(O?CR$0t@oEdWk2sA@gv`Ttr`Cjk7yd@yI;lpjiNuD zcpt&|eiklNQI7LRU;Nm=#xExM1%vMUpSkeA`0Ca=T<0b67d`%kypEMExgNiq_#Nxn zv-SPTNOImb9?ygG^-lcw{!F@lCi`Zp`)B70{tWE7hD1-8#&26kM@(h6zJmKtq}RN{yJCp)80N}ATsRlR*>r2n}7At?0CslRik|F1dzt>;es z`BKtOSiunuDib3 zy8nZ|FO$!I@H3eE{~GrHvEEmf;r<6Pzd7+bY1;p<9O+vlp3mq$@`rJK2$Wm?uw3|^ z--A-q^u3*kANiUdNmusOuH^m}gxka4a>ssqyoVF7lNS5A0{<9$ED=30fO%7_2OwV4 zAGYto>SocOBoFSNH|O7TLZ`6afWPl5)8F?>Jcjrd?V=U&{c=1z@fAvA{hJkUkNX~4 zAdd%Z@_;|RkNfMCKuU}k5f9NM#PU%r=?MN; zs{1d5yonv^e{LT;@+E|>{teEpELS*bJ;@#z@`vGtpse{x(J%* zc+bgslU(w^{+7W{8E1^&N4hwG+xyTz?HzRf;+@Iv-=ud4pL0Cm`9A-G1Qql0j1K2R z#WJIR1AZCroA>uK7yqR$hy9%f?}R^|*62R9E1Hs3Q88X7!TU@nOi+n;Pu=G>o{r3` z#QXO1`qRZr@ziQ{wT#c~M*Ofk*?HxX%LB$&%`f*>w8J(5A61vL0kUSLfezi<3KmgAKA`dz#o%!{vw*}j6NgvAyfa<^VM$- zY@qqCIR$&loR6j(Z%^lkfM3=}=VhRCt~8xjf_qt(OFV_nkGl3?IPn6v56S<8{EJiC z<2qYVJ| z-<)UAFvjnoZYk%cj%z`!{jEWYYUL-So9k{{2)De);U!n3CLqIp@rFFgOliHa_pJo-bQ&tE@akMvb8ui=~iT%Yxk z8bACGq<^qS=YanK!64@Te*yv-V@I!8+JDhD(?2+2|C{vtw0-}-{>O(loP0jO$6G4Z zEcAD}`h5QU4@mxD`5z2_)H*931o)Ge_uBmr=x;OLC2Y%oLHPrb??v`Mr(5C?A)j3O zKe_!iNxry3_1}D+^YdP{Jdez2wKbkG@;}tle42m*!tg)z*z8Xj-&y{LCEWkeJs3=e~bL%4;(FyOjOU@yq_A{G8Y?j0yZ5XVCvRfHBek z66m|Mw@-f0asC769cp;|Phbjr^S9yQrTr}-kK+2@`aVwA|3L54{+QsW=4)m?1nPgd z;7I=?T>qW3eWbJBsPQ2Mf+)}E{y2k6isYyG19QUvz-0c1bR6g9%SQU^SCapIs{9WEFZN%O z&)V#v48!J2Y9RXVjpUDlev!RjR)hV0dP9-pEm!}~SUEp0Mfo2HA@V=$Nk7teg>l{n z$GzZxXxTpf3q!#fYhiH8jr1?kp*IW#F(fnbak7DdC z;a~WU!{0#hyM#xSn{;}w>5upcl{@l3XrXAoJ^w@U8x#*gwa|LCP&}o6US|ig{C9x& zvmG}6K-ZEB-Pd<6Ut zJBso>&`X~GVcPyNFaE)cf1sg6>v=E!!P*aYUH>}m!I`E#|AWIHQyTxnbo+O%#Xr#a zo=fL1X#cyE@ehQ5E}g$H@yq?#nT~%bbUaM1|CWE=i+>=E!~UoFeJJhu3orh`i+?C? zf86swc>af}{0$#H|HD_w{3-6|`5$J3|KUGV=TSWD=+ze^zy7TX(W?+2s{Y5nox*vH z3-bJhvA(k6*}KPw4pJp^jTI)HwKN)as=LKm!n2w9}-q1mp`(!Ej_X0S7LH5u5i$5#R zUy%Ltvw!=wL3`&fZ09p(+xd&Hc9I4b_4E7>v%&x1<$ti-N6zm_E_#mo9|~Qs=KZ|q zfAIVdQ;jFj|KLady@K;Uc>agE760HmUz+(Zs6UPKC!YVonSavD|6o6l?d5-X7T*)H zFL?f^66JsJ{12Z0fiWxpgXe!R#@F1-|M1m⁢_sOP>E>HuxXB_y>I7y!Zz%{(-M= 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 G-~T^1PJ7+} literal 0 HcmV?d00001 diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index 4115cd38..83d0f669 100644 --- a/src/core/ControllerConfig.cpp +++ b/src/core/ControllerConfig.cpp @@ -2619,11 +2619,6 @@ const char *XboxButtons[][MAX_CONTROLLERACTIONS] = CONTROLLER_BUTTONS("~T~", "~O #define PS2_CIRCLE "|" #define PS2_CROSS "/" #define PS2_SQUARE "^" -#elif defined(BUTTON_ICONS) -#define PS2_TRIANGLE "~T~" -#define PS2_CIRCLE "~O~" -#define PS2_CROSS "~X~" -#define PS2_SQUARE "~Q~" #else #define PS2_TRIANGLE "TRIANGLE" #define PS2_CIRCLE "CIRCLE" @@ -2636,7 +2631,7 @@ const char *PlayStationButtons_noIcons[][MAX_CONTROLLERACTIONS] = #ifdef BUTTON_ICONS const char *PlayStationButtons[][MAX_CONTROLLERACTIONS] = - CONTROLLER_BUTTONS(PS2_TRIANGLE, PS2_CIRCLE, PS2_CROSS, PS2_SQUARE, "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT"); + CONTROLLER_BUTTONS("~T~", "~O~", "~X~", "~Q~", "~K~", "~M~", "~A~", "~J~", "~V~", "~C~", "SELECT"); #endif #undef PS2_TRIANGLE @@ -2653,11 +2648,36 @@ void CControllerConfigManager::GetWideStringOfCommandKeys(uint16 action, wchar * if (CPad::GetPad(0)->IsAffectedByController) { wchar wstr[16]; - // TODO: INI and/or menu setting for Xbox/PS switch + const char* (*Buttons)[MAX_CONTROLLERACTIONS]; + #ifdef BUTTON_ICONS - const char *(*Buttons)[MAX_CONTROLLERACTIONS] = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons; + #ifdef GAMEPAD_MENU + switch (FrontEndMenuManager.m_PrefsControllerType) + { + case CMenuManager::CONTROLLER_DUALSHOCK2: + case CMenuManager::CONTROLLER_DUALSHOCK3: + case CMenuManager::CONTROLLER_DUALSHOCK4: + Buttons = CFont::ButtonsSlot != -1 ? PlayStationButtons : PlayStationButtons_noIcons; + break; + default: + #endif + Buttons = CFont::ButtonsSlot != -1 ? XboxButtons : XboxButtons_noIcons; + #ifdef GAMEPAD_MENU + break; + } + #endif #else - const char *(*Buttons)[MAX_CONTROLLERACTIONS] = XboxButtons_noIcons; + switch (FrontEndMenuManager.m_PrefsControllerType) + { + case CMenuManager::CONTROLLER_DUALSHOCK2: + case CMenuManager::CONTROLLER_DUALSHOCK3: + case CMenuManager::CONTROLLER_DUALSHOCK4: + Buttons = PlayStationButtons_noIcons; + break; + default: + Buttons = XboxButtons_noIcons; + break; + } #endif assert(Buttons[CPad::GetPad(0)->Mode][action] != nil); // we cannot use these diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index bd72a15f..5e9f6d0d 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -141,6 +141,10 @@ int8 CMenuManager::m_nDisplayMSAALevel = 0; int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW; #endif +#ifdef GAMEPAD_MENU +int8 CMenuManager::m_PrefsControllerType = CONTROLLER_XBOXONE; +#endif + int32 CMenuManager::OS_Language = LANG_ENGLISH; int8 CMenuManager::m_PrefsUseVibration; int8 CMenuManager::m_DisplayControllerOnFoot; @@ -1161,6 +1165,16 @@ CMenuManager::Draw() CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = BIGTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = BIGTEXT_Y_SCALE)); CFont::SetCentreOn(); break; +#ifdef FIX_BUGS + case MENUPAGE_CONTROLLER_SETTINGS: + columnWidth = 50; + headerHeight = -50; + lineHeight = 20; + CFont::SetFontStyle(FONT_LOCALE(FONT_HEADING)); + CFont::SetScale(MENU_X(MENU_TEXT_SIZE_X = MEDIUMTEXT_X_SCALE), MENU_Y(MENU_TEXT_SIZE_Y = MEDIUMTEXT_Y_SCALE)); + CFont::SetRightJustifyOff(); + break; +#endif case MENUPAGE_SOUND_SETTINGS: case MENUPAGE_DISPLAY_SETTINGS: case MENUPAGE_MULTIPLAYER_CREATE: @@ -3622,6 +3636,10 @@ CMenuManager::LoadAllTextures() m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); } +#ifdef GAMEPAD_MENU + LoadController(m_PrefsControllerType); +#endif + int menuTxdSlot = CTxdStore::FindTxdSlot("menu"); if (menuTxdSlot == -1) @@ -3653,6 +3671,71 @@ CMenuManager::LoadAllTextures() CTxdStore::PopCurrentTxd(); } +#ifdef GAMEPAD_MENU +const char* controllerTypesPaths[] = { + nil, + "MODELS/FRONTEND_DS3.TXD", + "MODELS/FRONTEND_DS4.TXD", + "MODELS/FRONTEND_X360.TXD", + "MODELS/FRONTEND_XONE.TXD", +}; + +void +CMenuManager::LoadController(int8 type) +{ + switch (type) + { + case CONTROLLER_DUALSHOCK2: + case CONTROLLER_DUALSHOCK3: + case CONTROLLER_DUALSHOCK4: + CFont::LoadButtons("MODELS/PS3BTNS.TXD"); + break; + default: + CFont::LoadButtons("MODELS/X360BTNS.TXD"); + break; + } + + // Unload current textures + for (int i = FE_CONTROLLER; i <= FE_ARROWS4; i++) + m_aFrontEndSprites[i].Delete(); + + // Unload txd + int frontend_controller = CTxdStore::FindTxdSlot("frontend_controller"); + if (frontend_controller != -1) + CTxdStore::RemoveTxd(frontend_controller); + + // Find the new txd to load + bool bTxdMissing = true; + if (controllerTypesPaths[type]) + if (int file = CFileMgr::OpenFile(controllerTypesPaths[type])) { + CFileMgr::CloseFile(file); + bTxdMissing = false; + } + + int txdSlot = -1; + + if (bTxdMissing) + // Not found, fall back to original textures + txdSlot = CTxdStore::FindTxdSlot("frontend"); + else { + // Found, load txd + txdSlot = frontend_controller; + if (txdSlot == -1) + txdSlot = CTxdStore::AddTxdSlot("frontend_controller"); + CTxdStore::LoadTxd(txdSlot, controllerTypesPaths[type]); + CTxdStore::AddRef(txdSlot); + } + + assert(txdSlot != -1); + // Load new textures + CTxdStore::SetCurrentTxd(txdSlot); + for (int i = FE_CONTROLLER; i <= FE_ARROWS4; i++) { + m_aFrontEndSprites[i].SetTexture(FrontendFilenames[i][0], FrontendFilenames[i][1]); + m_aFrontEndSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); + } +} +#endif // GAMEPAD_MENU + void CMenuManager::LoadSettings() { @@ -5262,6 +5345,17 @@ CMenuManager::ProcessButtonPresses(void) if (changeValueBy != 0) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { +#ifdef FIX_BUGS + case MENUACTION_CTRLCONFIG: + CPad::GetPad(0)->Mode += changeValueBy; + if (CPad::GetPad(0)->Mode > 3) + CPad::GetPad(0)->Mode = 0; + else if (CPad::GetPad(0)->Mode < 0) + CPad::GetPad(0)->Mode = 3; + SaveSettings(); + DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); + break; +#endif case MENUACTION_RADIO: m_PrefsRadioStation += changeValueBy; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); @@ -5400,13 +5494,18 @@ CMenuManager::ProcessOnOffMenuOptions() TimeToStopPadShaking = CTimer::GetTimeInMillisecondsPauseMode() + 500; } DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); +#ifdef FIX_BUGS + SaveSettings(); +#endif // !FIX_BUGS break; +#ifndef FIX_BUGS case MENUACTION_CTRLCONFIG: CPad::GetPad(0)->Mode++; if (CPad::GetPad(0)->Mode > 3) CPad::GetPad(0)->Mode = 0; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); break; +#endif // !FIX_BUGS case MENUACTION_CTRLDISPLAY: m_DisplayControllerOnFoot = !m_DisplayControllerOnFoot; DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); @@ -5676,6 +5775,12 @@ CMenuManager::UnloadTextures() int frontend = CTxdStore::FindTxdSlot("frontend"); CTxdStore::RemoveTxd(frontend); +#ifdef GAMEPAD_MENU + int frontend_controllerTxdSlot = CTxdStore::FindTxdSlot("frontend_controller"); + if (frontend_controllerTxdSlot != -1) + CTxdStore::RemoveTxd(frontend_controllerTxdSlot); +#endif + printf("REMOVE menu textures\n"); for (int i = 0; i < ARRAY_SIZE(MenuFilenames); ++i) m_aMenuSprites[i].Delete(); @@ -5717,6 +5822,301 @@ CMenuManager::WaitForUserCD() } } +#ifdef GAMEPAD_MENU +void +CMenuManager::PrintController(void) +{ + const float scale = 0.9f; + const float CONTROLLER_SIZE_X = 235.2f; + const float CONTROLLER_SIZE_Y = 175.2f; + const float CONTROLLER_POS_X = (DEFAULT_SCREEN_WIDTH - CONTROLLER_SIZE_X) / 2.0f; + const float CONTROLLER_POS_Y = 160.0f; + + float centerX = CONTROLLER_POS_X + CONTROLLER_SIZE_X / 2; + float centerY = CONTROLLER_POS_Y + CONTROLLER_SIZE_Y / 2; + +#define X(f) ((f)*scale + centerX) +#define Y(f) ((f)*scale + centerY) + + m_aFrontEndSprites[FE_CONTROLLERSH].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X((CONTROLLER_SIZE_X + 4.8f) * scale), MENU_Y((CONTROLLER_SIZE_Y + 4.8f) * scale), CRGBA(0, 0, 0, 255)); + m_aFrontEndSprites[FE_CONTROLLER].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + if (m_DisplayControllerOnFoot) { + if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400) + m_aFrontEndSprites[FE_ARROWS1].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + else + m_aFrontEndSprites[FE_ARROWS3].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + } else { + if (CTimer::GetTimeInMillisecondsPauseMode() & 0x400) + m_aFrontEndSprites[FE_ARROWS2].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + else + m_aFrontEndSprites[FE_ARROWS4].Draw(MENU_X_LEFT_ALIGNED(X(-CONTROLLER_SIZE_X / 2)), MENU_Y(Y(-CONTROLLER_SIZE_Y / 2)), MENU_X(CONTROLLER_SIZE_X * scale), MENU_Y(CONTROLLER_SIZE_Y * scale), CRGBA(255, 255, 255, 255)); + } + + CFont::SetFontStyle(FONT_LOCALE(FONT_BANK)); + CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE * scale), MENU_Y(SMALLESTTEXT_Y_SCALE * scale)); // X + + // CFont::SetColor(CRGBA(128, 128, 128, FadeIn(255))); + CFont::SetDropColor(CRGBA(0, 0, 0, FadeIn(255))); + CFont::SetDropShadowPosition(1); + CFont::SetColor(CRGBA(255, 255, 255, FadeIn(255))); + CFont::SetWrapx(SCREEN_WIDTH); + + float TEXT_L2_X = 50.0f + CONTROLLER_POS_X - centerX, TEXT_L2_Y = -14.0f + CONTROLLER_POS_Y - centerY; + float TEXT_L1_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_L1_Y = 25.0f + CONTROLLER_POS_Y - centerY, TEXT_L1_Y_VEH = 3.0f + TEXT_L1_Y; + float TEXT_DPAD_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_DPAD_Y = 65.0f + CONTROLLER_POS_Y - centerY; + float TEXT_LSTICK_X = -4.0f + CONTROLLER_POS_X - centerX, TEXT_LSTICK_Y = 97.0f + CONTROLLER_POS_Y - centerY; + float TEXT_SELECT_X = 103.0f + CONTROLLER_POS_X - centerX, TEXT_SELECT_Y = 141.0f + CONTROLLER_POS_Y - centerY; + float TEXT_START_X = 130.0f + CONTROLLER_POS_X - centerX, TEXT_START_Y = 128.0f + CONTROLLER_POS_Y - centerY; + float TEXT_R2_X = 184.0F + CONTROLLER_POS_X - centerX, TEXT_R2_Y = -14.0f + CONTROLLER_POS_Y - centerY; + float TEXT_R1_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_R1_Y = 25.0f + CONTROLLER_POS_Y - centerY; + + float TEXT_SQUARE_X = 144.0f + CONTROLLER_POS_X - centerX, TEXT_SQUARE_Y = 18.0f + CONTROLLER_POS_Y - centerY; + float TEXT_TRIANGLE_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_TRIANGLE_Y = 52.0f + CONTROLLER_POS_Y - centerY; + float TEXT_CIRCLE_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_CIRCLE_Y = 65.0f + CONTROLLER_POS_Y - centerY; + float TEXT_CROSS_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_CROSS_Y = 78.0f + CONTROLLER_POS_Y - centerY; + float TEXT_RSTICK_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_RSTICK_Y = 94.0f + CONTROLLER_POS_Y - centerY; + float TEXT_R3_X = 238.0f + CONTROLLER_POS_X - centerX, TEXT_R3_Y = 109.0f + CONTROLLER_POS_Y - centerY; + float TEXT_L3_X = 84.0f + CONTROLLER_POS_X - centerX, TEXT_L3_Y = 162.0f + CONTROLLER_POS_Y - centerY; + float TEXT_L2R2_X = 74.0f + CONTROLLER_POS_X - centerX, TEXT_L2R2_Y = -6.0f + CONTROLLER_POS_Y - centerY; + + switch (m_PrefsControllerType) + { + case CONTROLLER_DUALSHOCK4: + TEXT_L1_Y += 7.0f; + TEXT_L1_Y_VEH = TEXT_L1_Y; + TEXT_R1_Y += 7.0f; + TEXT_TRIANGLE_Y -= 1.0f; + TEXT_CIRCLE_Y -= 1.0f; + TEXT_CROSS_Y -= 1.0f; + TEXT_RSTICK_Y -= 4.0f; + TEXT_R3_Y -= 4.0f; + TEXT_DPAD_Y -= 1.0f; + TEXT_LSTICK_Y -= 6.0f; + TEXT_L3_X -= 2.0f; + break; + case CONTROLLER_XBOXONE: + TEXT_L2_X -= 2.0f; + TEXT_R2_X += 2.0f; + TEXT_L1_Y += 15.0f; + TEXT_L1_Y_VEH = TEXT_L1_Y; + TEXT_R1_Y += 15.0f; + TEXT_TRIANGLE_Y += 4.0f; + TEXT_CIRCLE_Y += 4.0f; + TEXT_CROSS_Y += 4.0f; + TEXT_RSTICK_Y += 1.0f; + TEXT_R3_Y += 1.0f; + TEXT_DPAD_Y += 29.0f; + TEXT_LSTICK_Y -= 22.0f; + TEXT_L3_X -= 36.0f; + TEXT_L2R2_Y += 5.0f; + TEXT_SELECT_X += 4.0f; + break; + case CONTROLLER_XBOX360: + TEXT_L2_X += 8.0f; + TEXT_R2_X -= 8.0f; + TEXT_L1_Y += 15.0f; + TEXT_L1_Y_VEH = TEXT_L1_Y; + TEXT_R1_Y += 15.0f; + TEXT_TRIANGLE_Y += 4.0f; + TEXT_CIRCLE_Y += 4.0f; + TEXT_CROSS_Y += 4.0f; + TEXT_RSTICK_Y += 4.0f; + TEXT_R3_Y += 4.0f; + TEXT_DPAD_Y += 30.0f; + TEXT_LSTICK_Y -= 21.0f; + TEXT_L3_X -= 36.0f; + TEXT_L2R2_Y += 5.0f; + TEXT_SELECT_X += 3.0f; + break; + }; + + if (m_DisplayControllerOnFoot) { + switch (CPad::GetPad(0)->Mode) { + case 0: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + case 1: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + case 2: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_MOV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + case 3: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_CWL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y)), TheText.Get("FEC_TAR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_MOV")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); + break; + default: + return; + } + } else { + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2R2_X)), MENU_Y(Y(TEXT_L2R2_Y)), TheText.Get("FEC_LB")); + switch (CPad::GetPad(0)->Mode) { + case 0: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3")); + break; + case 1: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HOR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HAB")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3")); + break; + case 2: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_VES")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_RS3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_HOR")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_BRA")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_CAW")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_SM3")); + break; + case 3: + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L2_X)), MENU_Y(Y(TEXT_L2_Y)), TheText.Get("FEC_LL")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L1_X)), MENU_Y(Y(TEXT_L1_Y_VEH)), TheText.Get("FEC_HAB")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_DPAD_X)), MENU_Y(Y(TEXT_DPAD_Y)), TheText.Get("FEC_TUC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_LSTICK_X)), MENU_Y(Y(TEXT_LSTICK_Y)), TheText.Get("FEC_VES")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_L3_X)), MENU_Y(Y(TEXT_L3_Y)), TheText.Get("FEC_HO3")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_LR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_CAW")); + CFont::SetRightJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_SMT")); + CFont::SetJustifyOn(); // X + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_EXV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RSC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_NA")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_ACC")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_BRA")); + break; + default: + return; + } + } + + CFont::SetDropShadowPosition(0); // X + +#undef X +#undef Y +} +#else void CMenuManager::PrintController(void) { @@ -5937,6 +6337,7 @@ CMenuManager::PrintController(void) CFont::SetDropShadowPosition(0); // X } +#endif #ifdef MENU_MAP diff --git a/src/core/Frontend.h b/src/core/Frontend.h index b0100fdc..9c666809 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -725,6 +725,19 @@ public: #define ISLAND_LOADING_ISNT(p) #endif +#ifdef GAMEPAD_MENU + enum + { + CONTROLLER_DUALSHOCK2 = 0, + CONTROLLER_DUALSHOCK3, + CONTROLLER_DUALSHOCK4, + CONTROLLER_XBOX360, + CONTROLLER_XBOXONE, + }; + + static int8 m_PrefsControllerType; +#endif + public: static void BuildStatLine(Const char *text, void *stat, bool itsFloat, void *stat2); static void CentreMousePointer(); @@ -784,6 +797,9 @@ public: void PageDownList(bool); int8 GetPreviousPageOption(); void ProcessList(bool &goBack, bool &optionSelected); +#ifdef GAMEPAD_MENU + void LoadController(int8 type); +#endif }; #ifndef IMPROVED_VIDEOMODE diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 3eee8dd2..357f136b 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -74,6 +74,12 @@ #define INVERT_PAD_SELECTOR #endif +#ifdef GAMEPAD_MENU + #define SELECT_CONTROLLER_TYPE MENUACTION_CFO_SELECT, "FEC_TYP", { new CCFOSelect((int8*)&CMenuManager::m_PrefsControllerType, "Controller", "Type", controllerTypes, ARRAY_SIZE(controllerTypes), false, ControllerTypeAfterChange) }, +#else + #define SELECT_CONTROLLER_TYPE +#endif + const char *filterNames[] = { "FEM_NON", "FEM_SIM", "FEM_NRM", "FEM_MOB" }; const char *off_on[] = { "FEM_OFF", "FEM_ON" }; @@ -346,6 +352,14 @@ void DetectJoystickGoBack() { } #endif +#ifdef GAMEPAD_MENU +const char* controllerTypes[] = { "FEC_DS2", "FEC_DS3", "FEC_DS4", "FEC_360", "FEC_ONE" }; +void ControllerTypeAfterChange(int8 before, int8 after) +{ + FrontEndMenuManager.LoadController(after); +} +#endif + CMenuScreenCustom aScreens[MENUPAGES] = { // MENUPAGE_NONE = 0 { "", MENUPAGE_DISABLED, MENUPAGE_DISABLED, nil, nil, }, @@ -369,10 +383,16 @@ CMenuScreenCustom aScreens[MENUPAGES] = { }, // MENUPAGE_CONTROLLER_SETTINGS = 4 +#ifdef GAMEPAD_MENU + { "FET_AGS", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil, +#else { "FET_CON", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, +#endif MENUACTION_CTRLCONFIG, "FEC_CCF", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, MENUACTION_CTRLDISPLAY, "FEC_CDP", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, + INVERT_PAD_SELECTOR MENUACTION_CTRLVIBRATION, "FEC_VIB", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, + SELECT_CONTROLLER_TYPE MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, }, @@ -643,6 +663,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { MENUACTION_CTRLMETHOD, "FET_CME", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC }, #endif MENUACTION_KEYBOARDCTRLS,"FET_RDK", { nil, SAVESLOT_NONE, MENUPAGE_KEYBOARD_CONTROLS }, +#ifdef GAMEPAD_MENU + MENUACTION_CHANGEMENU, "FET_AGS", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, +#endif #ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS MENUACTION_CHANGEMENU, "FEC_JOD", { nil, SAVESLOT_NONE, MENUPAGE_DETECT_JOYSTICK }, #endif @@ -798,7 +821,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_MTI", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil, MENUACTION_MOUSESENS, "FEC_MSH", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, MENUACTION_INVVERT, "FEC_IVV", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, +#ifndef GAMEPAD_MENU INVERT_PAD_SELECTOR +#endif MENUACTION_MOUSESTEER, "FET_MST", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, }, diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 95a107ee..9bcac613 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -2336,6 +2336,121 @@ bool CPad::ShiftTargetRightJustDown(void) return !!(NewState.RightShoulder2 && !OldState.RightShoulder2); } +#ifdef FIX_BUGS +// FIX: fixes from VC for the bug of double switching the controller setup +bool CPad::GetAnaloguePadUp(void) +{ + static int16 oldfStickY = 0; + + int16 leftStickY = CPad::GetPad(0)->GetLeftStickY(); + + if ( leftStickY < -15 && oldfStickY >= -5 ) + { + oldfStickY = leftStickY; + return true; + } + else + { + oldfStickY = leftStickY; + return false; + } +} + +bool CPad::GetAnaloguePadDown(void) +{ + static int16 oldfStickY = 0; + + int16 leftStickY = CPad::GetPad(0)->GetLeftStickY(); + + if ( leftStickY > 15 && oldfStickY <= 5 ) + { + oldfStickY = leftStickY; + return true; + } + else + { + oldfStickY = leftStickY; + return false; + } +} + +bool CPad::GetAnaloguePadLeft(void) +{ + static int16 oldfStickX = 0; + + int16 leftStickX = CPad::GetPad(0)->GetLeftStickX(); + + if ( leftStickX < -15 && oldfStickX >= -5 ) + { + oldfStickX = leftStickX; + return true; + } + else + { + oldfStickX = leftStickX; + return false; + } +} + +bool CPad::GetAnaloguePadRight(void) +{ + static int16 oldfStickX = 0; + + int16 leftStickX = CPad::GetPad(0)->GetLeftStickX(); + + if ( leftStickX > 15 && oldfStickX <= 5 ) + { + oldfStickX = leftStickX; + return true; + } + else + { + oldfStickX = leftStickX; + return false; + } +} + +bool CPad::GetAnaloguePadLeftJustUp(void) +{ + static int16 oldfStickX = 0; + + int16 X = GetPad(0)->GetPedWalkLeftRight(); + + if ( X == 0 && oldfStickX < 0 ) + { + oldfStickX = 0; + + return true; + } + else + { + oldfStickX = X; + + return false; + } +} + +bool CPad::GetAnaloguePadRightJustUp(void) +{ + static int16 oldfStickX = 0; + + int16 X = GetPad(0)->GetPedWalkLeftRight(); + + if ( X == 0 && oldfStickX > 0 ) + { + oldfStickX = 0; + + return true; + } + else + { + oldfStickX = X; + + return false; + } +} + +#else bool CPad::GetAnaloguePadUp(void) { static int16 oldfStickY = 0; @@ -2447,6 +2562,7 @@ bool CPad::GetAnaloguePadRightJustUp(void) return false; } } +#endif bool CPad::ForceCameraBehindPlayer(void) { diff --git a/src/core/config.h b/src/core/config.h index bb1ca5e3..2973caf0 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -313,6 +313,11 @@ enum Config { //# define PS2_MENU_USEALLPAGEICONS #else # define MENU_MAP // VC-like menu map. Make sure you have new menu.txd + +# ifdef XINPUT +# define GAMEPAD_MENU // Add gamepad menu +# endif + # define SCROLLABLE_STATS_PAGE // only draggable by mouse atm # define TRIANGLE_BACK_BUTTON //# define CIRCLE_BACK_BUTTON diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 474a4644..62d963ca 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -369,6 +369,7 @@ bool LoadINISettings() ReadIniIfExists("Controller", "HorizantalMouseSens", &TheCamera.m_fMouseAccelHorzntl); ReadIniIfExists("Controller", "InvertMouseVertically", &MousePointerStateHelper.bInvertVertically); ReadIniIfExists("Controller", "DisableMouseSteering", &CVehicle::m_bDisableMouseSteering); + ReadIniIfExists("Controller", "Vibration", &FrontEndMenuManager.m_PrefsUseVibration); ReadIniIfExists("Audio", "SfxVolume", &FrontEndMenuManager.m_PrefsSfxVolume); ReadIniIfExists("Audio", "MusicVolume", &FrontEndMenuManager.m_PrefsMusicVolume); ReadIniIfExists("Audio", "Radio", &FrontEndMenuManager.m_PrefsRadioStation); @@ -455,6 +456,7 @@ void SaveINISettings() StoreIni("Controller", "HorizantalMouseSens", TheCamera.m_fMouseAccelHorzntl); StoreIni("Controller", "InvertMouseVertically", MousePointerStateHelper.bInvertVertically); StoreIni("Controller", "DisableMouseSteering", CVehicle::m_bDisableMouseSteering); + StoreIni("Controller", "Vibration", FrontEndMenuManager.m_PrefsUseVibration); StoreIni("Audio", "SfxVolume", FrontEndMenuManager.m_PrefsSfxVolume); StoreIni("Audio", "MusicVolume", FrontEndMenuManager.m_PrefsMusicVolume); StoreIni("Audio", "Radio", FrontEndMenuManager.m_PrefsRadioStation); diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 7eed0933..7dba8094 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -348,11 +348,26 @@ CFont::Initialise(void) SetDropShadowPosition(0); CTxdStore::PopCurrentTxd(); +#if !defined(GAMEPAD_MENU) && defined(BUTTON_ICONS) + // loaded in CMenuManager with GAMEPAD_MENU defined + LoadButtons("MODELS/X360BTNS.TXD"); +#endif +} + #ifdef BUTTON_ICONS - if (int file = CFileMgr::OpenFile("MODELS/X360BTNS.TXD")) { +void +CFont::LoadButtons(const char* txdPath) +{ + if (int file = CFileMgr::OpenFile(txdPath)) { CFileMgr::CloseFile(file); - ButtonsSlot = CTxdStore::AddTxdSlot("buttons"); - CTxdStore::LoadTxd(ButtonsSlot, "MODELS/X360BTNS.TXD"); + if (ButtonsSlot == -1) + ButtonsSlot = CTxdStore::AddTxdSlot("buttons"); + else { + for (int i = 0; i < MAX_BUTTON_ICONS; i++) + ButtonSprite[i].Delete(); + CTxdStore::RemoveTxd(ButtonsSlot); + } + CTxdStore::LoadTxd(ButtonsSlot, txdPath); CTxdStore::AddRef(ButtonsSlot); CTxdStore::PushCurrentTxd(); CTxdStore::SetCurrentTxd(ButtonsSlot); @@ -374,8 +389,16 @@ CFont::Initialise(void) ButtonSprite[BUTTON_R3].SetTexture("r3"); CTxdStore::PopCurrentTxd(); } -#endif // BUTTON_ICONS + else { + if (ButtonsSlot != -1) { + for (int i = 0; i < MAX_BUTTON_ICONS; i++) + ButtonSprite[i].Delete(); + CTxdStore::RemoveTxdSlot(ButtonsSlot); + ButtonsSlot = -1; + } + } } +#endif // BUTTON_ICONS #ifdef MORE_LANGUAGES void diff --git a/src/render/Font.h b/src/render/Font.h index 621375d6..9316ed34 100644 --- a/src/render/Font.h +++ b/src/render/Font.h @@ -109,6 +109,7 @@ public: static CSprite2d ButtonSprite[MAX_BUTTON_ICONS]; static int PS2Symbol; + static void LoadButtons(const char *txdPath); static void DrawButton(float x, float y); #endif // BUTTON_ICONS diff --git a/utils/gxt/american.txt b/utils/gxt/american.txt index 3b010736..aebb1273 100644 --- a/utils/gxt/american.txt +++ b/utils/gxt/american.txt @@ -2440,33 +2440,6 @@ Accelerate [FEC_SMT] Special mission trigger -[FEC_CCF] -Configuration: - -[FEC_CF1] -Setup1 - -[FEC_CF2] -Setup2 - -[FEC_CF3] -Setup3 - -[FEC_CF4] -Setup4 - -[FEC_CDP] -Controller Display: - -[FEC_ONF] -On Foot - -[FEC_INC] -In Car - -[FEC_VIB] -Vibration: - [FEA_OUT] Output: @@ -8073,6 +8046,54 @@ Toggle Waypoint [FEA_FMN] RADIO OFF +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_360] +XBOX 360 CONTROLLER + +[FEC_ONE] +XBOX ONE CONTROLLER + +[FEC_TYP] +GAMEPAD TYPE + +[FEC_CCF] +CONFIGURATION + +[FEC_CF1] +SETUP 1 + +[FEC_CF2] +SETUP 2 + +[FEC_CF3] +SETUP 3 + +[FEC_CF4] +SETUP 4 + +[FEC_CDP] +CONTROLLER DISPLAY + +[FEC_ONF] +ON FOOT + +[FEC_INC] +IN CAR + +[FEC_VIB] +VIBRATION + +[FET_AGS] +GAMEPAD SETTINGS + { end of file } [DUMMY] From adf07aab47ef484ca39df707920aaded8f826777 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 3 Feb 2021 02:47:45 +0200 Subject: [PATCH 009/314] Fix compilation --- src/control/Script2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp index 210b9327..5c953011 100644 --- a/src/control/Script2.cpp +++ b/src/control/Script2.cpp @@ -1156,7 +1156,7 @@ int8 CRunningScript::ProcessCommands400To499(int32 command) #ifdef FIX_BUGS AnimationId anim = pVehicle->GetDriverAnim(); #else - AnimationId anim = pVehicle->bLowVehicle ? ANIM_CAR_LSIT : ANIM_CAR_SIT; + AnimationId anim = pVehicle->bLowVehicle ? ANIM_STD_CAR_SIT_LO : ANIM_STD_CAR_SIT; #endif pPed->m_pVehicleAnim = CAnimManager::BlendAnimation(pPed->GetClump(), ASSOCGRP_STD, anim, 100.0f); pPed->StopNonPartialAnims(); From a7e11d134fc45305f449e8417eb19152a28271b7 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 3 Feb 2021 02:53:54 +0200 Subject: [PATCH 010/314] Add undef --- src/core/config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/config.h b/src/core/config.h index 2973caf0..a748d070 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -473,6 +473,7 @@ enum Config { #undef RADIO_OFF_TEXT #undef MENU_MAP +#undef GAMEPAD_MENU #undef SCROLLABLE_STATS_PAGE #undef CUSTOM_FRONTEND_OPTIONS From 1667ffdd8f7fcde03d283db32694f0dd27086299 Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 3 Feb 2021 14:08:28 +0300 Subject: [PATCH 011/314] MusicManager fixes --- src/audio/AudioLogic.cpp | 2 +- src/audio/MusicManager.cpp | 281 +++++++++++++++++++----------------- src/audio/MusicManager.h | 10 +- src/audio/audio_enums.h | 5 +- src/audio/sampman_miles.cpp | 10 +- src/audio/sampman_oal.cpp | 10 +- src/audio/soundlist.h | 2 +- src/text/Text.cpp | 2 +- src/vehicles/Vehicle.h | 2 +- 9 files changed, 174 insertions(+), 150 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index eab14ce6..ec364c27 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -7927,7 +7927,7 @@ cAudioManager::ProcessFrontEnd() frontendBank = true; stereo = true; break; - case SOUND_FRONTEND_NO_RADIO: + case SOUND_FRONTEND_RADIO_TURN_OFF: case SOUND_FRONTEND_RADIO_CHANGE: m_sQueueSample.m_nSampleIndex = SFX_RADIO_CLICK; break; diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index ad304985..3e1a7384 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -15,6 +15,9 @@ #include "World.h" #include "sampman.h" +#if !defined FIX_BUGS && (defined RADIO_SCROLL_TO_PREV_STATION || defined RADIO_OFF_TEXT) +static_assert(false, "RADIO_SCROLL_TO_PREV_STATION and RADIO_OFF_TEXT won't work correctly without FIX_BUGS"); +#endif cMusicManager MusicManager; int32 gNumRetunePresses; @@ -26,8 +29,8 @@ cMusicManager::cMusicManager() m_bIsInitialised = false; m_bDisabled = false; m_nMusicMode = MUSICMODE_DISABLED; - m_nCurrentStreamedSound = NO_TRACK; - m_nPreviousStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; + m_nPlayingTrack = NO_TRACK; m_bFrontendTrackFinished = false; m_bPlayInFrontend = false; m_bSetNextStation = false; @@ -35,7 +38,7 @@ cMusicManager::cMusicManager() m_bPreviousPlayerInCar = false; m_bPlayerInCar = false; m_bAnnouncementInProgress = false; - m_bDontServiceAmbienceTrack = false; + m_bVerifyAmbienceTrackStartedToPlay = false; bHasStarted = false; } @@ -83,16 +86,15 @@ cMusicManager::DisplayRadioStationName() if(m_bPlayerInCar && !m_bPreviousPlayerInCar) pCurrentStation = nil; +#ifdef FIX_BUGS + const int curRadio = GetCarTuning(); +#else + const int curRadio = m_nNextTrack; +#endif + #ifdef RADIO_SCROLL_TO_PREV_STATION if(gNumRetunePresses < 0) { - gStreamedSound = m_nCurrentStreamedSound; - - if(gStreamedSound == STREAMED_SOUND_CITY_AMBIENT || - gStreamedSound == STREAMED_SOUND_WATER_AMBIENT) { - gStreamedSound = POLICE_RADIO; // which means OFF - - } else if(gStreamedSound > STREAMED_SOUND_RADIO_MP3_PLAYER) - return; + gStreamedSound = curRadio; gRetuneCounter = gNumRetunePresses; pRetune = gStreamedSound; @@ -100,7 +102,7 @@ cMusicManager::DisplayRadioStationName() while(gRetuneCounter < 0) { if(pRetune == HEAD_RADIO) { pRetune = RADIO_OFF; - } else if(pRetune == RADIO_OFF || pRetune == POLICE_RADIO) { + } else if(pRetune == RADIO_OFF || pRetune == NUM_RADIOS) { pRetune = SampleManager.IsMP3RadioChannelAvailable() ? USERTRACK : USERTRACK - 1; } else pRetune--; @@ -110,31 +112,38 @@ cMusicManager::DisplayRadioStationName() } else #endif if(SampleManager.IsMP3RadioChannelAvailable()) { - gStreamedSound = m_nCurrentStreamedSound; + gStreamedSound = curRadio; if(gStreamedSound == STREAMED_SOUND_CITY_AMBIENT || - gStreamedSound == STREAMED_SOUND_WATER_AMBIENT) { - gStreamedSound = POLICE_RADIO; // which means OFF + gStreamedSound == STREAMED_SOUND_WATER_AMBIENT) { // which means OFF + gStreamedSound = NUM_RADIOS; } else if(gStreamedSound > STREAMED_SOUND_RADIO_MP3_PLAYER) return; pRetune = gNumRetunePresses + gStreamedSound; - if(pRetune == POLICE_RADIO) { +#ifdef FIX_BUGS + while(pRetune > NUM_RADIOS) + pRetune -= (NUM_RADIOS + 1); +#endif + if(pRetune == NUM_RADIOS) { pRetune = RADIO_OFF; - } else if(pRetune > POLICE_RADIO) { - pRetune = pRetune - RADIO_OFF; } +#ifndef FIX_BUGS + else if(pRetune > NUM_RADIOS) { + pRetune = pRetune - (NUM_RADIOS + 1); + } +#endif } else { - gStreamedSound = m_nCurrentStreamedSound; + gStreamedSound = curRadio; pRetune = gNumRetunePresses + gStreamedSound; if(pRetune >= USERTRACK) { gRetuneCounter = gNumRetunePresses; - pRetune = m_nCurrentStreamedSound; + pRetune = curRadio; if(gStreamedSound == STREAMED_SOUND_WATER_AMBIENT) - pRetune = RADIO_OFF; + pRetune = STREAMED_SOUND_CITY_AMBIENT; // which is RADIO_OFF while(gRetuneCounter) { if(pRetune == RADIO_OFF) { @@ -149,7 +158,7 @@ cMusicManager::DisplayRadioStationName() } } - wchar *string = nil; + wchar *string; switch(pRetune) { case HEAD_RADIO: string = TheText.Get("FEA_FM0"); break; @@ -161,22 +170,27 @@ cMusicManager::DisplayRadioStationName() case MSX_FM: string = TheText.Get("FEA_FM6"); break; case FLASHBACK: string = TheText.Get("FEA_FM7"); break; case CHATTERBOX: string = TheText.Get("FEA_FM8"); break; - case USERTRACK: string = TheText.Get("FEA_FM9"); break; + case USERTRACK: + if (!SampleManager.IsMP3RadioChannelAvailable()) + return; + string = TheText.Get("FEA_FM9"); break; #ifdef RADIO_OFF_TEXT - case RADIO_OFF: case POLICE_RADIO: string = TheText.Get("FEA_FMN"); break; + case RADIO_OFF: { + extern wchar WideErrorString[]; + + string = TheText.Get("FEA_FMN"); + if(string == WideErrorString) { + pCurrentStation = nil; + return; + } + break; + } #endif default: return; }; -#ifdef RADIO_OFF_TEXT - if(pRetune == USERTRACK && !SampleManager.IsMP3RadioChannelAvailable()) { string = TheText.Get("FEA_FMN"); } -#else - if(pRetune > CHATTERBOX && !SampleManager.IsMP3RadioChannelAvailable()) { return; } -#endif - - if(string && pCurrentStation != string || - m_nCurrentStreamedSound == STREAMED_SOUND_RADIO_MP3_PLAYER && - m_nPreviousStreamedSound != STREAMED_SOUND_RADIO_MP3_PLAYER) { + if(pCurrentStation != string || + m_nNextTrack == STREAMED_SOUND_RADIO_MP3_PLAYER && m_nPlayingTrack != STREAMED_SOUND_RADIO_MP3_PLAYER) { pCurrentStation = string; cDisplay = 60; } else { @@ -257,7 +271,7 @@ cMusicManager::Initialise() m_bDoTrackService = false; m_bIgnoreTimeDelay = false; m_bRadioSetByScript = false; - m_nRadioStation = HEAD_RADIO; + m_nRadioStationScript = HEAD_RADIO; m_nRadioPosition = -1; m_nRadioInCar = NO_TRACK; gNumRetunePresses = 0; @@ -274,8 +288,8 @@ cMusicManager::Terminate() if (SampleManager.IsStreamPlaying(0)) { SampleManager.StopStreamedFile(0); - m_nCurrentStreamedSound = NO_TRACK; - m_nPreviousStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; + m_nPlayingTrack = NO_TRACK; } m_bIsInitialised = false; } @@ -303,14 +317,14 @@ cMusicManager::ChangeMusicMode(uint8 mode) case MUSICMODE_CUTSCENE: case MUSICMODE_DISABLED: if (SampleManager.IsStreamPlaying(0)) { - if (m_nCurrentStreamedSound < TOTAL_STREAMED_SOUNDS) { - m_aTracks[m_nCurrentStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + if (m_nNextTrack < TOTAL_STREAMED_SOUNDS) { + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } SampleManager.StopStreamedFile(0); } - m_nCurrentStreamedSound = NO_TRACK; - m_nPreviousStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; + m_nPlayingTrack = NO_TRACK; m_bFrontendTrackFinished = false; m_bPlayInFrontend = false; m_bSetNextStation = false; @@ -320,7 +334,7 @@ cMusicManager::ChangeMusicMode(uint8 mode) m_nTimer = m_nLastTrackServiceTime = CTimer::GetTimeInMillisecondsPauseMode(); m_bDoTrackService = false; m_bIgnoreTimeDelay = true; - m_bDontServiceAmbienceTrack = false; + m_bVerifyAmbienceTrackStartedToPlay = false; m_nMusicMode = mode2; break; default: return; @@ -370,7 +384,7 @@ cMusicManager::SetRadioChannelByScript(uint8 station, int32 pos) { if (m_bIsInitialised && station < RADIO_OFF) { m_bRadioSetByScript = true; - m_nRadioStation = station; + m_nRadioStationScript = station; m_nRadioPosition = pos == -1 ? -1 : pos % m_aTracks[station].m_nLength; } } @@ -380,7 +394,7 @@ void cMusicManager::ResetMusicAfterReload() { m_bRadioSetByScript = false; - m_nRadioStation = 0; + m_nRadioStationScript = 0; m_nRadioPosition = -1; m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; @@ -419,7 +433,7 @@ cMusicManager::Service() m_nLastTrackServiceTime = m_nTimer; } else m_bDoTrackService = false; - if (m_nCurrentStreamedSound == NO_TRACK && SampleManager.IsStreamPlaying(0)) + if (m_nNextTrack == NO_TRACK && SampleManager.IsStreamPlaying(0)) SampleManager.StopStreamedFile(0); else switch (m_nMusicMode) { case MUSICMODE_FRONTEND: ServiceFrontEndMode(); break; @@ -430,10 +444,10 @@ cMusicManager::Service() void cMusicManager::ServiceFrontEndMode() { - if (m_nCurrentStreamedSound < TOTAL_STREAMED_SOUNDS) { + if (m_nNextTrack < TOTAL_STREAMED_SOUNDS) { if (m_bFrontendTrackFinished) { if (!SampleManager.IsStreamPlaying(0)) { - switch (m_nCurrentStreamedSound) + switch (m_nNextTrack) { case STREAMED_SOUND_MISSION_COMPLETED: if (!AudioManager.m_nUserPause) @@ -445,15 +459,15 @@ cMusicManager::ServiceFrontEndMode() default: break; } - m_nCurrentStreamedSound = NO_TRACK; - m_nPreviousStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; + m_nPlayingTrack = NO_TRACK; } } else if (bHasStarted) { if (!SampleManager.IsStreamPlaying(0)) - SampleManager.StartStreamedFile(m_nCurrentStreamedSound, 0, 0); + SampleManager.StartStreamedFile(m_nNextTrack, 0, 0); } else { SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); - if (!SampleManager.StartStreamedFile(m_nCurrentStreamedSound, m_nCurrentStreamedSound < STREAMED_SOUND_RADIO_POLICE ? GetTrackStartPos(m_nCurrentStreamedSound) : 0, 0)) + if (!SampleManager.StartStreamedFile(m_nNextTrack, m_nNextTrack < NUM_RADIOS ? GetTrackStartPos(m_nNextTrack) : 0, 0)) return; SampleManager.SetStreamedVolumeAndPan(100, 63, 0, 0); if (m_bPlayInFrontend) bHasStarted = true; @@ -473,7 +487,7 @@ cMusicManager::ServiceGameMode() m_bPreviousPlayerInCar = m_bPlayerInCar; m_bPlayerInCar = PlayerInCar(); - m_nPreviousStreamedSound = m_nCurrentStreamedSound; + m_nPlayingTrack = m_nNextTrack; if (m_bPlayerInCar) { if (FindPlayerPed() != nil && !FindPlayerPed()->DyingOrDead() @@ -485,10 +499,13 @@ cMusicManager::ServiceGameMode() gRetuneCounter = 30; gNumRetunePresses++; AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 1.0f); + // This needs loop, and this is not the right place. Now done elsewhere. +#ifndef FIX_BUGS if (SampleManager.IsMP3RadioChannelAvailable()) { if (gNumRetunePresses > RADIO_OFF) gNumRetunePresses -= RADIO_OFF; } +#endif } #ifdef RADIO_SCROLL_TO_PREV_STATION else if(CPad::GetPad(0)->GetMouseWheelDownJustDown() || CPad::GetPad(0)->GetMouseWheelUpJustDown()) { @@ -511,8 +528,8 @@ cMusicManager::ServiceGameMode() m_bPreviousPlayerInCar = false; if (!m_bPlayerInCar) { if (m_bPreviousPlayerInCar) { - if (m_nCurrentStreamedSound != STREAMED_SOUND_RADIO_POLICE) - m_nRadioInCar = m_nCurrentStreamedSound; + if (m_nNextTrack != STREAMED_SOUND_RADIO_POLICE) + m_nRadioInCar = m_nNextTrack; } ServiceAmbience(); return; @@ -520,22 +537,22 @@ cMusicManager::ServiceGameMode() if (m_bPreviousPlayerInCar) { if (m_nAnnouncement < TOTAL_STREAMED_SOUNDS - && (m_nCurrentStreamedSound < STREAMED_SOUND_CITY_AMBIENT || m_bAnnouncementInProgress) + && (m_nNextTrack < RADIO_OFF || m_bAnnouncementInProgress) && ServiceAnnouncement()) { if (m_bAnnouncementInProgress) { m_bSetNextStation = false; return; } - m_nPreviousStreamedSound = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = GetCarTuning(); + m_nPlayingTrack = m_nNextTrack; + m_nNextTrack = GetCarTuning(); } if (SampleManager.IsMP3RadioChannelAvailable() - && m_nCurrentStreamedSound != STREAMED_SOUND_RADIO_MP3_PLAYER + && m_nNextTrack != STREAMED_SOUND_RADIO_MP3_PLAYER && ControlsManager.GetIsKeyboardKeyJustDown(rsF9)) { - m_nPreviousStreamedSound = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = STREAMED_SOUND_RADIO_MP3_PLAYER; + m_nPlayingTrack = m_nNextTrack; + m_nNextTrack = STREAMED_SOUND_RADIO_MP3_PLAYER; if (FindPlayerVehicle() != nil) FindPlayerVehicle()->m_nRadioStation = STREAMED_SOUND_RADIO_MP3_PLAYER; AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 1.0f); @@ -563,22 +580,22 @@ cMusicManager::ServiceGameMode() AudioManager.DoPoliceRadioCrackle(); if (m_bSetNextStation) { m_bSetNextStation = false; - m_nPreviousStreamedSound = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = GetNextCarTuning(); - if (m_nCurrentStreamedSound == STREAMED_SOUND_CITY_AMBIENT || m_nCurrentStreamedSound == STREAMED_SOUND_WATER_AMBIENT) + m_nPlayingTrack = m_nNextTrack; + m_nNextTrack = GetNextCarTuning(); + if (m_nNextTrack == STREAMED_SOUND_CITY_AMBIENT || m_nNextTrack == STREAMED_SOUND_WATER_AMBIENT) bRadioOff = true; - if (m_nPreviousStreamedSound == STREAMED_SOUND_CITY_AMBIENT || m_nPreviousStreamedSound == STREAMED_SOUND_WATER_AMBIENT) + if (m_nPlayingTrack == STREAMED_SOUND_CITY_AMBIENT || m_nPlayingTrack == STREAMED_SOUND_WATER_AMBIENT) AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 0.0f); } - if (m_nCurrentStreamedSound < STREAMED_SOUND_CITY_AMBIENT) { + if (m_nNextTrack < RADIO_OFF) { if (ChangeRadioChannel()) { ServiceTrack(); } else { m_bPlayerInCar = false; if (FindPlayerVehicle()) - FindPlayerVehicle()->m_nRadioStation = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = NO_TRACK; + FindPlayerVehicle()->m_nRadioStation = m_nNextTrack; + m_nNextTrack = NO_TRACK; } if (CTimer::GetIsSlowMotionActive()) { if (TheCamera.pTargetEntity != nil) { @@ -631,56 +648,56 @@ cMusicManager::ServiceGameMode() return; } if (bRadioOff) { - m_nCurrentStreamedSound = m_nPreviousStreamedSound; + m_nNextTrack = m_nPlayingTrack; if (FindPlayerVehicle() != nil) FindPlayerVehicle()->m_nRadioStation = RADIO_OFF; - AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_NO_RADIO, 0.0f); + AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_TURN_OFF, 0.0f); } ServiceAmbience(); return; } if (m_bRadioSetByScript) { if (UsesPoliceRadio(FindPlayerVehicle())) { - m_nCurrentStreamedSound = STREAMED_SOUND_RADIO_POLICE; + m_nNextTrack = STREAMED_SOUND_RADIO_POLICE; } else { - m_nCurrentStreamedSound = m_nRadioStation; - if (FindPlayerVehicle()->m_nRadioStation == m_nCurrentStreamedSound) { - m_nPreviousStreamedSound = NO_TRACK; + m_nNextTrack = m_nRadioStationScript; + if (FindPlayerVehicle()->m_nRadioStation == m_nNextTrack) { + m_nPlayingTrack = NO_TRACK; SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); SampleManager.StopStreamedFile(0); } if (m_nRadioPosition != -1) { - m_aTracks[m_nCurrentStreamedSound].m_nPosition = m_nRadioPosition; - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + m_aTracks[m_nNextTrack].m_nPosition = m_nRadioPosition; + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } } } else { - m_nCurrentStreamedSound = GetCarTuning(); + m_nNextTrack = GetCarTuning(); } - if (m_nCurrentStreamedSound >= RADIO_OFF) { + if (m_nNextTrack >= RADIO_OFF) { ServiceAmbience(); return; } if (ChangeRadioChannel()) { if (m_bRadioSetByScript) { m_bRadioSetByScript = false; - FindPlayerVehicle()->m_nRadioStation = m_nCurrentStreamedSound; + FindPlayerVehicle()->m_nRadioStation = m_nNextTrack; } } else { m_bPlayerInCar = false; - m_nCurrentStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; } } void cMusicManager::StopFrontEndTrack() { - if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_FRONTEND && m_nCurrentStreamedSound != NO_TRACK) { - m_aTracks[m_nCurrentStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_FRONTEND && m_nNextTrack != NO_TRACK) { + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); SampleManager.StopStreamedFile(0); - m_nPreviousStreamedSound = NO_TRACK; - m_nCurrentStreamedSound = NO_TRACK; + m_nPlayingTrack = NO_TRACK; + m_nNextTrack = NO_TRACK; } } @@ -696,30 +713,30 @@ cMusicManager::PlayFrontEndTrack(uint8 track, uint8 bPlayInFrontend) { if (IsInitialised() && !m_bDisabled && track < TOTAL_STREAMED_SOUNDS) { if (m_nMusicMode == MUSICMODE_GAME) { - if (m_nCurrentStreamedSound != NO_TRACK) { + if (m_nNextTrack != NO_TRACK) { if (m_bAnnouncementInProgress) { m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; } - m_aTracks[m_nCurrentStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } SampleManager.StopStreamedFile(0); } else if (m_nMusicMode == MUSICMODE_FRONTEND) { - if (m_nCurrentStreamedSound != NO_TRACK) { - m_aTracks[m_nCurrentStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + if (m_nNextTrack != NO_TRACK) { + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } SampleManager.StopStreamedFile(0); } - m_nPreviousStreamedSound = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = track; + m_nPlayingTrack = m_nNextTrack; + m_nNextTrack = track; m_bPlayInFrontend = !!bPlayInFrontend; m_bFrontendTrackFinished = false; m_bDoTrackService = true; bHasStarted = false; - if (m_nCurrentStreamedSound < STREAMED_SOUND_RADIO_POLICE) { + if (m_nNextTrack < NUM_RADIOS) { gRetuneCounter = 0; gNumRetunePresses = 0; } @@ -735,7 +752,7 @@ cMusicManager::PreloadCutSceneMusic(uint8 track) SampleManager.StopStreamedFile(0); SampleManager.PreloadStreamedFile(track, 0); SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 0); - m_nCurrentStreamedSound = track; + m_nNextTrack = track; } } @@ -751,7 +768,7 @@ cMusicManager::StopCutSceneMusic(void) { if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_CUTSCENE) { SampleManager.StopStreamedFile(0); - m_nCurrentStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; } } @@ -795,45 +812,45 @@ cMusicManager::ServiceAmbience() m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = false; } - if (m_nCurrentStreamedSound < STREAMED_SOUND_CITY_AMBIENT) { + if (m_nNextTrack < RADIO_OFF) { if (SampleManager.IsStreamPlaying(0)) { - m_aTracks[m_nCurrentStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); SampleManager.StopStreamedFile(0); - m_nCurrentStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; return; } - m_nCurrentStreamedSound = STREAMED_SOUND_CITY_AMBIENT; + m_nNextTrack = RADIO_OFF; } if (CWorld::Players[CWorld::PlayerInFocus].m_WBState != WBSTATE_PLAYING && !SampleManager.IsStreamPlaying(0)) { - m_nCurrentStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; return; } - m_nPreviousStreamedSound = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = TheCamera.DistanceToWater <= 45.0f ? STREAMED_SOUND_WATER_AMBIENT : STREAMED_SOUND_CITY_AMBIENT; + m_nPlayingTrack = m_nNextTrack; + m_nNextTrack = TheCamera.DistanceToWater <= 45.0f ? STREAMED_SOUND_WATER_AMBIENT : STREAMED_SOUND_CITY_AMBIENT; - if (m_nCurrentStreamedSound == m_nPreviousStreamedSound) { + if (m_nNextTrack == m_nPlayingTrack) { ComputeAmbienceVol(false, volume); SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0); - if (m_bDontServiceAmbienceTrack) { + if (m_bVerifyAmbienceTrackStartedToPlay) { if (SampleManager.IsStreamPlaying(0)) - m_bDontServiceAmbienceTrack = false; + m_bVerifyAmbienceTrackStartedToPlay = false; } else ServiceTrack(); } else { - if (m_nPreviousStreamedSound < TOTAL_STREAMED_SOUNDS) { - m_aTracks[m_nPreviousStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nPreviousStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + if (m_nPlayingTrack < TOTAL_STREAMED_SOUNDS) { + m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); SampleManager.StopStreamedFile(0); } - uint32 pos = GetTrackStartPos(m_nCurrentStreamedSound); + uint32 pos = GetTrackStartPos(m_nNextTrack); SampleManager.SetStreamedVolumeAndPan(0, 63, 1, 0); - if (SampleManager.StartStreamedFile(m_nCurrentStreamedSound, pos, 0)) { + if (SampleManager.StartStreamedFile(m_nNextTrack, pos, 0)) { ComputeAmbienceVol(true, volume); SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0); - m_bDontServiceAmbienceTrack = true; + m_bVerifyAmbienceTrackStartedToPlay = true; } else - m_nCurrentStreamedSound = NO_TRACK; + m_nNextTrack = NO_TRACK; } } @@ -862,7 +879,7 @@ cMusicManager::ServiceTrack() { if (m_bDoTrackService) { if (!SampleManager.IsStreamPlaying(0)) - SampleManager.StartStreamedFile(m_nCurrentStreamedSound, 0, 0); + SampleManager.StartStreamedFile(m_nNextTrack, 0, 0); } } @@ -882,9 +899,9 @@ cMusicManager::ServiceAnnouncement() cCheck = 0; int pos = SampleManager.GetStreamedFilePosition(0); if (SampleManager.IsStreamPlaying(0)) { - if (m_nCurrentStreamedSound != NO_TRACK) { - m_aTracks[m_nCurrentStreamedSound].m_nPosition = pos; - m_aTracks[m_nCurrentStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + if (m_nNextTrack != NO_TRACK) { + m_aTracks[m_nNextTrack].m_nPosition = pos; + m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); SampleManager.StopStreamedFile(0); } } @@ -893,8 +910,8 @@ cMusicManager::ServiceAnnouncement() if (SampleManager.StartStreamedFile(m_nAnnouncement, 0, 0)) { SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, 0, 0); m_bAnnouncementInProgress = true; - m_nPreviousStreamedSound = m_nCurrentStreamedSound; - m_nCurrentStreamedSound = m_nAnnouncement; + m_nPlayingTrack = m_nNextTrack; + m_nNextTrack = m_nAnnouncement; return true; } @@ -929,7 +946,7 @@ cMusicManager::GetNextCarTuning() while (gNumRetunePresses < 0) { if(veh->m_nRadioStation == HEAD_RADIO) { veh->m_nRadioStation = RADIO_OFF; - } else if(veh->m_nRadioStation == RADIO_OFF || veh->m_nRadioStation == POLICE_RADIO) { + } else if(veh->m_nRadioStation == RADIO_OFF || veh->m_nRadioStation == NUM_RADIOS) { veh->m_nRadioStation = SampleManager.IsMP3RadioChannelAvailable() ? USERTRACK : USERTRACK - 1; } else veh->m_nRadioStation--; @@ -940,12 +957,18 @@ cMusicManager::GetNextCarTuning() #endif if (SampleManager.IsMP3RadioChannelAvailable()) { if (veh->m_nRadioStation == RADIO_OFF) - veh->m_nRadioStation = POLICE_RADIO; + veh->m_nRadioStation = NUM_RADIOS; veh->m_nRadioStation += gNumRetunePresses; - if (veh->m_nRadioStation == POLICE_RADIO) +#ifdef FIX_BUGS + while (veh->m_nRadioStation > NUM_RADIOS) + veh->m_nRadioStation -= (NUM_RADIOS + 1); +#endif + if (veh->m_nRadioStation == NUM_RADIOS) veh->m_nRadioStation = RADIO_OFF; - else if (veh->m_nRadioStation > POLICE_RADIO) - veh->m_nRadioStation -= RADIO_OFF; +#ifndef FIX_BUGS + else if (veh->m_nRadioStation > NUM_RADIOS) + veh->m_nRadioStation -= (NUM_RADIOS + 1); +#endif } else if (gNumRetunePresses + veh->m_nRadioStation >= USERTRACK) { while (gNumRetunePresses) { if (veh->m_nRadioStation == RADIO_OFF) @@ -967,16 +990,16 @@ cMusicManager::GetNextCarTuning() bool cMusicManager::ChangeRadioChannel() { - if (m_nCurrentStreamedSound != m_nPreviousStreamedSound) { - if (m_nPreviousStreamedSound < TOTAL_STREAMED_SOUNDS) { - m_aTracks[m_nPreviousStreamedSound].m_nPosition = SampleManager.GetStreamedFilePosition(0); - m_aTracks[m_nPreviousStreamedSound].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + if (m_nNextTrack != m_nPlayingTrack) { + if (m_nPlayingTrack < TOTAL_STREAMED_SOUNDS) { + m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); SampleManager.StopStreamedFile(0); } if (SampleManager.IsStreamPlaying(0)) return false; - if (!SampleManager.StartStreamedFile(m_nCurrentStreamedSound, GetTrackStartPos(m_nCurrentStreamedSound), 0)) + if (!SampleManager.StartStreamedFile(m_nNextTrack, GetTrackStartPos(m_nNextTrack), 0)) return false; SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, 0, 0); } diff --git a/src/audio/MusicManager.h b/src/audio/MusicManager.h index e8b94da6..5d277f0e 100644 --- a/src/audio/MusicManager.h +++ b/src/audio/MusicManager.h @@ -18,8 +18,8 @@ public: bool m_bIsInitialised; bool m_bDisabled; uint8 m_nMusicMode; - uint8 m_nCurrentStreamedSound; - uint8 m_nPreviousStreamedSound; + uint8 m_nNextTrack; + uint8 m_nPlayingTrack; bool m_bFrontendTrackFinished; bool m_bPlayInFrontend; bool m_bSetNextStation; @@ -34,9 +34,9 @@ public: uint32 m_nTimer; bool m_bDoTrackService; bool m_bIgnoreTimeDelay; - bool m_bDontServiceAmbienceTrack; + bool m_bVerifyAmbienceTrackStartedToPlay; bool m_bRadioSetByScript; - uint8 m_nRadioStation; + uint8 m_nRadioStationScript; int32 m_nRadioPosition; uint8 m_nRadioInCar; @@ -44,7 +44,7 @@ public: cMusicManager(); bool IsInitialised() { return m_bIsInitialised; } uint32 GetMusicMode() { return m_nMusicMode; } - uint8 GetCurrentTrack() { return m_nCurrentStreamedSound; } + uint8 GetNextTrack() { return m_nNextTrack; } bool Initialise(); void Terminate(); diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h index 8c6d35aa..027042cb 100644 --- a/src/audio/audio_enums.h +++ b/src/audio/audio_enums.h @@ -12,8 +12,9 @@ enum eRadioStation FLASHBACK, CHATTERBOX, USERTRACK, - POLICE_RADIO, - RADIO_OFF, + POLICE_RADIO = 10, + NUM_RADIOS = 10, + RADIO_OFF = 11, }; enum eMusicMode diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 11e2b0ff..9b601d52 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -1514,7 +1514,7 @@ cSampleManager::LoadPedComment(uint32 nComment) case MUSICMODE_FRONTEND: { - if ( MusicManager.GetCurrentTrack() == STREAMED_SOUND_GAME_COMPLETED ) + if ( MusicManager.GetNextTrack() == STREAMED_SOUND_GAME_COMPLETED ) return false; break; @@ -1753,8 +1753,8 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) // increase the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_NEWS_INTRO - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) + && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO + && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { nChannelVolume[nChannel] >>= 2; } @@ -1792,8 +1792,8 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) // increase the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_NEWS_INTRO - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) + && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO + && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { nChannelVolume[nChannel] >>= 2; } diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 798ea287..7b82a4e2 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -1318,7 +1318,7 @@ cSampleManager::LoadPedComment(uint32 nComment) case MUSICMODE_FRONTEND: { - if ( MusicManager.GetCurrentTrack() == STREAMED_SOUND_GAME_COMPLETED ) + if ( MusicManager.GetNextTrack() == STREAMED_SOUND_GAME_COMPLETED ) return false; break; @@ -1533,8 +1533,8 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) // reduce channel volume when JB.MP3 or S4_BDBD.MP3 playing if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_NEWS_INTRO - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) + && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO + && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { nChannelVolume[nChannel] = vol / 4; } @@ -1575,8 +1575,8 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) // reduce the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_NEWS_INTRO - && MusicManager.GetCurrentTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) + && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO + && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { nChannelVolume[nChannel] = vol / 4; } diff --git a/src/audio/soundlist.h b/src/audio/soundlist.h index 7c3b30a7..4bbc3dde 100644 --- a/src/audio/soundlist.h +++ b/src/audio/soundlist.h @@ -160,7 +160,7 @@ enum eSound SOUND_FRONTEND_MONO, SOUND_FRONTEND_AUDIO_TEST, SOUND_FRONTEND_FAIL, - SOUND_FRONTEND_NO_RADIO, + SOUND_FRONTEND_RADIO_TURN_OFF, SOUND_FRONTEND_RADIO_CHANGE, SOUND_HUD, SOUND_AMMUNATION_WELCOME_1, diff --git a/src/text/Text.cpp b/src/text/Text.cpp index fe37d0f1..08ab0e1e 100644 --- a/src/text/Text.cpp +++ b/src/text/Text.cpp @@ -8,7 +8,7 @@ #include "Messages.h" #include "Text.h" -static wchar WideErrorString[25]; +wchar WideErrorString[25]; CText TheText; diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index a6a4f815..dfc4659a 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -182,7 +182,7 @@ public: float m_fMapObjectHeightBehind; // rear Z? eCarLock m_nDoorLock; int8 m_nLastWeaponDamage; // see eWeaponType, -1 if no damage - int8 m_nRadioStation; + uint8 m_nRadioStation; uint8 m_bRainAudioCounter; uint8 m_bRainSamplesCounter; uint8 m_nCarHornTimer; From 7ff899bd22f20c53d067529140aeb466612e8bbc Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 2 Feb 2021 16:39:08 +0300 Subject: [PATCH 012/314] OAL Loops, fixes --- src/audio/oal/channel.cpp | 56 +++++++++++++++++++++++++-- src/audio/oal/channel.h | 6 ++- src/audio/oal/stream.cpp | 81 ++++++++++++++++++++++++--------------- src/audio/oal/stream.h | 3 ++ src/audio/sampman_oal.cpp | 58 +++++++++++++--------------- 5 files changed, 137 insertions(+), 67 deletions(-) diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index 673a4aed..d1fd0aea 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -15,6 +15,8 @@ ALuint alFilters[MAXCHANNELS+MAX2DCHANNELS]; ALuint alBuffers[MAXCHANNELS+MAX2DCHANNELS]; bool bChannelsCreated = false; +int32 CChannel::channelsThatNeedService = 0; + void CChannel::InitChannels() { @@ -59,7 +61,9 @@ void CChannel::SetDefault() Position[0] = 0.0f; Position[1] = 0.0f; Position[2] = 0.0f; Distances[0] = 0.0f; Distances[1] = FLT_MAX; - LoopCount = 1; + + LoopCount = 1; + LastProcessedOffset = UINT32_MAX; LoopPoints[0] = 0; LoopPoints[1] = -1; Frequency = MAX_FREQ; @@ -67,6 +71,10 @@ void CChannel::SetDefault() void CChannel::Reset() { + // Here is safe because ctor don't call this + if (LoopCount > 1) + channelsThatNeedService--; + ClearBuffer(); SetDefault(); } @@ -165,10 +173,51 @@ void CChannel::SetCurrentFreq(uint32 freq) SetPitch(ALfloat(freq) / Frequency); } -void CChannel::SetLoopCount(int32 loopCount) // fake. TODO: +void CChannel::SetLoopCount(int32 count) { if ( !HasSource() ) return; - alSourcei(alSources[id], AL_LOOPING, loopCount == 1 ? AL_FALSE : AL_TRUE); + + // 0: loop indefinitely, 1: play one time, 2: play two times etc... + // only > 1 needs manual processing + + if (LoopCount > 1 && count < 2) + channelsThatNeedService--; + else if (LoopCount < 2 && count > 1) + channelsThatNeedService++; + + alSourcei(alSources[id], AL_LOOPING, count == 1 ? AL_FALSE : AL_TRUE); + LoopCount = count; +} + +bool CChannel::Update() +{ + if (!HasSource()) return false; + if (LoopCount < 2) return false; + + ALint state; + alGetSourcei(alSources[id], AL_SOURCE_STATE, &state); + if (state == AL_STOPPED) { + debug("Looping channels(%d in this case) shouldn't report AL_STOPPED, but nvm\n", id); + SetLoopCount(1); + return true; + } + + assert(channelsThatNeedService > 0 && "Ref counting is broken"); + + ALint offset; + alGetSourcei(alSources[id], AL_SAMPLE_OFFSET, &offset); + + // Rewound + if (offset < LastProcessedOffset) { + LoopCount--; + if (LoopCount == 1) { + // Playing last tune... + channelsThatNeedService--; + alSourcei(alSources[id], AL_LOOPING, AL_FALSE); + } + } + LastProcessedOffset = offset; + return true; } void CChannel::SetLoopPoints(ALint start, ALint end) @@ -200,6 +249,7 @@ void CChannel::SetPan(int32 pan) void CChannel::ClearBuffer() { if ( !HasSource() ) return; + alSourcei(alSources[id], AL_LOOPING, AL_FALSE); alSourcei(alSources[id], AL_BUFFER, AL_NONE); Data = nil; DataSize = 0; diff --git a/src/audio/oal/channel.h b/src/audio/oal/channel.h index 81817a32..b081be25 100644 --- a/src/audio/oal/channel.h +++ b/src/audio/oal/channel.h @@ -19,7 +19,10 @@ class CChannel float Distances[2]; int32 LoopCount; ALint LoopPoints[2]; + ALint LastProcessedOffset; public: + static int32 channelsThatNeedService; + static void InitChannels(); static void DestroyChannels(); @@ -37,7 +40,7 @@ public: void SetVolume(int32 vol); void SetSampleData(void *_data, size_t _DataSize, int32 freq); void SetCurrentFreq(uint32 freq); - void SetLoopCount(int32 loopCount); // fake + void SetLoopCount(int32 count); void SetLoopPoints(ALint start, ALint end); void SetPosition(float x, float y, float z); void SetDistances(float max, float min); @@ -45,6 +48,7 @@ public: void ClearBuffer(); void SetReverbMix(ALuint slot, float mix); void UpdateReverb(ALuint slot); + bool Update(); }; #endif \ No newline at end of file diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 74ed86f4..61cd243d 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -492,6 +492,7 @@ public: m_bOpened = mpg123_open(m_pMH, path) == MPG123_OK && mpg123_getformat(m_pMH, &rate, &channels, &encoding) == MPG123_OK; + m_nRate = rate; m_nChannels = channels; @@ -925,7 +926,8 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU m_bReset(false), m_nVolume(0), m_nPan(0), - m_nPosBeforeReset(0) + m_nPosBeforeReset(0), + m_nLoopCount(1) { // Be case-insensitive on linux (from https://github.com/OneSadCookie/fcaseopen/) @@ -1021,7 +1023,7 @@ bool CStream::IsPlaying() ALint sourceState[2]; alGetSourcei(m_pAlSources[0], AL_SOURCE_STATE, &sourceState[0]); alGetSourcei(m_pAlSources[1], AL_SOURCE_STATE, &sourceState[1]); - if ( m_bActive || sourceState[0] == AL_PLAYING || sourceState[1] == AL_PLAYING) + if (sourceState[0] == AL_PLAYING || sourceState[1] == AL_PLAYING) return true; } @@ -1179,6 +1181,8 @@ bool CStream::Setup() { if ( IsOpened() ) { + alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE); + alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE); m_pSoundFile->Seek(0); //SetPosition(0.0f, 0.0f, 0.0f); SetPitch(1.0f); @@ -1189,6 +1193,13 @@ bool CStream::Setup() return IsOpened(); } +void CStream::SetLoopCount(int32 count) +{ + if ( !HasSource() ) return; + + m_nLoopCount = count; +} + void CStream::SetPlay(bool state) { if ( !HasSource() ) return; @@ -1248,7 +1259,7 @@ void CStream::Update() if ( !m_bPaused ) { - ALint sourceState[2]; + ALint totalBuffers[2] = { 0, 0 }; ALint buffersProcessed[2] = { 0, 0 }; // Relying a lot on left buffer states in here @@ -1256,44 +1267,51 @@ void CStream::Update() do { //alSourcef(m_pAlSources[0], AL_ROLLOFF_FACTOR, 0.0f); - alGetSourcei(m_pAlSources[0], AL_SOURCE_STATE, &sourceState[0]); + alGetSourcei(m_pAlSources[0], AL_BUFFERS_QUEUED, &totalBuffers[0]); alGetSourcei(m_pAlSources[0], AL_BUFFERS_PROCESSED, &buffersProcessed[0]); //alSourcef(m_pAlSources[1], AL_ROLLOFF_FACTOR, 0.0f); - alGetSourcei(m_pAlSources[1], AL_SOURCE_STATE, &sourceState[1]); + alGetSourcei(m_pAlSources[1], AL_BUFFERS_QUEUED, &totalBuffers[1]); alGetSourcei(m_pAlSources[1], AL_BUFFERS_PROCESSED, &buffersProcessed[1]); } while (buffersProcessed[0] != buffersProcessed[1]); - ALint looping = AL_FALSE; - alGetSourcei(m_pAlSources[0], AL_LOOPING, &looping); - - if ( looping == AL_TRUE ) - { - TRACE("stream set looping"); - alSourcei(m_pAlSources[0], AL_LOOPING, AL_TRUE); - alSourcei(m_pAlSources[1], AL_LOOPING, AL_TRUE); - } - assert(buffersProcessed[0] == buffersProcessed[1]); - - while( buffersProcessed[0]-- ) + + // Correcting OpenAL concepts here: + // AL_BUFFERS_QUEUED = Number of *all* buffers in queue, including processed, processing and pending + // AL_BUFFERS_PROCESSED = Index of the buffer being processing right now. Buffers coming after that(have greater index) are pending buffers. + // which means: totalBuffers[0] - buffersProcessed[0] = pending buffers + + bool buffersRefilled = false; + + // We should wait queue to be cleared to loop track, because position calculation relies on queue. + if (m_nLoopCount != 1 && m_bActive && totalBuffers[0] == 0) { - ALuint buffer[2]; - - alSourceUnqueueBuffers(m_pAlSources[0], 1, &buffer[0]); - alSourceUnqueueBuffers(m_pAlSources[1], 1, &buffer[1]); - - if (m_bActive && FillBuffer(buffer)) + Setup(); + buffersRefilled = FillBuffers() != 0; + if (m_nLoopCount != 0) + m_nLoopCount--; + } + else + { + while( buffersProcessed[0]-- ) { - alSourceQueueBuffers(m_pAlSources[0], 1, &buffer[0]); - alSourceQueueBuffers(m_pAlSources[1], 1, &buffer[1]); + ALuint buffer[2]; + + alSourceUnqueueBuffers(m_pAlSources[0], 1, &buffer[0]); + alSourceUnqueueBuffers(m_pAlSources[1], 1, &buffer[1]); + + if (m_bActive && FillBuffer(buffer)) + { + buffersRefilled = true; + alSourceQueueBuffers(m_pAlSources[0], 1, &buffer[0]); + alSourceQueueBuffers(m_pAlSources[1], 1, &buffer[1]); + } } } - - if ( sourceState[0] != AL_PLAYING ) - { - alGetSourcei(m_pAlSources[0], AL_BUFFERS_PROCESSED, &buffersProcessed[0]); - SetPlay(buffersProcessed[0]!=0); - } + + // Two reasons: 1-Source may be starved to audio and stopped itself, 2- We're already waiting it to starve and die for looping track! + if (m_bActive && (buffersRefilled || (totalBuffers[1] - buffersProcessed[1] != 0))) + SetPlay(true); } } @@ -1305,6 +1323,7 @@ void CStream::ProviderInit() { SetPan(m_nPan); SetVolume(m_nVolume); + SetLoopCount(m_nLoopCount); SetPosMS(m_nPosBeforeReset); if (m_bActive) FillBuffers(); diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h index bcbc5e54..b3e96809 100644 --- a/src/audio/oal/stream.h +++ b/src/audio/oal/stream.h @@ -69,6 +69,7 @@ class CStream uint32 m_nVolume; uint8 m_nPan; uint32 m_nPosBeforeReset; + int32 m_nLoopCount; IDecoder *m_pSoundFile; @@ -103,6 +104,8 @@ public: void Start(); void Stop(); void Update(void); + void SetLoopCount(int32); + void ProviderInit(); void ProviderTerm(); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 7b82a4e2..9365c7dd 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -44,7 +44,6 @@ //TODO: fix eax3 reverb //TODO: max channels -//TODO: loop count cSampleManager SampleManager; bool _bSampmanInitialised = false; @@ -117,7 +116,6 @@ char _mp3DirectoryPath[MAX_PATH]; CStream *aStream[MAX_STREAMS]; uint8 nStreamPan [MAX_STREAMS]; uint8 nStreamVolume[MAX_STREAMS]; -uint8 nStreamLoopedFlag[MAX_STREAMS]; uint32 _CurMP3Index; int32 _CurMP3Pos; bool _bIsMp3Active; @@ -1666,7 +1664,7 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) ASSERT(stream != NULL); aStream[nStream] = stream; - if ( !stream->IsOpened() ) + if ( !stream->Setup() ) { delete stream; aStream[nStream] = NULL; @@ -1696,7 +1694,7 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) if ( stream ) { - if ( stream->Setup() ) + if ( stream->IsOpened() ) { stream->Start(); } @@ -1742,13 +1740,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = stream; - if (stream->IsOpened()) { - if (stream->Setup()) { - if (position != 0) - stream->SetPosMS(position); + if (stream->Setup()) { + if (position != 0) + stream->SetPosMS(position); - stream->Start(); - } + stream->Start(); return true; } else { @@ -1769,10 +1765,8 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); } - if (aStream[nStream]->IsOpened()) { - if (aStream[nStream]->Setup()) { - aStream[nStream]->Start(); - } + if (aStream[nStream]->Setup()) { + aStream[nStream]->Start(); return true; } else { @@ -1798,13 +1792,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = stream; - if (stream->IsOpened()) { - if (stream->Setup()) { - if (position != 0) - stream->SetPosMS(position); + if (stream->Setup()) { + if (position != 0) + stream->SetPosMS(position); - stream->Start(); - } + stream->Start(); return true; } else { @@ -1825,13 +1817,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]); } - if (aStream[nStream]->IsOpened()) { - if (aStream[nStream]->Setup()) { - if (position != 0) - aStream[nStream]->SetPosMS(position); + if (aStream[nStream]->Setup()) { + if (position != 0) + aStream[nStream]->SetPosMS(position); - aStream[nStream]->Start(); - } + aStream[nStream]->Start(); _bIsMp3Active = true; return true; @@ -1855,13 +1845,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) aStream[nStream] = stream; - if ( stream->IsOpened() ) { - if ( stream->Setup() ) { - if (position != 0) - stream->SetPosMS(position); + if ( stream->Setup() ) { + if (position != 0) + stream->SetPosMS(position); - stream->Start(); - } + stream->Start(); return true; } else { @@ -1963,6 +1951,12 @@ cSampleManager::Service(void) if ( stream ) stream->Update(); } + int refCount = CChannel::channelsThatNeedService; + for ( int32 i = 0; refCount && i < MAXCHANNELS+MAX2DCHANNELS; i++ ) + { + if ( aChannel[i].Update() ) + refCount--; + } } bool From f6326606b7dc6e1058dd17f8db0f3cb3e9f4e9b7 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Wed, 3 Feb 2021 15:35:06 +0300 Subject: [PATCH 013/314] fix --- src/control/AutoPilot.cpp | 8 ++++---- src/control/AutoPilot.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 4038c93e..77cbd0b4 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -52,8 +52,8 @@ void CAutoPilot::Save(uint8*& buf) WriteSaveBuf(buf, m_nCurrentRouteNode); WriteSaveBuf(buf, m_nNextRouteNode); WriteSaveBuf(buf, m_nPrevRouteNode); - WriteSaveBuf(buf, m_nTimeEnteredCurve); - WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); + WriteSaveBuf(buf, m_nTimeEnteredCurve); + WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); WriteSaveBuf(buf, m_nCurrentPathNodeInfo); WriteSaveBuf(buf, m_nNextPathNodeInfo); WriteSaveBuf(buf, m_nPreviousPathNodeInfo); @@ -91,8 +91,8 @@ void CAutoPilot::Load(uint8*& buf) m_nCurrentRouteNode = ReadSaveBuf(buf); m_nNextRouteNode = ReadSaveBuf(buf); m_nPrevRouteNode = ReadSaveBuf(buf); - m_nTimeEnteredCurve = ReadSaveBuf(buf); - m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); + m_nTimeEnteredCurve = ReadSaveBuf(buf); + m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); m_nCurrentPathNodeInfo = ReadSaveBuf(buf); m_nNextPathNodeInfo = ReadSaveBuf(buf); m_nPreviousPathNodeInfo = ReadSaveBuf(buf); diff --git a/src/control/AutoPilot.h b/src/control/AutoPilot.h index 6349fce6..c7707ed6 100644 --- a/src/control/AutoPilot.h +++ b/src/control/AutoPilot.h @@ -57,8 +57,8 @@ public: int32 m_nCurrentRouteNode; int32 m_nNextRouteNode; int32 m_nPrevRouteNode; - uint32 m_nTimeEnteredCurve; - uint32 m_nTimeToSpendOnCurrentCurve; + int32 m_nTimeEnteredCurve; + int32 m_nTimeToSpendOnCurrentCurve; uint32 m_nCurrentPathNodeInfo; uint32 m_nNextPathNodeInfo; uint32 m_nPreviousPathNodeInfo; From ac339f47242ab84689938512947cc259f3e6ae13 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 14:33:16 +0100 Subject: [PATCH 014/314] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e0fac061..e2b5342a 100644 --- a/README.md +++ b/README.md @@ -14,21 +14,21 @@ such that we have a working game at all times. - re3 requires game assets to work, so you **must** own [a copy of GTA III](https://store.steampowered.com/app/12100/Grand_Theft_Auto_III/). - Build re3 or download [the latest nightly build](https://github.com/GTAmodding/re3/actions) (You must be logged in.) - (Optional) If you want to use optional features like Russian language or menu map, copy the files in /gamefiles folder to your game root folder. -- Move re3.exe to GTA 3 directory and run it. +- Move re3 executable to GTA 3 directory and run it. ## Latest standalone executables to download (Put content of selected archive into gamedir) -- [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) -- [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) +- [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/windows-latest-d3d9.zip) - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/windows-latest-gl3.zip) -- [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) +- [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) +- [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) ## Building from Source -If you gonna use premake, then before starting you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder, if you want executable to be moved there via post-build script. +When using premake, you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder, if you want executable to be moved there via post-build script.

Linux Premake @@ -73,7 +73,7 @@ Assuming you have Visual Studio: **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows).
-> :information_source: There are various settings at the very bottom of [config.h](https://github.com/GTAmodding/re3/tree/master/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. +> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/master/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. > :information_source: **Did you notice librw?** re3 uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. From 862f83cc40580cd1b3e523af7dbc4c7560023698 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 16:51:52 +0100 Subject: [PATCH 015/314] add gamefiles and dlls to premake workflows --- .github/workflows/re3_msvc_amd64.yml | 15 ++++++++++++--- .github/workflows/re3_msvc_x86.yml | 16 +++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/.github/workflows/re3_msvc_amd64.yml b/.github/workflows/re3_msvc_amd64.yml index 863e2f94..574797ba 100644 --- a/.github/workflows/re3_msvc_amd64.yml +++ b/.github/workflows/re3_msvc_amd64.yml @@ -48,14 +48,23 @@ jobs: - name: Build run: | msbuild -m build/re3.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} - - name: Pack artifacts + # - name: Pack artifacts + # run: | + # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./gamefiles/* + - name: Move binaries to gamefiles run: | - 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.exe ./gamefiles/ + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.pdb ./gamefiles/ + - name: Move dynamic dependencies to gamefiles + run: | + mv ./vendor/mpg123/dist/Win64/libmpg123-0.dll ./gamefiles/ + mv ./vendor/openal-soft/dist/Win64/OpenAL32.dll ./gamefiles/ - name: Upload artifact to actions uses: actions/upload-artifact@v2 with: name: re3_${{matrix.buildtype}}_${{matrix.platform}} - path: ./bin/${{matrix.platform}}/${{matrix.buildtype}} + path: ./gamefiles/* # - name: Upload artifact to Bintray # uses: hpcsc/upload-bintray-docker-action@v1 # with: diff --git a/.github/workflows/re3_msvc_x86.yml b/.github/workflows/re3_msvc_x86.yml index ff9afb25..c1479e88 100644 --- a/.github/workflows/re3_msvc_x86.yml +++ b/.github/workflows/re3_msvc_x86.yml @@ -48,14 +48,24 @@ jobs: - name: Build run: | msbuild -m build/re3.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} - - name: Pack artifacts + # - name: Pack artifacts + # run: | + # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./gamefiles/* + - name: Move binaries to gamefiles run: | - 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.exe ./gamefiles/ + mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.pdb ./gamefiles/ + - if: contains(matrix.platform, 'oal') + name: Move dynamic dependencies to gamefiles + run: | + mv ./vendor/mpg123/dist/Win32/libmpg123-0.dll ./gamefiles/ + mv ./vendor/openal-soft/dist/Win32/OpenAL32.dll ./gamefiles/ - name: Upload artifact to actions uses: actions/upload-artifact@v2 with: name: re3_${{matrix.buildtype}}_${{matrix.platform}} - path: re3_${{matrix.buildtype}}_${{matrix.platform}}.zip + path: ./gamefiles/* # - name: Upload artifact to Bintray # uses: hpcsc/upload-bintray-docker-action@v1 # with: From 2e8429858ee0c3d673fed2971461fb1fd9c2f6b8 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 20:24:37 +0100 Subject: [PATCH 016/314] remove accidental comment from premake workflows --- .github/workflows/re3_msvc_amd64.yml | 1 - .github/workflows/re3_msvc_x86.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/re3_msvc_amd64.yml b/.github/workflows/re3_msvc_amd64.yml index 574797ba..73911efc 100644 --- a/.github/workflows/re3_msvc_amd64.yml +++ b/.github/workflows/re3_msvc_amd64.yml @@ -51,7 +51,6 @@ jobs: # - name: Pack artifacts # run: | # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* - # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./gamefiles/* - name: Move binaries to gamefiles run: | mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.exe ./gamefiles/ diff --git a/.github/workflows/re3_msvc_x86.yml b/.github/workflows/re3_msvc_x86.yml index c1479e88..8f85a862 100644 --- a/.github/workflows/re3_msvc_x86.yml +++ b/.github/workflows/re3_msvc_x86.yml @@ -51,7 +51,6 @@ jobs: # - name: Pack artifacts # run: | # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./bin/${{matrix.platform}}/${{matrix.buildtype}}/* - # 7z a re3_${{matrix.buildtype}}_${{matrix.platform}}.zip ./gamefiles/* - name: Move binaries to gamefiles run: | mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.exe ./gamefiles/ From bd368b29b13c10f504de7bf41b605b0cae318973 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 20:26:59 +0100 Subject: [PATCH 017/314] and a space --- .github/workflows/re3_msvc_amd64.yml | 2 +- .github/workflows/re3_msvc_x86.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/re3_msvc_amd64.yml b/.github/workflows/re3_msvc_amd64.yml index 73911efc..78994650 100644 --- a/.github/workflows/re3_msvc_amd64.yml +++ b/.github/workflows/re3_msvc_amd64.yml @@ -56,7 +56,7 @@ jobs: mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.exe ./gamefiles/ mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.pdb ./gamefiles/ - name: Move dynamic dependencies to gamefiles - run: | + run: | mv ./vendor/mpg123/dist/Win64/libmpg123-0.dll ./gamefiles/ mv ./vendor/openal-soft/dist/Win64/OpenAL32.dll ./gamefiles/ - name: Upload artifact to actions diff --git a/.github/workflows/re3_msvc_x86.yml b/.github/workflows/re3_msvc_x86.yml index 8f85a862..ad60ce43 100644 --- a/.github/workflows/re3_msvc_x86.yml +++ b/.github/workflows/re3_msvc_x86.yml @@ -57,7 +57,7 @@ jobs: mv ./bin/${{matrix.platform}}/${{matrix.buildtype}}/re3.pdb ./gamefiles/ - if: contains(matrix.platform, 'oal') name: Move dynamic dependencies to gamefiles - run: | + run: | mv ./vendor/mpg123/dist/Win32/libmpg123-0.dll ./gamefiles/ mv ./vendor/openal-soft/dist/Win32/OpenAL32.dll ./gamefiles/ - name: Upload artifact to actions From f2cd511d9c12fedbc2bc5aa8a89f2a395f5149e3 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 20:55:06 +0100 Subject: [PATCH 018/314] standalone windows links to premake --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e2b5342a..d56aa7ed 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,8 @@ such that we have a working game at all times. (Put content of selected archive into gamedir) - [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) -- [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/windows-latest-d3d9.zip) -- [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/windows-latest-gl3.zip) +- [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_d3d9-oal.zip) +- [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) From c002dd6cbaf642f24b33fbc2be3fff765024ee09 Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 3 Feb 2021 23:12:55 +0300 Subject: [PATCH 019/314] MP3 player fixes --- src/audio/sampman_oal.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 9365c7dd..d9adef5b 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -14,8 +14,6 @@ #include #include -#pragma comment(lib, "OpenAL32.lib") - // for user MP3s #include #include @@ -24,6 +22,10 @@ #define _getcwd getcwd #endif +#if defined _MSC_VER && !defined CMAKE_NO_AUTOLINK +#pragma comment( lib, "OpenAL32.lib" ) +#endif + #include "common.h" #include "crossplatform.h" @@ -1872,6 +1874,9 @@ cSampleManager::StopStreamedFile(uint8 nStream) { delete stream; aStream[nStream] = NULL; + + if ( nStream == 0 ) + _bIsMp3Active = false; } } @@ -1884,7 +1889,21 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream) if ( stream ) { - return stream->GetPosMS(); + if ( _bIsMp3Active ) + { + tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); + + if ( mp3 != NULL ) + { + return stream->GetPosMS() + mp3->nTrackStreamPos; + } + else + return 0; + } + else + { + return stream->GetPosMS(); + } } return 0; From e077a6bf281f20be843766d31d13a3f5f5c5f70f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 3 Feb 2021 22:21:16 +0200 Subject: [PATCH 020/314] Fix RW build --- src/rw/TexRead.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp index 98e7d180..a3b2f7de 100644 --- a/src/rw/TexRead.cpp +++ b/src/rw/TexRead.cpp @@ -5,6 +5,9 @@ #include "common.h" #ifdef ANISOTROPIC_FILTERING #include "rpanisot.h" +#ifndef LIBRW +#pragma comment( lib, "rpanisot.lib" ) +#endif #endif #include "crossplatform.h" #include "platform.h" From f7959d5646cf346a8134a0cea4db258fa3347461 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 23:26:19 +0100 Subject: [PATCH 021/314] reduce warnings in msvc librw build --- premake5.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/premake5.lua b/premake5.lua index f715f1e5..08b600e4 100644 --- a/premake5.lua +++ b/premake5.lua @@ -204,6 +204,7 @@ project "librw" architecture "amd64" filter "platforms:win*" + defines { "_CRT_SECURE_NO_WARNINGS", "_CRT_NONSTDC_NO_DEPRECATE" } staticruntime "on" buildoptions { "/Zc:sizedDealloc-" } From e6d86bfab509a59119a5f8156cc3b600a47bb3e8 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 3 Feb 2021 23:37:10 +0100 Subject: [PATCH 022/314] fix VC_PED_PORTS build --- src/peds/PedAI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp index 56c9429a..7f7120af 100644 --- a/src/peds/PedAI.cpp +++ b/src/peds/PedAI.cpp @@ -3454,7 +3454,7 @@ CPed::BeingDraggedFromCar(void) #ifdef VC_PED_PORTS if (m_objective == OBJECTIVE_LEAVE_CAR_AND_DIE) { if (m_pMyVehicle) { - m_pMyVehicle->ProcessOpenDoor(m_vehDoor, NUM_ANIMS, m_pVehicleAnim->currentTime * 5.0f); + m_pMyVehicle->ProcessOpenDoor(m_vehDoor, ANIM_STD_NUM, m_pVehicleAnim->currentTime * 5.0f); } } #endif From 61618389e1b1505b1040a2cf49b733a648a4c740 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 4 Feb 2021 01:52:57 +0200 Subject: [PATCH 023/314] Fix crash on changing anti aliasing --- src/render/Font.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/render/Font.cpp b/src/render/Font.cpp index 7dba8094..6a9944e1 100644 --- a/src/render/Font.cpp +++ b/src/render/Font.cpp @@ -451,6 +451,7 @@ CFont::Shutdown(void) for (int i = 0; i < MAX_BUTTON_ICONS; i++) ButtonSprite[i].Delete(); CTxdStore::RemoveTxdSlot(ButtonsSlot); + ButtonsSlot = -1; } #endif Sprite[0].Delete(); From 263a766d8ed0daf6d720f9a0e0ff90d22c214711 Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 4 Feb 2021 01:40:45 +0100 Subject: [PATCH 024/314] revert Fix RW build --- src/rw/TexRead.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/rw/TexRead.cpp b/src/rw/TexRead.cpp index a3b2f7de..98e7d180 100644 --- a/src/rw/TexRead.cpp +++ b/src/rw/TexRead.cpp @@ -5,9 +5,6 @@ #include "common.h" #ifdef ANISOTROPIC_FILTERING #include "rpanisot.h" -#ifndef LIBRW -#pragma comment( lib, "rpanisot.lib" ) -#endif #endif #include "crossplatform.h" #include "platform.h" From 95208bc3dda516d02d7e6e0c62573959eb23976d Mon Sep 17 00:00:00 2001 From: IlDucci Date: Thu, 4 Feb 2021 16:56:47 +0100 Subject: [PATCH 025/314] GXT additions for the Gamepad Menu - Spanish: restoring LCS's name of the Red Light District. Thanks to ForeverL for pointing it out. - Spanish: Adding strings for the new controller menu. - French, German, Italian: copypastingthe official strings from the old controller menu into the new one. --- gamefiles/TEXT/french.gxt | Bin 244628 -> 244794 bytes gamefiles/TEXT/german.gxt | Bin 240566 -> 240732 bytes gamefiles/TEXT/italian.gxt | Bin 240052 -> 240226 bytes gamefiles/TEXT/spanish.gxt | Bin 235018 -> 235434 bytes utils/gxt/french.txt | 63 ++++++++++++++----------- utils/gxt/german.txt | 63 ++++++++++++++----------- utils/gxt/italian.txt | 63 ++++++++++++++----------- utils/gxt/spanish.txt | 93 +++++++++++++++++++++++-------------- 8 files changed, 165 insertions(+), 117 deletions(-) diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 6ba7995d5e11bda11284365544893ac26bdd3951..aa2b905084e0dd6b67e024d88f377352dd71c63d 100644 GIT binary patch delta 23861 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 Nn9LT4bHWAq{{T}&+*AMn delta 23645 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%0DIIKx8@{`2c@Pe+|+{0H2@4zK6nH{2r~J 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 S<+q&b|S-0tk_w^%Ixf%pL1r`TIcsUsS#HYgI(8 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 Sl5hWAZ-34Az5TwgKKx%oQpb=0 diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index 9ec21fe1689e2d54a3c14fc2c1536e1829904054..439663c834b0bcdc7f19c9417e291d424cab45fd 100644 GIT binary patch delta 22829 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 delta 22881 zcmY+M3w%_^b^njnm|%hxg0YNMOtHW+k)5^nq18&pgnjRdeR1zyy+X8@*pv`VD8aI# z*jz#=p_CHLr4FHlIFwLIF(nu~lu|+{C4^AwVnQjQgi=ZUzc{2h`UU>gcsSP z<$uk=gH_Jd&}UgESVcByhGwXpQXGeT*e9h<0=!Le65QmM@)Y>CW`uqAIUyffP2zmc z{z;tmLIsLs{fKo66|TCynvq4{Q6)zf*Jwr-?`lSMHT_uWpoSVgMEqroqa^=v#BT?@ z*M>Y1tUU?29S~JE`D>E7*3T;DTHmE~GT?PT@s14f*B^YCRfE+4YO(%9jt-1QslVdY zKG^@t_TQDSV|d-PQZZf+KOt4Qy(g`Za&D~Gm7G&PsN|gTA{7re@e%G@w&?CO^rsw8 zNOaAc-Y*}l)^7bh@m7>$*eb7YXoLIgDk=@i3pT4Fds`Kv;w+JVMj!||tc z#SRoFp8{vPvZW&AlD#hudt%Dj-H_*Vwu7F(_)ieF6mxRL0FB+QIY`$GhiK)WYI&IE zz3ZJA)=+x{H5)G#D<~ulzUSQ^R@XT0dBkcvwu8~NiCRz-lC71!2H0zWeG!zpAM{2iuy6S=EG9p-B;M@S_dBG2ihveRTD# z@&Cwg9AWORozonkEn1EmIB7UY)_J9a+E}3(Lt&R@WZ<&lAf0$Gd8}K;Tt?eFG!AAP45N)%qmkv+7qM!+a2qvi#^jqf9H2Rd zgS6amh&CGz(_YPPpoLE9hX4{b+)6{cRKkHMjWvvfH3yri({O<18xGPc!y(#bI84V4 zx6nDTE2=9Pp}XcqE7f(Ygo9D?8*ZZx&7o$RZ8$(n4F_qX;SlXL9HtKpx6m!a5tl~y zsKi386g3>Btl>7Ar8(S8gN6gN*Km+d8V=Dt!(kdDIw|@@xP>Mgj!>UqmtVBfQu888 z8w|J6F3l~?bjEOi?idcz=ufKxw1lYHaG0`&Td2=)gq9g@rLC@ch|)pBZFE_4q?zs* z4p74kl~^Q5QNtlB8V=J-hFfTj;RtOt+)Bq4yUmd(T{AD*sO~c=f!1d78^&-l9HfPY zL$t+km<}3lq4S2(w+y$^m_8kUlp=jTSB}@#HY(~DQFJcD0U9(Mq&0>^w9Rmsju~#D zdxj%4rm7N)wo=@1lx7%q+h~J+XltgOh68leaF8w;4$<(LD$=$vO*Gs>Ny8DEWw@0F z3`c3L;WpaI?7~_Fnw#mQdV#$WT{j%0Aur0r0?i>BYdB0{!!1-c9HIG!TWO79G_m0} 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 atDk-918?bsDe;#+y7sB}5B63dhW`tIZCiK% delta 31702 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 N$d}H3;E`nA{{SYyGeZCX diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index 60bf9d02..cbc71f91 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -2452,33 +2452,6 @@ Accélérateur [FEC_SMT] Déclencheur de mission spéciale -[FEC_CCF] -Configuration: - -[FEC_CF1] -Config1 - -[FEC_CF2] -Config2 - -[FEC_CF3] -Config3 - -[FEC_CF4] -Config4 - -[FEC_CDP] -Affichage de la manette: - -[FEC_ONF] -A pied - -[FEC_INC] -Dans un véhicule - -[FEC_VIB] -Vibrations: - [FEA_OUT] Sortie audio: @@ -8220,6 +8193,42 @@ RUSSE [FEA_FMN] RADIO ETEINTE +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_CCF] +CONFIGURATION + +[FEC_CF1] +CONFIGURATION 1 + +[FEC_CF2] +CONFIGURATION 2 + +[FEC_CF3] +CONFIGURATION 3 + +[FEC_CF4] +CONFIGURATION 4 + +[FEC_CDP] +AFFICHAGE DE LA MANETTE + +[FEC_ONF] +A PIED + +[FEC_INC] +DANS UN VÉHICULE + +[FEC_VIB] +VIBRATIONS + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 2f038ccf..bfcc7157 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -2488,33 +2488,6 @@ Beschleunigen [FEC_SMT] Spezialmission aktivieren -[FEC_CCF] -Konfiguration: - -[FEC_CF1] -Konfig1 - -[FEC_CF2] -Konfig2 - -[FEC_CF3] -Konfig3 - -[FEC_CF4] -Konfig4 - -[FEC_CDP] -Controller-Anzeige: - -[FEC_ONF] -Zu Fuß - -[FEC_INC] -Im Auto - -[FEC_VIB] -Vibration: - [FEA_OUT] Tonausgabe: @@ -8037,6 +8010,42 @@ RUSSISCH [FEA_FMN] RADIO AUS +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_CCF] +KONFIGURATION + +[FEC_CF1] +KONFIGURATION 1 + +[FEC_CF2] +KONFIGURATION 2 + +[FEC_CF3] +KONFIGURATION 3 + +[FEC_CF4] +KONFIGURATION 4 + +[FEC_CDP] +CONTROLLER-ANZEIGE + +[FEC_ONF] +ZU FUß + +[FEC_INC] +IM AUTO + +[FEC_VIB] +VIBRATION + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index 47b3d51e..18f49872 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -2479,33 +2479,6 @@ Accelera [FEC_SMT] Attivatore missione speciale -[FEC_CCF] -Configurazione: - -[FEC_CF1] -Config1 - -[FEC_CF2] -Config2 - -[FEC_CF3] -Config3 - -[FEC_CF4] -Config4 - -[FEC_CDP] -Schermata controller: - -[FEC_ONF] -A piedi - -[FEC_INC] -In macchina - -[FEC_VIB] -Vibrazione: - [FEA_OUT] Uscita: @@ -8049,6 +8022,42 @@ RUSSO [FEA_FMN] RADIO SPENTA +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_CCF] +CONFIGURAZIONE + +[FEC_CF1] +CONFIGURAZIONE 1 + +[FEC_CF2] +CONFIGURAZIONE 2 + +[FEC_CF3] +CONFIGURAZIONE 3 + +[FEC_CF4] +CONFIGURAZIONE 4 + +[FEC_CDP] +SCHERMATA CONTROLLER + +[FEC_ONF] +A PIEDI + +[FEC_INC] +IN MACCHINA + +[FEC_VIB] +VIBRAZIONE + [DUMMY] THIS LABEL NEEDS TO BE HERE !!! AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index 5de7de5c..bf07a62f 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -372,7 +372,7 @@ Playa de Portland Saint Mark's [REDLIGH] -Barrio rojo +Red Light District [TOWERS] Cerros de Hepburn @@ -636,7 +636,7 @@ Puedes practicar disparando a estas dianas. Vuelve a la misión cuando hayas ter ~g~Busca un cliente. [FARE1] -~g~Ve al ~w~club Sex Kitten Meeouch ~g~en el barrio rojo. +~g~Ve al ~w~club Sex Kitten Meeouch ~g~en el Red Light District. [FARE2] ~g~Ve a ~w~Supa Save ~g~en Portland View. @@ -648,13 +648,13 @@ Puedes practicar disparando a estas dianas. Vuelve a la misión cuando hayas ter ~g~Ve a la ~w~cafetería Greasy Joe ~g~en Callahan Point. [FARE5] -~g~Ve a la ~w~tienda de armas Ammu-Nation ~g~en el barrio rojo. +~g~Ve a la ~w~tienda de armas Ammu-Nation ~g~en el Red Light District. [FARE6] ~g~Ve a ~w~Easy Credit Autos ~g~en Saint Mark's. [FARE7] -~g~Ve al ~w~bar de topless de Woody ~g~en el barrio rojo. +~g~Ve al ~w~bar de topless de Woody ~g~en el Red Light District. [FARE8] ~g~Ve al ~w~restaurante Marcos ~g~en Saint Mark's. @@ -756,7 +756,7 @@ Pulsa ~h~~k~~TOGGLE_SUBMISSIONS~~w~ para activar o desactivar las misiones del c ¡Has volado durante ~1~ segundos! [EBAL_A] -Conozco un lugar en las afueras del barrio rojo donde podemos escondernos, +Conozco un lugar en las afueras del Red Light District donde podemos escondernos, [EBAL_A1] pero mis manos están destrozadas, así que conduce tú, hermano. @@ -1553,7 +1553,7 @@ Eso no es un masajeador. ~r~Muy bonito, ¡has asustado al objetivo! ¿Y te consideras un asesino? [AM1_5] -~g~Ve al barrio rojo y espera a que Salvatore salga del club. +~g~Ve al Red Light District y espera a que Salvatore salga del club. [AM1_7] ~r~Salvatore está en su casita, sano y salvo, tomándose un cóctel. ¡Nadie te va a llamar ''Chacal''! @@ -2466,33 +2466,6 @@ Acelerar [FEC_SMT] Activar misión especial -[FEC_CCF] -Configuración: - -[FEC_CF1] -Ajuste1 - -[FEC_CF2] -Ajuste2 - -[FEC_CF3] -Ajuste3 - -[FEC_CF4] -Ajuste4 - -[FEC_CDP] -Controles a mostrar: - -[FEC_ONF] -A pie - -[FEC_INC] -En vehículos - -[FEC_VIB] -Vibración: - [FEA_OUT] Salida: @@ -4447,7 +4420,7 @@ tomándolos por el camino. ¡Cuando alcances a ese bandido espaciado con SPANK, chíngatelo! [DIAB4_H] -Luego reparte mis revistas XXX por el barrio rojo. +Luego reparte mis revistas XXX por el Red Light District. [DIAB4_1] ~g~Lleva la furgoneta a la parte de atrás de Revistas XXX. @@ -4579,7 +4552,7 @@ si no les doy una parte. He dejado un coche dentro de la fábrica. [MEA2_G] -Ve a recogerles con él en su territorio, en el barrio rojo. +Ve a recogerles con él en su territorio, en el Red Light District. [MEA2_H] Luego tráelos a la fábrica para que conozcan la opinión de Marty. @@ -7153,7 +7126,7 @@ Color del jugador Liberty City [FEM_MA1] -Barrio rojo +Red Light District [FEM_MA2] Chinatown @@ -8128,6 +8101,54 @@ Poner o quitar punto de referencia [FEA_FMN] RADIO APAGADA +[FEC_DS2] +DUALSHOCK 2 + +[FEC_DS3] +DUALSHOCK 3 + +[FEC_DS4] +DUALSHOCK 4 + +[FEC_360] +MANDO DE XBOX 360 + +[FEC_ONE] +MANDO DE XBOX ONE + +[FEC_TYP] +TIPO DE MANDO + +[FEC_CCF] +CONFIGURACIÓN + +[FEC_CF1] +AJUSTE 1 + +[FEC_CF2] +AJUSTE 2 + +[FEC_CF3] +AJUSTE 3 + +[FEC_CF4] +AJUSTE 4 + +[FEC_CDP] +CONTROLES A MOSTRAR + +[FEC_ONF] +A PIE + +[FEC_INC] +EN VEHÍCULO + +[FEC_VIB] +VIBRACIÓN + +[FET_AGS] +AJUSTES DE MANDO + { end of file } [DUMMY] From e653f4f7ddc16976d43a744636b0802a5e289969 Mon Sep 17 00:00:00 2001 From: IlDucci Date: Thu, 4 Feb 2021 16:59:19 +0100 Subject: [PATCH 026/314] Adding missing "AUTO" string. --- utils/gxt/spanish.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index bf07a62f..921b7b9c 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -8092,6 +8092,9 @@ PS2 [FEM_XBX] XBOX +[FEM_AUT] +AUTOM. + [FEC_IVP] INVERTIR VERTICALIDAD MANDO From ad87a6d1858c2d43e86046e9d6d3fe34379b6c8d Mon Sep 17 00:00:00 2001 From: IlDucci Date: Thu, 4 Feb 2021 16:59:39 +0100 Subject: [PATCH 027/314] And adding the missing GXT. --- gamefiles/TEXT/spanish.gxt | Bin 235434 -> 235460 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 354c2ccccaf1280ca1558245396e2edce6618a73..ef0d41469cfe6b8ef84789818ec53ec6b33e51fd 100644 GIT binary patch delta 249 zcmZ3rp6|$dKGqO#*T^RuS+}b&DsA4YBFxCxHu<7zx#TNxW(GG`=XhslH-Qz;Lk0;r+lWC6&NgPSnLJl*zoZ@19G74thA=qWm?3X-sk$>GW7FiF z8p@1IHs94a%*4A2D(~;-%22j>t+qHb Date: Thu, 4 Feb 2021 18:28:24 +0100 Subject: [PATCH 028/314] CHud::Draw fix --- src/render/Hud.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index 2f7b9001..4991e024 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -1150,18 +1150,18 @@ void CHud::Draw() if (IntroRect.m_nTextureId >= 0) { CRect rect ( IntroRect.m_sRect.left, - IntroRect.m_sRect.top, + IntroRect.m_sRect.bottom, IntroRect.m_sRect.right, - IntroRect.m_sRect.bottom ); + IntroRect.m_sRect.top ); CTheScripts::ScriptSprites[IntroRect.m_nTextureId].Draw(rect, IntroRect.m_sColor); } else { CRect rect ( IntroRect.m_sRect.left, - IntroRect.m_sRect.top, + IntroRect.m_sRect.bottom, IntroRect.m_sRect.right, - IntroRect.m_sRect.bottom ); + IntroRect.m_sRect.top ); CSprite2d::DrawRect(rect, IntroRect.m_sColor); } From bf299e5c17387751dcd6ab0af0b7cea85bca33cf Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 4 Feb 2021 23:41:10 +0100 Subject: [PATCH 029/314] fix MASTER crashes --- src/core/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/common.h b/src/core/common.h index 33d8910d..a8f19158 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -354,7 +354,7 @@ __inline__ void TRACE(char *f, ...) { } // this is re3 only, and so the function #ifndef MASTER #define assert(_Expression) (void)( (!!(_Expression)) || (re3_assert(#_Expression, __FILE__, __LINE__, __FUNCTION__), 0) ) #else -#define assert(_Expression) +#define assert(_Expression) (_Expression) #endif #define ASSERT assert From 5385d004ecb81fe722485318bab1d19dc97aa00a Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 5 Feb 2021 10:51:12 +0100 Subject: [PATCH 030/314] fix generic.txd crash --- src/core/Game.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 4fd30b53..2a6afa97 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -414,6 +414,11 @@ bool CGame::Initialise(const char* datFile) CTxdStore::Create(gameTxdSlot); CTxdStore::AddRef(gameTxdSlot); +#ifdef EXTENDED_PIPELINES + // for generic fallback + CustomPipes::SetTxdFindCallback(); +#endif + LoadingScreen("Loading the Game", "Loading particles", nil); int particleTxdSlot = CTxdStore::AddTxdSlot("particle"); CTxdStore::LoadTxd(particleTxdSlot, "MODELS/PARTICLE.TXD"); @@ -498,10 +503,6 @@ bool CGame::Initialise(const char* datFile) CFileLoader::LoadLevel("GTA3.DAT"); #endif -#ifdef EXTENDED_PIPELINES - // for generic fallback - CustomPipes::SetTxdFindCallback(); -#endif CWorld::AddParticles(); CVehicleModelInfo::LoadVehicleColours(); CVehicleModelInfo::LoadEnvironmentMaps(); From 2bd8be587277af6a1239a19d0235888c85388f93 Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 5 Feb 2021 12:08:14 +0100 Subject: [PATCH 031/314] Fix inverted vertical camera --- src/core/Cam.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index 2a32ed1f..e0497fe2 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -4631,7 +4631,7 @@ CCam::Process_FollowPed_Rotation(const CVector &CameraTarget, float TargetOrient */ { LookLeftRight = -CPad::GetPad(0)->LookAroundLeftRight(); - LookUpDown = -CPad::GetPad(0)->LookAroundUpDown(); + LookUpDown = CPad::GetPad(0)->LookAroundUpDown(); } float AlphaOffset, BetaOffset; if(UseMouse){ From c7ba01b034ab67b1343bc728bd058c47eb48efc4 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 5 Feb 2021 17:51:57 +0300 Subject: [PATCH 032/314] Detect joystick menu for XInput --- src/core/ControllerConfig.cpp | 5 ++++ src/core/Frontend.h | 2 +- src/core/MenuScreensCustom.cpp | 51 ++++++++++++++++++++++++++++++++-- src/core/Pad.cpp | 6 ++++ src/core/Pad.h | 2 ++ src/core/config.h | 4 +-- src/core/re3.cpp | 42 ++++++++++++++++++++++++++-- src/skel/crossplatform.h | 2 +- src/skel/glfw/glfw.cpp | 8 +++--- src/skel/win/win.cpp | 4 +++ 10 files changed, 112 insertions(+), 14 deletions(-) diff --git a/src/core/ControllerConfig.cpp b/src/core/ControllerConfig.cpp index 83d0f669..e72af7e4 100644 --- a/src/core/ControllerConfig.cpp +++ b/src/core/ControllerConfig.cpp @@ -354,6 +354,11 @@ uint32 CControllerConfigManager::ms_padButtonsInited = 0; void CControllerConfigManager::InitDefaultControlConfigJoyPad(uint32 buttons) { +#ifdef XINPUT + // No manual bindings for you, honey. + return; +#endif + m_bFirstCapture = true; uint32 btn = buttons; diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 9c666809..538ae78b 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -243,7 +243,7 @@ enum eMenuScreen #ifdef GRAPHICS_MENU_OPTIONS MENUPAGE_GRAPHICS_SETTINGS, #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU MENUPAGE_DETECT_JOYSTICK, #endif diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 357f136b..98defe9b 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -1,4 +1,13 @@ #include "common.h" +#if defined DETECT_JOYSTICK_MENU && defined XINPUT +#include +#include +#if !defined(PSAPI_VERSION) || (PSAPI_VERSION > 1) +#pragma comment( lib, "Xinput9_1_0.lib" ) +#else +#pragma comment( lib, "Xinput.lib" ) +#endif +#endif #include "platform.h" #include "crossplatform.h" #include "Renderer.h" @@ -297,11 +306,13 @@ void ScreenModeAfterChange(int8 before, int8 after) #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU wchar selectedJoystickUnicode[128]; int cachedButtonNum = -1; wchar* DetectJoystickDraw(bool* disabled, bool userHovering) { + +#if defined RW_GL3 && !defined LIBRW_SDL2 int numButtons; int found = -1; const char *joyname; @@ -332,6 +343,40 @@ wchar* DetectJoystickDraw(bool* disabled, bool userHovering) { } } if (PSGLOBAL(joy1id) == -1) +#elif defined XINPUT + int found = -1; + XINPUT_STATE xstate; + memset(&xstate, 0, sizeof(XINPUT_STATE)); + if (userHovering) { + for (int i = 0; i <= 3; i++) { + if (XInputGetState(i, &xstate) == ERROR_SUCCESS) { + if (xstate.Gamepad.bLeftTrigger || xstate.Gamepad.bRightTrigger) { + found = i; + break; + } + for (int j = XINPUT_GAMEPAD_DPAD_UP; j != XINPUT_GAMEPAD_Y << 1; j = (j << 1)) { + if (xstate.Gamepad.wButtons & j) { + found = i; + break; + } + } + if (found != -1) + break; + } + } + if (found != -1 && CPad::XInputJoy1 != found) { + if (CPad::XInputJoy1 != -1 && CPad::XInputJoy1 != found) + CPad::XInputJoy2 = CPad::XInputJoy1; + else + CPad::XInputJoy2 = -1; + + CPad::XInputJoy1 = found; + cachedButtonNum = 0; // fake too, because xinput bypass CControllerConfig + } + } + sprintf(gSelectedJoystickName, "%d", CPad::XInputJoy1); // fake, on xinput we only store gamepad ids(thanks MS) so this is a temp variable to be used below + if (CPad::XInputJoy1 == -1) +#endif AsciiToUnicode("Not found", selectedJoystickUnicode); else AsciiToUnicode(gSelectedJoystickName, selectedJoystickUnicode); @@ -666,7 +711,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { #ifdef GAMEPAD_MENU MENUACTION_CHANGEMENU, "FET_AGS", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU MENUACTION_CHANGEMENU, "FEC_JOD", { nil, SAVESLOT_NONE, MENUPAGE_DETECT_JOYSTICK }, #endif MENUACTION_CHANGEMENU, "FET_AMS", { nil, SAVESLOT_NONE, MENUPAGE_MOUSE_CONTROLS }, @@ -873,7 +918,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { }, #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU // MENUPAGE_DETECT_JOYSTICK { "FEC_JOD", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, new CCustomScreenLayout({MENUSPRITE_MAINMENU, 40, 60, 20, FONT_BANK, FESCREEN_LEFT_ALIGN, false, MEDIUMTEXT_X_SCALE, MEDIUMTEXT_Y_SCALE}), DetectJoystickGoBack, diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp index 9bcac613..60bb7a76 100644 --- a/src/core/Pad.cpp +++ b/src/core/Pad.cpp @@ -1028,8 +1028,14 @@ void CPad::AddToPCCheatString(char c) } #ifdef XINPUT +int CPad::XInputJoy1 = 0; +int CPad::XInputJoy2 = 1; void CPad::AffectFromXinput(uint32 pad) { + pad = pad == 0 ? XInputJoy1 : XInputJoy2; + if (pad == -1) // LoadINIControllerSettings can set it to -1 + return; + XINPUT_STATE xstate; memset(&xstate, 0, sizeof(XINPUT_STATE)); if (XInputGetState(pad, &xstate) == ERROR_SUCCESS) diff --git a/src/core/Pad.h b/src/core/Pad.h index 20a676ef..b37659cd 100644 --- a/src/core/Pad.h +++ b/src/core/Pad.h @@ -263,6 +263,8 @@ public: static int32 *EditCodesForControls(int32 *pRsKeys, int32 nSize); #ifdef XINPUT + static int XInputJoy1; + static int XInputJoy2; void AffectFromXinput(uint32 pad); #endif diff --git a/src/core/config.h b/src/core/config.h index 79323ef1..1810711d 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -287,8 +287,8 @@ enum Config { #if !defined(RW_GL3) && defined(_WIN32) #define XINPUT #endif -#if !defined(_WIN32) && !defined(__SWITCH__) -#define DONT_TRUST_RECOGNIZED_JOYSTICKS // Then we'll only rely on GLFW gamepad DB, and expect user to enter Controller->Detect joysticks if his joystick isn't on that list. +#if defined XINPUT || (defined RW_GL3 && !defined LIBRW_SDL2 && !defined __SWITCH__) +#define DETECT_JOYSTICK_MENU // Then we'll expect user to enter Controller->Detect joysticks if his joystick isn't detected at the start. #endif #define DETECT_PAD_INPUT_SWITCH // Adds automatic switch of pad related stuff between controller and kb/m #define KANGAROO_CHEAT diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 62d963ca..e631f615 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -1,6 +1,14 @@ #include #define WITHWINDOWS #include "common.h" +#if defined DETECT_JOYSTICK_MENU && defined XINPUT +#include +#if !defined(PSAPI_VERSION) || (PSAPI_VERSION > 1) +#pragma comment( lib, "Xinput9_1_0.lib" ) +#else +#pragma comment( lib, "Xinput.lib" ) +#endif +#endif #include "Renderer.h" #include "Credits.h" #include "Camera.h" @@ -34,7 +42,7 @@ #include "MBlur.h" #include "ControllerConfig.h" -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU #include "crossplatform.h" #endif @@ -244,8 +252,32 @@ const char *iniKeyboardButtons[] = {"ESC","F1","F2","F3","F4","F5","F6","F7","F8 void LoadINIControllerSettings() { -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU +#ifdef XINPUT + int storedJoy1 = -1; + if (ReadIniIfExists("Controller", "JoystickName", &storedJoy1)) { + CPad::XInputJoy1 = -1; + CPad::XInputJoy2 = -1; + XINPUT_STATE xstate; + memset(&xstate, 0, sizeof(XINPUT_STATE)); + + // Firstly confirm & set joy 1 + if (XInputGetState(storedJoy1, &xstate) == ERROR_SUCCESS) { + CPad::XInputJoy1 = storedJoy1; + } + + for (int i = 0; i <= 3; i++) { + if (XInputGetState(i, &xstate) == ERROR_SUCCESS) { + if (CPad::XInputJoy1 == -1) + CPad::XInputJoy1 = i; + else if (CPad::XInputJoy2 == -1 && i != CPad::XInputJoy1) + CPad::XInputJoy2 = i; + } + } + } +#else ReadIniIfExists("Controller", "JoystickName", gSelectedJoystickName, 128); +#endif #endif // force to default GTA behaviour (never overwrite bindings on joy change/initialization) if user init'ed/set bindings before we introduced that if (!ReadIniIfExists("Controller", "PadButtonsInited", &ControlsManager.ms_padButtonsInited)) { @@ -343,8 +375,12 @@ void SaveINIControllerSettings() StoreIni("Bindings", iniControllerActions[i], value, 128); } -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU +#ifdef XINPUT + StoreIni("Controller", "JoystickName", CPad::XInputJoy1); +#else StoreIni("Controller", "JoystickName", gSelectedJoystickName, 128); +#endif #endif StoreIni("Controller", "PadButtonsInited", ControlsManager.ms_padButtonsInited); cfg.write_file("re3.ini"); diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index 8c4fb14c..e5f4c7ba 100644 --- a/src/skel/crossplatform.h +++ b/src/skel/crossplatform.h @@ -71,7 +71,7 @@ void CapturePad(RwInt32 padID); void joysChangeCB(int jid, int event); #endif -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU extern char gSelectedJoystickName[128]; #endif diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 9643c63b..b413a1ce 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -81,7 +81,7 @@ static psGlobalType PsGlobal; size_t _dwMemAvailPhys; RwUInt32 gGameState; -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU char gSelectedJoystickName[128] = ""; #endif @@ -841,7 +841,7 @@ void joysChangeCB(int jid, int event); bool IsThisJoystickBlacklisted(int i) { -#ifndef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifndef DETECT_JOYSTICK_MENU return false; #else if (glfwJoystickIsGamepad(i)) @@ -906,7 +906,7 @@ void _InputInitialiseJoys() if (PSGLOBAL(joy1id) != -1) { int count; glfwGetJoystickButtons(PSGLOBAL(joy1id), &count); -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU strcpy(gSelectedJoystickName, glfwGetJoystickName(PSGLOBAL(joy1id))); #endif ControlsManager.InitDefaultControlConfigJoyPad(count); @@ -2150,7 +2150,7 @@ void joysChangeCB(int jid, int event) if (event == GLFW_CONNECTED && !IsThisJoystickBlacklisted(jid)) { if (PSGLOBAL(joy1id) == -1) { PSGLOBAL(joy1id) = jid; -#ifdef DONT_TRUST_RECOGNIZED_JOYSTICKS +#ifdef DETECT_JOYSTICK_MENU strcpy(gSelectedJoystickName, glfwGetJoystickName(jid)); #endif // This is behind LOAD_INI_SETTINGS, because otherwise the Init call below will destroy/overwrite your bindings. diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 3bda4e9d..c00d6075 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -121,6 +121,10 @@ DWORD _dwOperatingSystemVersion; RwUInt32 gGameState; CJoySticks AllValidWinJoys; +#ifdef DETECT_JOYSTICK_MENU +char gSelectedJoystickName[128] = ""; +#endif + // What is that for anyway? #ifndef IMPROVED_VIDEOMODE static RwBool defaultFullscreenRes = TRUE; From 6662e60b63d3765ad703d23c28a2c17822b58348 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 6 Feb 2021 16:33:17 +0100 Subject: [PATCH 033/314] reorganize shaders; use modulate flag; update librw --- src/extras/custompipes_d3d9.cpp | 31 +++---- src/extras/custompipes_gl.cpp | 34 ++++---- src/extras/postfx.cpp | 12 +-- src/extras/screendroplets.cpp | 6 +- src/extras/shaders/Makefile | 79 ------------------ src/extras/shaders/make_glsl.sh | 9 ++ .../shaders/{make.cmd => make_hlsl.cmd} | 4 +- src/extras/shaders/makeinc_glsl.sh | 6 ++ .../shaders/{makeinc.sh => makeinc_hlsl.sh} | 1 + .../shaders/{ => obj}/colourfilterIII_PS.cso | Bin .../shaders/{ => obj}/colourfilterIII_PS.inc | 0 .../colourfilterIII_frag.inc} | 0 src/extras/shaders/{ => obj}/contrastPS.cso | Bin src/extras/shaders/{ => obj}/contrastPS.inc | 0 .../contrast_frag.inc} | 0 .../shaders/{ => obj}/default_UV2_VS.cso | Bin .../shaders/{ => obj}/default_UV2_VS.inc | 0 .../default_UV2_vert.inc} | 0 .../im2d_UV2_vert.inc} | 0 .../{im2d_gl.inc => obj/im2d_vert.inc} | 0 src/extras/shaders/{ => obj}/neoGloss_PS.cso | Bin src/extras/shaders/{ => obj}/neoGloss_PS.inc | 0 src/extras/shaders/{ => obj}/neoGloss_VS.cso | Bin src/extras/shaders/{ => obj}/neoGloss_VS.inc | 0 .../neoGloss_frag.inc} | 0 .../neoGloss_vert.inc} | 0 .../shaders/{ => obj}/neoRimSkin_VS.cso | Bin .../shaders/{ => obj}/neoRimSkin_VS.inc | 0 .../neoRimSkin_vert.inc} | 0 src/extras/shaders/{ => obj}/neoRim_VS.cso | Bin src/extras/shaders/{ => obj}/neoRim_VS.inc | 0 .../{neoRim_gl.inc => obj/neoRim_vert.inc} | 0 .../shaders/{ => obj}/neoVehicle_PS.cso | Bin .../shaders/{ => obj}/neoVehicle_PS.inc | 0 .../shaders/{ => obj}/neoVehicle_VS.cso | Bin .../shaders/{ => obj}/neoVehicle_VS.inc | 0 .../neoVehicle_frag.inc} | 0 .../neoVehicle_vert.inc} | 0 .../shaders/{ => obj}/neoWorldIII_PS.cso | Bin .../shaders/{ => obj}/neoWorldIII_PS.inc | 0 .../neoWorldIII_frag.inc} | 0 .../shaders/{ => obj}/screenDroplet_PS.cso | Bin .../shaders/{ => obj}/screenDroplet_PS.inc | 0 .../screenDroplet_frag.inc} | 0 .../{simple_fs_gl.inc => obj/simple_frag.inc} | 0 vendor/librw | 2 +- 46 files changed, 64 insertions(+), 120 deletions(-) delete mode 100644 src/extras/shaders/Makefile create mode 100644 src/extras/shaders/make_glsl.sh rename src/extras/shaders/{make.cmd => make_hlsl.cmd} (58%) create mode 100644 src/extras/shaders/makeinc_glsl.sh rename src/extras/shaders/{makeinc.sh => makeinc_hlsl.sh} (93%) rename src/extras/shaders/{ => obj}/colourfilterIII_PS.cso (100%) rename src/extras/shaders/{ => obj}/colourfilterIII_PS.inc (100%) rename src/extras/shaders/{colourfilterIII_fs_gl.inc => obj/colourfilterIII_frag.inc} (100%) rename src/extras/shaders/{ => obj}/contrastPS.cso (100%) rename src/extras/shaders/{ => obj}/contrastPS.inc (100%) rename src/extras/shaders/{contrast_fs_gl.inc => obj/contrast_frag.inc} (100%) rename src/extras/shaders/{ => obj}/default_UV2_VS.cso (100%) rename src/extras/shaders/{ => obj}/default_UV2_VS.inc (100%) rename src/extras/shaders/{default_UV2_gl.inc => obj/default_UV2_vert.inc} (100%) rename src/extras/shaders/{im2d_UV2_gl.inc => obj/im2d_UV2_vert.inc} (100%) rename src/extras/shaders/{im2d_gl.inc => obj/im2d_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoGloss_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoGloss_PS.inc (100%) rename src/extras/shaders/{ => obj}/neoGloss_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoGloss_VS.inc (100%) rename src/extras/shaders/{neoGloss_fs_gl.inc => obj/neoGloss_frag.inc} (100%) rename src/extras/shaders/{neoGloss_vs_gl.inc => obj/neoGloss_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoRimSkin_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoRimSkin_VS.inc (100%) rename src/extras/shaders/{neoRimSkin_gl.inc => obj/neoRimSkin_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoRim_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoRim_VS.inc (100%) rename src/extras/shaders/{neoRim_gl.inc => obj/neoRim_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoVehicle_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoVehicle_PS.inc (100%) rename src/extras/shaders/{ => obj}/neoVehicle_VS.cso (100%) rename src/extras/shaders/{ => obj}/neoVehicle_VS.inc (100%) rename src/extras/shaders/{neoVehicle_fs_gl.inc => obj/neoVehicle_frag.inc} (100%) rename src/extras/shaders/{neoVehicle_vs_gl.inc => obj/neoVehicle_vert.inc} (100%) rename src/extras/shaders/{ => obj}/neoWorldIII_PS.cso (100%) rename src/extras/shaders/{ => obj}/neoWorldIII_PS.inc (100%) rename src/extras/shaders/{neoWorldIII_fs_gl.inc => obj/neoWorldIII_frag.inc} (100%) rename src/extras/shaders/{ => obj}/screenDroplet_PS.cso (100%) rename src/extras/shaders/{ => obj}/screenDroplet_PS.inc (100%) rename src/extras/shaders/{screenDroplet_fs_gl.inc => obj/screenDroplet_frag.inc} (100%) rename src/extras/shaders/{simple_fs_gl.inc => obj/simple_frag.inc} (100%) diff --git a/src/extras/custompipes_d3d9.cpp b/src/extras/custompipes_d3d9.cpp index 4242c630..dad42b33 100644 --- a/src/extras/custompipes_d3d9.cpp +++ b/src/extras/custompipes_d3d9.cpp @@ -89,6 +89,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) } int vsBits; + rw::uint32 flags = atomic->geometry->flags; setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride); setIndices(header->indexBuffer); setVertexDeclaration(header->vertexDeclaration); @@ -120,7 +121,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) reflProps[3] = m->surfaceProps.specular == 0.0f ? 0.0f : VehicleSpecularity; d3ddevice->SetVertexShaderConstantF(VSLOC_reflProps, reflProps, 1); - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(m->texture) d3d::setTexture(0, m->texture); @@ -149,11 +150,11 @@ CreateVehiclePipe(void) fp = ReadTweakValueTable(fp, SpecColor); } -#include "shaders/neoVehicle_VS.inc" +#include "shaders/obj/neoVehicle_VS.inc" neoVehicle_VS = rw::d3d::createVertexShader(neoVehicle_VS_cso); assert(neoVehicle_VS); -#include "shaders/neoVehicle_PS.inc" +#include "shaders/obj/neoVehicle_PS.inc" neoVehicle_PS = rw::d3d::createPixelShader(neoVehicle_PS_cso); assert(neoVehicle_PS); @@ -259,11 +260,11 @@ CreateWorldPipe(void) else ReadTweakValueTable((char*)work_buff, WorldLightmapBlend); -#include "shaders/default_UV2_VS.inc" +#include "shaders/obj/default_UV2_VS.inc" neoWorld_VS = rw::d3d::createVertexShader(default_UV2_VS_cso); assert(neoWorld_VS); -#include "shaders/neoWorldIII_PS.inc" +#include "shaders/obj/neoWorldIII_PS.inc" neoWorldIII_PS = rw::d3d::createPixelShader(neoWorldIII_PS_cso); assert(neoWorldIII_PS); @@ -346,11 +347,11 @@ glossRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) void CreateGlossPipe(void) { -#include "shaders/neoGloss_VS.inc" +#include "shaders/obj/neoGloss_VS.inc" neoGloss_VS = rw::d3d::createVertexShader(neoGloss_VS_cso); assert(neoGloss_VS); -#include "shaders/neoGloss_PS.inc" +#include "shaders/obj/neoGloss_PS.inc" neoGloss_PS = rw::d3d::createPixelShader(neoGloss_PS_cso); assert(neoGloss_PS); @@ -420,6 +421,7 @@ rimRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) } int vsBits; + rw::uint32 flags = atomic->geometry->flags; setStreamSource(0, header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride); setIndices(header->indexBuffer); setVertexDeclaration(header->vertexDeclaration); @@ -437,7 +439,7 @@ rimRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255); - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(m->texture){ d3d::setTexture(0, m->texture); @@ -463,7 +465,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) } int vsBits; - + rw::uint32 flags = atomic->geometry->flags; setStreamSource(0, (IDirect3DVertexBuffer9*)header->vertexStream[0].vertexBuffer, 0, header->vertexStream[0].stride); setIndices((IDirect3DIndexBuffer9*)header->indexBuffer); @@ -484,7 +486,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::d3d9::InstanceDataHeader *header) SetRenderState(VERTEXALPHA, inst->vertexAlpha || m->color.alpha != 255); - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(inst->material->texture){ d3d::setTexture(0, m->texture); @@ -512,11 +514,11 @@ CreateRimLightPipes(void) } -#include "shaders/neoRim_VS.inc" +#include "shaders/obj/neoRim_VS.inc" neoRim_VS = rw::d3d::createVertexShader(neoRim_VS_cso); assert(neoRim_VS); -#include "shaders/neoRimSkin_VS.inc" +#include "shaders/obj/neoRimSkin_VS.inc" neoRimSkin_VS = rw::d3d::createVertexShader(neoRimSkin_VS_cso); assert(neoRimSkin_VS); @@ -610,6 +612,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) assert(building->instHeader->platform == PLATFORM_D3D9); building->fadeAlpha = 255; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + rw::uint32 flags = atomic->geometry->flags; bool setupDone = false; bool defer = false; @@ -639,7 +642,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) setupDone = true; } - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); if(m->texture){ d3d::setTexture(0, m->texture); @@ -702,7 +705,7 @@ RenderBlendPass(int pass) rw::RGBA color = m->color; color.alpha = (color.alpha * building->fadeAlpha)/255; - setMaterial(color, m->surfaceProps); + setMaterial(color, m->surfaceProps); // always modulate here if(m->texture){ d3d::setTexture(0, m->texture); diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index caf9eb27..f1cbfc38 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -87,6 +87,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; + rw::uint32 flags = atomic->geometry->flags; setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); @@ -119,7 +120,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) while(n--){ m = inst->material; - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -159,8 +160,8 @@ CreateVehiclePipe(void) { -#include "shaders/neoVehicle_fs_gl.inc" -#include "shaders/neoVehicle_vs_gl.inc" +#include "shaders/obj/neoVehicle_frag.inc" +#include "shaders/obj/neoVehicle_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoVehicle_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoVehicle_frag_src, nil }; neoVehicleShader = Shader::create(vs, fs); @@ -270,8 +271,8 @@ CreateWorldPipe(void) ReadTweakValueTable((char*)work_buff, WorldLightmapBlend); { -#include "shaders/neoWorldIII_fs_gl.inc" -#include "shaders/default_UV2_gl.inc" +#include "shaders/obj/neoWorldIII_frag.inc" +#include "shaders/obj/default_UV2_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, default_UV2_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoWorldIII_frag_src, nil }; neoWorldShader = Shader::create(vs, fs); @@ -378,8 +379,8 @@ CreateGlossPipe(void) using namespace rw::gl3; { -#include "shaders/neoGloss_fs_gl.inc" -#include "shaders/neoGloss_vs_gl.inc" +#include "shaders/obj/neoGloss_frag.inc" +#include "shaders/obj/neoGloss_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoGloss_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoGloss_frag_src, nil }; neoGlossShader = Shader::create(vs, fs); @@ -448,6 +449,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; + rw::uint32 flags = atomic->geometry->flags; setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); @@ -471,7 +473,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) while(n--){ m = inst->material; - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -498,6 +500,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; + rw::uint32 flags = atomic->geometry->flags; setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); @@ -519,7 +522,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) while(n--){ m = inst->material; - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -550,8 +553,8 @@ CreateRimLightPipes(void) } { -#include "shaders/simple_fs_gl.inc" -#include "shaders/neoRimSkin_gl.inc" +#include "shaders/obj/simple_frag.inc" +#include "shaders/obj/neoRimSkin_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoRimSkin_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimSkinShader = Shader::create(vs, fs); @@ -559,8 +562,8 @@ CreateRimLightPipes(void) } { -#include "shaders/simple_fs_gl.inc" -#include "shaders/neoRim_gl.inc" +#include "shaders/obj/simple_frag.inc" +#include "shaders/obj/neoRim_vert.inc" const char *vs[] = { shaderDecl, header_vert_src, neoRim_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimShader = Shader::create(vs, fs); @@ -664,6 +667,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) assert(building->instHeader->platform == PLATFORM_GL3); building->fadeAlpha = 255; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + rw::uint32 flags = atomic->geometry->flags; WorldLights lights; lights.numAmbients = 1; @@ -703,7 +707,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) setupDone = true; } - setMaterial(m->color, m->surfaceProps); + setMaterial(flags, m->color, m->surfaceProps); setTexture(0, m->texture); @@ -772,7 +776,7 @@ RenderBlendPass(int pass) rw::RGBA color = m->color; color.alpha = (color.alpha * building->fadeAlpha)/255; - setMaterial(color, m->surfaceProps); + setMaterial(color, m->surfaceProps); // always modulate here setTexture(0, m->texture); diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp index 51b91060..b94d245d 100644 --- a/src/extras/postfx.cpp +++ b/src/extras/postfx.cpp @@ -141,16 +141,16 @@ CPostFX::Open(RwCamera *cam) #ifdef RW_D3D9 -#include "shaders/colourfilterIII_PS.inc" +#include "shaders/obj/colourfilterIII_PS.inc" colourfilterIII_PS = rw::d3d::createPixelShader(colourfilterIII_PS_cso); -#include "shaders/contrastPS.inc" +#include "shaders/obj/contrastPS.inc" contrast_PS = rw::d3d::createPixelShader(contrastPS_cso); #endif #ifdef RW_OPENGL using namespace rw::gl3; { -#include "shaders/im2d_gl.inc" -#include "shaders/colourfilterIII_fs_gl.inc" +#include "shaders/obj/im2d_vert.inc" +#include "shaders/obj/colourfilterIII_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, colourfilterIII_frag_src, nil }; colourFilterIII = Shader::create(vs, fs); @@ -158,8 +158,8 @@ CPostFX::Open(RwCamera *cam) } { -#include "shaders/im2d_gl.inc" -#include "shaders/contrast_fs_gl.inc" +#include "shaders/obj/im2d_vert.inc" +#include "shaders/obj/contrast_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, contrast_frag_src, nil }; contrast = Shader::create(vs, fs); diff --git a/src/extras/screendroplets.cpp b/src/extras/screendroplets.cpp index 74c44da0..1412141e 100644 --- a/src/extras/screendroplets.cpp +++ b/src/extras/screendroplets.cpp @@ -112,14 +112,14 @@ ScreenDroplets::InitDraw(void) openim2d_uv2(); #ifdef RW_D3D9 -#include "shaders/screenDroplet_PS.inc" +#include "shaders/obj/screenDroplet_PS.inc" screenDroplet_PS = rw::d3d::createPixelShader(screenDroplet_PS_cso); #endif #ifdef RW_GL3 using namespace rw::gl3; { -#include "shaders/im2d_UV2_gl.inc" -#include "shaders/screenDroplet_fs_gl.inc" +#include "shaders/obj/im2d_UV2_vert.inc" +#include "shaders/obj/screenDroplet_frag.inc" const char *vs[] = { shaderDecl, header_vert_src, im2d_UV2_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, screenDroplet_frag_src, nil }; screenDroplet = Shader::create(vs, fs); diff --git a/src/extras/shaders/Makefile b/src/extras/shaders/Makefile deleted file mode 100644 index 51e009d6..00000000 --- a/src/extras/shaders/Makefile +++ /dev/null @@ -1,79 +0,0 @@ -all: im2d_gl.inc simple_fs_gl.inc default_UV2_gl.inc \ - colourfilterIII_fs_gl.inc contrast_fs_gl.inc \ - neoRim_gl.inc neoRimSkin_gl.inc \ - neoWorldIII_fs_gl.inc neoGloss_vs_gl.inc neoGloss_fs_gl.inc \ - neoVehicle_vs_gl.inc neoVehicle_fs_gl.inc \ - im2d_UV2_gl.inc screenDroplet_fs_gl.inc - -im2d_gl.inc: im2d.vert - (echo 'const char *im2d_vert_src =';\ - sed 's/..*/"&\\n"/' im2d.vert;\ - echo ';') >im2d_gl.inc - -simple_fs_gl.inc: simple.frag - (echo 'const char *simple_frag_src =';\ - sed 's/..*/"&\\n"/' simple.frag;\ - echo ';') >simple_fs_gl.inc - -default_UV2_gl.inc: default_UV2.vert - (echo 'const char *default_UV2_vert_src =';\ - sed 's/..*/"&\\n"/' default_UV2.vert;\ - echo ';') >default_UV2_gl.inc - - - -colourfilterIII_fs_gl.inc: colourfilterIII.frag - (echo 'const char *colourfilterIII_frag_src =';\ - sed 's/..*/"&\\n"/' colourfilterIII.frag;\ - echo ';') >colourfilterIII_fs_gl.inc - -contrast_fs_gl.inc: contrast.frag - (echo 'const char *contrast_frag_src =';\ - sed 's/..*/"&\\n"/' contrast.frag;\ - echo ';') >contrast_fs_gl.inc - - -neoRim_gl.inc: neoRim.vert - (echo 'const char *neoRim_vert_src =';\ - sed 's/..*/"&\\n"/' neoRim.vert;\ - echo ';') >neoRim_gl.inc - -neoRimSkin_gl.inc: neoRimSkin.vert - (echo 'const char *neoRimSkin_vert_src =';\ - sed 's/..*/"&\\n"/' neoRimSkin.vert;\ - echo ';') >neoRimSkin_gl.inc - -neoWorldIII_fs_gl.inc: neoWorldIII.frag - (echo 'const char *neoWorldIII_frag_src =';\ - sed 's/..*/"&\\n"/' neoWorldIII.frag;\ - echo ';') >neoWorldIII_fs_gl.inc - -neoGloss_fs_gl.inc: neoGloss.frag - (echo 'const char *neoGloss_frag_src =';\ - sed 's/..*/"&\\n"/' neoGloss.frag;\ - echo ';') >neoGloss_fs_gl.inc - -neoGloss_vs_gl.inc: neoGloss.vert - (echo 'const char *neoGloss_vert_src =';\ - sed 's/..*/"&\\n"/' neoGloss.vert;\ - echo ';') >neoGloss_vs_gl.inc - -neoVehicle_vs_gl.inc: neoVehicle.vert - (echo 'const char *neoVehicle_vert_src =';\ - sed 's/..*/"&\\n"/' neoVehicle.vert;\ - echo ';') >neoVehicle_vs_gl.inc - -neoVehicle_fs_gl.inc: neoVehicle.frag - (echo 'const char *neoVehicle_frag_src =';\ - sed 's/..*/"&\\n"/' neoVehicle.frag;\ - echo ';') >neoVehicle_fs_gl.inc - -im2d_UV2_gl.inc: im2d_UV2.vert - (echo 'const char *im2d_UV2_vert_src =';\ - sed 's/..*/"&\\n"/' im2d_UV2.vert;\ - echo ';') >im2d_UV2_gl.inc - -screenDroplet_fs_gl.inc: screenDroplet.frag - (echo 'const char *screenDroplet_frag_src =';\ - sed 's/..*/"&\\n"/' screenDroplet.frag;\ - echo ';') >screenDroplet_fs_gl.inc diff --git a/src/extras/shaders/make_glsl.sh b/src/extras/shaders/make_glsl.sh new file mode 100644 index 00000000..0af98961 --- /dev/null +++ b/src/extras/shaders/make_glsl.sh @@ -0,0 +1,9 @@ +#!sh +for i in *.vert; do + echo $i + ./makeinc_glsl.sh $i +done +for i in *.frag; do + echo $i + ./makeinc_glsl.sh $i +done diff --git a/src/extras/shaders/make.cmd b/src/extras/shaders/make_hlsl.cmd similarity index 58% rename from src/extras/shaders/make.cmd rename to src/extras/shaders/make_hlsl.cmd index 8404ac6c..dee95283 100644 --- a/src/extras/shaders/make.cmd +++ b/src/extras/shaders/make_hlsl.cmd @@ -1,3 +1,3 @@ @echo off -for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo %%~nf.cso %%f -for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo %%~nf.cso %%f +for %%f in (*PS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T ps_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f +for %%f in (*VS.hlsl) do "%DXSDK_DIR%\Utilities\bin\x86\fxc.exe" /T vs_2_0 /nologo /E main /Fo obj\%%~nf.cso %%f diff --git a/src/extras/shaders/makeinc_glsl.sh b/src/extras/shaders/makeinc_glsl.sh new file mode 100644 index 00000000..2bc6a387 --- /dev/null +++ b/src/extras/shaders/makeinc_glsl.sh @@ -0,0 +1,6 @@ +#!sh +ext=${1##*.} +name=${1%.*} +(echo "const char *${name}_${ext}_src =";\ +sed 's/..*/"&\\n"/' $1;\ +echo ';') > obj/${name}_${ext}.inc diff --git a/src/extras/shaders/makeinc.sh b/src/extras/shaders/makeinc_hlsl.sh similarity index 93% rename from src/extras/shaders/makeinc.sh rename to src/extras/shaders/makeinc_hlsl.sh index a649af33..a5b12867 100644 --- a/src/extras/shaders/makeinc.sh +++ b/src/extras/shaders/makeinc_hlsl.sh @@ -1,4 +1,5 @@ #!sh +cd obj for i in *cso; do (echo -n 'static ' xxd -i $i | grep -v '_len = ') > ${i%cso}inc diff --git a/src/extras/shaders/colourfilterIII_PS.cso b/src/extras/shaders/obj/colourfilterIII_PS.cso similarity index 100% rename from src/extras/shaders/colourfilterIII_PS.cso rename to src/extras/shaders/obj/colourfilterIII_PS.cso diff --git a/src/extras/shaders/colourfilterIII_PS.inc b/src/extras/shaders/obj/colourfilterIII_PS.inc similarity index 100% rename from src/extras/shaders/colourfilterIII_PS.inc rename to src/extras/shaders/obj/colourfilterIII_PS.inc diff --git a/src/extras/shaders/colourfilterIII_fs_gl.inc b/src/extras/shaders/obj/colourfilterIII_frag.inc similarity index 100% rename from src/extras/shaders/colourfilterIII_fs_gl.inc rename to src/extras/shaders/obj/colourfilterIII_frag.inc diff --git a/src/extras/shaders/contrastPS.cso b/src/extras/shaders/obj/contrastPS.cso similarity index 100% rename from src/extras/shaders/contrastPS.cso rename to src/extras/shaders/obj/contrastPS.cso diff --git a/src/extras/shaders/contrastPS.inc b/src/extras/shaders/obj/contrastPS.inc similarity index 100% rename from src/extras/shaders/contrastPS.inc rename to src/extras/shaders/obj/contrastPS.inc diff --git a/src/extras/shaders/contrast_fs_gl.inc b/src/extras/shaders/obj/contrast_frag.inc similarity index 100% rename from src/extras/shaders/contrast_fs_gl.inc rename to src/extras/shaders/obj/contrast_frag.inc diff --git a/src/extras/shaders/default_UV2_VS.cso b/src/extras/shaders/obj/default_UV2_VS.cso similarity index 100% rename from src/extras/shaders/default_UV2_VS.cso rename to src/extras/shaders/obj/default_UV2_VS.cso diff --git a/src/extras/shaders/default_UV2_VS.inc b/src/extras/shaders/obj/default_UV2_VS.inc similarity index 100% rename from src/extras/shaders/default_UV2_VS.inc rename to src/extras/shaders/obj/default_UV2_VS.inc diff --git a/src/extras/shaders/default_UV2_gl.inc b/src/extras/shaders/obj/default_UV2_vert.inc similarity index 100% rename from src/extras/shaders/default_UV2_gl.inc rename to src/extras/shaders/obj/default_UV2_vert.inc diff --git a/src/extras/shaders/im2d_UV2_gl.inc b/src/extras/shaders/obj/im2d_UV2_vert.inc similarity index 100% rename from src/extras/shaders/im2d_UV2_gl.inc rename to src/extras/shaders/obj/im2d_UV2_vert.inc diff --git a/src/extras/shaders/im2d_gl.inc b/src/extras/shaders/obj/im2d_vert.inc similarity index 100% rename from src/extras/shaders/im2d_gl.inc rename to src/extras/shaders/obj/im2d_vert.inc diff --git a/src/extras/shaders/neoGloss_PS.cso b/src/extras/shaders/obj/neoGloss_PS.cso similarity index 100% rename from src/extras/shaders/neoGloss_PS.cso rename to src/extras/shaders/obj/neoGloss_PS.cso diff --git a/src/extras/shaders/neoGloss_PS.inc b/src/extras/shaders/obj/neoGloss_PS.inc similarity index 100% rename from src/extras/shaders/neoGloss_PS.inc rename to src/extras/shaders/obj/neoGloss_PS.inc diff --git a/src/extras/shaders/neoGloss_VS.cso b/src/extras/shaders/obj/neoGloss_VS.cso similarity index 100% rename from src/extras/shaders/neoGloss_VS.cso rename to src/extras/shaders/obj/neoGloss_VS.cso diff --git a/src/extras/shaders/neoGloss_VS.inc b/src/extras/shaders/obj/neoGloss_VS.inc similarity index 100% rename from src/extras/shaders/neoGloss_VS.inc rename to src/extras/shaders/obj/neoGloss_VS.inc diff --git a/src/extras/shaders/neoGloss_fs_gl.inc b/src/extras/shaders/obj/neoGloss_frag.inc similarity index 100% rename from src/extras/shaders/neoGloss_fs_gl.inc rename to src/extras/shaders/obj/neoGloss_frag.inc diff --git a/src/extras/shaders/neoGloss_vs_gl.inc b/src/extras/shaders/obj/neoGloss_vert.inc similarity index 100% rename from src/extras/shaders/neoGloss_vs_gl.inc rename to src/extras/shaders/obj/neoGloss_vert.inc diff --git a/src/extras/shaders/neoRimSkin_VS.cso b/src/extras/shaders/obj/neoRimSkin_VS.cso similarity index 100% rename from src/extras/shaders/neoRimSkin_VS.cso rename to src/extras/shaders/obj/neoRimSkin_VS.cso diff --git a/src/extras/shaders/neoRimSkin_VS.inc b/src/extras/shaders/obj/neoRimSkin_VS.inc similarity index 100% rename from src/extras/shaders/neoRimSkin_VS.inc rename to src/extras/shaders/obj/neoRimSkin_VS.inc diff --git a/src/extras/shaders/neoRimSkin_gl.inc b/src/extras/shaders/obj/neoRimSkin_vert.inc similarity index 100% rename from src/extras/shaders/neoRimSkin_gl.inc rename to src/extras/shaders/obj/neoRimSkin_vert.inc diff --git a/src/extras/shaders/neoRim_VS.cso b/src/extras/shaders/obj/neoRim_VS.cso similarity index 100% rename from src/extras/shaders/neoRim_VS.cso rename to src/extras/shaders/obj/neoRim_VS.cso diff --git a/src/extras/shaders/neoRim_VS.inc b/src/extras/shaders/obj/neoRim_VS.inc similarity index 100% rename from src/extras/shaders/neoRim_VS.inc rename to src/extras/shaders/obj/neoRim_VS.inc diff --git a/src/extras/shaders/neoRim_gl.inc b/src/extras/shaders/obj/neoRim_vert.inc similarity index 100% rename from src/extras/shaders/neoRim_gl.inc rename to src/extras/shaders/obj/neoRim_vert.inc diff --git a/src/extras/shaders/neoVehicle_PS.cso b/src/extras/shaders/obj/neoVehicle_PS.cso similarity index 100% rename from src/extras/shaders/neoVehicle_PS.cso rename to src/extras/shaders/obj/neoVehicle_PS.cso diff --git a/src/extras/shaders/neoVehicle_PS.inc b/src/extras/shaders/obj/neoVehicle_PS.inc similarity index 100% rename from src/extras/shaders/neoVehicle_PS.inc rename to src/extras/shaders/obj/neoVehicle_PS.inc diff --git a/src/extras/shaders/neoVehicle_VS.cso b/src/extras/shaders/obj/neoVehicle_VS.cso similarity index 100% rename from src/extras/shaders/neoVehicle_VS.cso rename to src/extras/shaders/obj/neoVehicle_VS.cso diff --git a/src/extras/shaders/neoVehicle_VS.inc b/src/extras/shaders/obj/neoVehicle_VS.inc similarity index 100% rename from src/extras/shaders/neoVehicle_VS.inc rename to src/extras/shaders/obj/neoVehicle_VS.inc diff --git a/src/extras/shaders/neoVehicle_fs_gl.inc b/src/extras/shaders/obj/neoVehicle_frag.inc similarity index 100% rename from src/extras/shaders/neoVehicle_fs_gl.inc rename to src/extras/shaders/obj/neoVehicle_frag.inc diff --git a/src/extras/shaders/neoVehicle_vs_gl.inc b/src/extras/shaders/obj/neoVehicle_vert.inc similarity index 100% rename from src/extras/shaders/neoVehicle_vs_gl.inc rename to src/extras/shaders/obj/neoVehicle_vert.inc diff --git a/src/extras/shaders/neoWorldIII_PS.cso b/src/extras/shaders/obj/neoWorldIII_PS.cso similarity index 100% rename from src/extras/shaders/neoWorldIII_PS.cso rename to src/extras/shaders/obj/neoWorldIII_PS.cso diff --git a/src/extras/shaders/neoWorldIII_PS.inc b/src/extras/shaders/obj/neoWorldIII_PS.inc similarity index 100% rename from src/extras/shaders/neoWorldIII_PS.inc rename to src/extras/shaders/obj/neoWorldIII_PS.inc diff --git a/src/extras/shaders/neoWorldIII_fs_gl.inc b/src/extras/shaders/obj/neoWorldIII_frag.inc similarity index 100% rename from src/extras/shaders/neoWorldIII_fs_gl.inc rename to src/extras/shaders/obj/neoWorldIII_frag.inc diff --git a/src/extras/shaders/screenDroplet_PS.cso b/src/extras/shaders/obj/screenDroplet_PS.cso similarity index 100% rename from src/extras/shaders/screenDroplet_PS.cso rename to src/extras/shaders/obj/screenDroplet_PS.cso diff --git a/src/extras/shaders/screenDroplet_PS.inc b/src/extras/shaders/obj/screenDroplet_PS.inc similarity index 100% rename from src/extras/shaders/screenDroplet_PS.inc rename to src/extras/shaders/obj/screenDroplet_PS.inc diff --git a/src/extras/shaders/screenDroplet_fs_gl.inc b/src/extras/shaders/obj/screenDroplet_frag.inc similarity index 100% rename from src/extras/shaders/screenDroplet_fs_gl.inc rename to src/extras/shaders/obj/screenDroplet_frag.inc diff --git a/src/extras/shaders/simple_fs_gl.inc b/src/extras/shaders/obj/simple_frag.inc similarity index 100% rename from src/extras/shaders/simple_fs_gl.inc rename to src/extras/shaders/obj/simple_frag.inc diff --git a/vendor/librw b/vendor/librw index 60a5ace1..5c953008 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 60a5ace16309ccd3d174a3ec14a1062540934066 +Subproject commit 5c95300890559c85a2764bc200361f904cd4f9f4 From d224f8b7eea6142223362c13551acad623ddb4c7 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 7 Feb 2021 20:35:43 +0300 Subject: [PATCH 034/314] Don't show menu map and new languages if gamefiles isn't copied --- src/core/Frontend.cpp | 6 ++++ src/core/Frontend.h | 4 +-- src/core/MenuScreens.cpp | 11 ------- src/core/MenuScreensCustom.cpp | 42 ++----------------------- src/core/config.h | 2 +- src/core/re3.cpp | 57 +++++++++++++++++++++++++++++++++- 6 files changed, 67 insertions(+), 55 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 5e9f6d0d..44e143c8 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -3655,7 +3655,13 @@ CMenuManager::LoadAllTextures() m_aMenuSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); } #ifdef MENU_MAP + static bool menuOptionAdded = false; for (int i = 0; i < ARRAY_SIZE(MapFilenames); i++) { + if (!menuOptionAdded && RwTextureRead(MapFilenames[i][0], MapFilenames[i][1])) { + FrontendOptionSetCursor(MENUPAGE_PAUSE_MENU, 2, false); + FrontendOptionAddBuiltinAction("FEG_MAP", MENUACTION_CHANGEMENU, MENUPAGE_MAP, SAVESLOT_NONE); + menuOptionAdded = true; + } m_aMapSprites[i].SetTexture(MapFilenames[i][0], MapFilenames[i][1]); m_aMapSprites[i].SetAddressing(rwTEXTUREADDRESSBORDER); } diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 538ae78b..5c3523ab 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -235,11 +235,11 @@ enum eMenuScreen MENUPAGE_KEYBOARD_CONTROLS = 55, MENUPAGE_MOUSE_CONTROLS = 56, MENUPAGE_MISSION_RETRY = 57, +#ifdef CUSTOM_FRONTEND_OPTIONS + #ifdef MENU_MAP MENUPAGE_MAP = 58, #endif -#ifdef CUSTOM_FRONTEND_OPTIONS - #ifdef GRAPHICS_MENU_OPTIONS MENUPAGE_GRAPHICS_SETTINGS, #endif diff --git a/src/core/MenuScreens.cpp b/src/core/MenuScreens.cpp index 7c90ea12..3bd9adf4 100644 --- a/src/core/MenuScreens.cpp +++ b/src/core/MenuScreens.cpp @@ -394,9 +394,6 @@ CMenuScreen aScreens[MENUPAGES] = { { "FET_PAU", 1, MENUPAGE_DISABLED, MENUPAGE_DISABLED, 0, 0, MENUACTION_RESUME, "FEM_RES", SAVESLOT_NONE, MENUPAGE_NONE, MENUACTION_CHANGEMENU, "FEN_STA", SAVESLOT_NONE, MENUPAGE_NEW_GAME, -#ifdef MENU_MAP - MENUACTION_CHANGEMENU, "FEG_MAP", SAVESLOT_NONE, MENUPAGE_MAP, -#endif MENUACTION_CHANGEMENU, "FEP_STA", SAVESLOT_NONE, MENUPAGE_STATS, MENUACTION_CHANGEMENU, "FEP_BRI", SAVESLOT_NONE, MENUPAGE_BRIEFS, MENUACTION_CHANGEMENU, "FET_OPT", SAVESLOT_NONE, MENUPAGE_OPTIONS, @@ -441,14 +438,6 @@ CMenuScreen aScreens[MENUPAGES] = { }, #endif -#ifdef MENU_MAP - // MENUPAGE_MAP - { "FEG_MAP", 1, MENUPAGE_NONE, MENUPAGE_NONE, 2, 2, - MENUACTION_UNK110, "", SAVESLOT_NONE, MENUPAGE_NONE, // to prevent cross/enter to go back - MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, - }, -#endif - // MENUPAGE_UNK { "", 0, MENUPAGE_NONE, MENUPAGE_NONE, 0, 0, diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 98defe9b..ed5b149c 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -195,38 +195,6 @@ void IslandLoadingAfterChange(int8 before, int8 after) { } #endif -#ifdef MORE_LANGUAGES -void LangPolSelect(int8 action) -{ - if (action == FEOPTION_ACTION_SELECT) { - FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_POLISH; - FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true; - FrontEndMenuManager.InitialiseChangedLanguageSettings(); - FrontEndMenuManager.SaveSettings(); - } -} - -void LangRusSelect(int8 action) -{ - if (action == FEOPTION_ACTION_SELECT) { - FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_RUSSIAN; - FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true; - FrontEndMenuManager.InitialiseChangedLanguageSettings(); - FrontEndMenuManager.SaveSettings(); - } -} - -void LangJapSelect(int8 action) -{ - if (action == FEOPTION_ACTION_SELECT) { - FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_JAPANESE; - FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true; - FrontEndMenuManager.InitialiseChangedLanguageSettings(); - FrontEndMenuManager.SaveSettings(); - } -} -#endif - #ifndef MULTISAMPLING void GraphicsGoBack() { } @@ -497,11 +465,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { MENUACTION_LANG_GER, "FEL_GER", { nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS }, MENUACTION_LANG_ITA, "FEL_ITA", { nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS }, MENUACTION_LANG_SPA, "FEL_SPA", { nil, SAVESLOT_NONE, MENUPAGE_LANGUAGE_SETTINGS }, -#ifdef MORE_LANGUAGES - MENUACTION_CFO_DYNAMIC, "FEL_POL", { new CCFODynamic(nil, nil, nil, nil, LangPolSelect) }, - MENUACTION_CFO_DYNAMIC, "FEL_RUS", { new CCFODynamic(nil, nil, nil, nil, LangRusSelect) }, - MENUACTION_CFO_DYNAMIC, "FEL_JAP", { new CCFODynamic(nil, nil, nil, nil, LangJapSelect) }, -#endif + // CustomFrontendOptionsPopulate will add languages here, if files are found MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, }, @@ -836,9 +800,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_PAU", MENUPAGE_DISABLED, MENUPAGE_DISABLED, nil, nil, MENUACTION_RESUME, "FEM_RES", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, MENUACTION_CHANGEMENU, "FEN_STA", { nil, SAVESLOT_NONE, MENUPAGE_NEW_GAME }, -#ifdef MENU_MAP - MENUACTION_CHANGEMENU, "FEG_MAP", { nil, SAVESLOT_NONE, MENUPAGE_MAP }, -#endif + // CMenuManager::LoadAllTextures will add map here, if MENU_MAP enabled and map textures are found MENUACTION_CHANGEMENU, "FEP_STA", { nil, SAVESLOT_NONE, MENUPAGE_STATS }, MENUACTION_CHANGEMENU, "FEP_BRI", { nil, SAVESLOT_NONE, MENUPAGE_BRIEFS }, MENUACTION_CHANGEMENU, "FET_OPT", { nil, SAVESLOT_NONE, MENUPAGE_OPTIONS }, diff --git a/src/core/config.h b/src/core/config.h index 1810711d..73c29f15 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -312,7 +312,6 @@ enum Config { # define PS2_MENU //# define PS2_MENU_USEALLPAGEICONS #else -# define MENU_MAP // VC-like menu map. Make sure you have new menu.txd # ifdef XINPUT # define GAMEPAD_MENU // Add gamepad menu @@ -326,6 +325,7 @@ enum Config { # define CUSTOM_FRONTEND_OPTIONS # ifdef CUSTOM_FRONTEND_OPTIONS +# define MENU_MAP // VC-like menu map. Won't appear if you don't have our menu.txd # define GRAPHICS_MENU_OPTIONS // otherwise Display settings will be scrollable # define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU # define CUTSCENE_BORDERS_SWITCH diff --git a/src/core/re3.cpp b/src/core/re3.cpp index e631f615..720aeb46 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -85,16 +85,49 @@ mysrand(unsigned int seed) #ifdef CUSTOM_FRONTEND_OPTIONS #include "frontendoption.h" +#ifdef MORE_LANGUAGES +void LangPolSelect(int8 action) +{ + if (action == FEOPTION_ACTION_SELECT) { + FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_POLISH; + FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true; + FrontEndMenuManager.InitialiseChangedLanguageSettings(); + FrontEndMenuManager.SaveSettings(); + } +} + +void LangRusSelect(int8 action) +{ + if (action == FEOPTION_ACTION_SELECT) { + FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_RUSSIAN; + FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true; + FrontEndMenuManager.InitialiseChangedLanguageSettings(); + FrontEndMenuManager.SaveSettings(); + } +} + +void LangJapSelect(int8 action) +{ + if (action == FEOPTION_ACTION_SELECT) { + FrontEndMenuManager.m_PrefsLanguage = CMenuManager::LANGUAGE_JAPANESE; + FrontEndMenuManager.m_bFrontEnd_ReloadObrTxtGxt = true; + FrontEndMenuManager.InitialiseChangedLanguageSettings(); + FrontEndMenuManager.SaveSettings(); + } +} +#endif + void CustomFrontendOptionsPopulate(void) { // Moved to an array in MenuScreensCustom.cpp, but APIs are still available. see frontendoption.h // These work only if we have neo folder, so they're dynamically added + int fd; #ifdef EXTENDED_PIPELINES const char *vehPipelineNames[] = { "FED_MFX", "FED_NEO" }; const char *off_on[] = { "FEM_OFF", "FEM_ON" }; - int fd = CFileMgr::OpenFile("neo/neo.txd","r"); + fd = CFileMgr::OpenFile("neo/neo.txd","r"); if (fd) { #ifdef GRAPHICS_MENU_OPTIONS FrontendOptionSetCursor(MENUPAGE_GRAPHICS_SETTINGS, -3, false); @@ -113,6 +146,28 @@ CustomFrontendOptionsPopulate(void) } #endif + // Add outsourced language translations, if files are found +#ifdef MORE_LANGUAGES + FrontendOptionSetCursor(MENUPAGE_LANGUAGE_SETTINGS, 5, false); + fd = CFileMgr::OpenFile("text/polish.gxt","r"); + if (fd) { + FrontendOptionAddDynamic("FEL_POL", nil, nil, LangPolSelect, nil, nil); + CFileMgr::CloseFile(fd); + } + + fd = CFileMgr::OpenFile("text/russian.gxt","r"); + if (fd) { + FrontendOptionAddDynamic("FEL_RUS", nil, nil, LangRusSelect, nil, nil); + CFileMgr::CloseFile(fd); + } + + fd = CFileMgr::OpenFile("text/japanese.gxt","r"); + if (fd) { + FrontendOptionAddDynamic("FEL_JAP", nil, nil, LangJapSelect, nil, nil); + CFileMgr::CloseFile(fd); + } +#endif + } #endif From d460c3863e47728057e18ba21c04bbdd1c7a9ca6 Mon Sep 17 00:00:00 2001 From: erorcun Date: Mon, 8 Feb 2021 18:21:00 +0300 Subject: [PATCH 035/314] Also check font textures for new languages --- src/core/re3.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 720aeb46..3584e226 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -120,9 +120,9 @@ void LangJapSelect(int8 action) void CustomFrontendOptionsPopulate(void) { - // Moved to an array in MenuScreensCustom.cpp, but APIs are still available. see frontendoption.h + // Most of custom options are done statically in MenuScreensCustom.cpp, we add them here only if they're dependent to extra files - // These work only if we have neo folder, so they're dynamically added + // These work only if we have neo folder int fd; #ifdef EXTENDED_PIPELINES const char *vehPipelineNames[] = { "FED_MFX", "FED_NEO" }; @@ -148,22 +148,29 @@ CustomFrontendOptionsPopulate(void) // Add outsourced language translations, if files are found #ifdef MORE_LANGUAGES + int fd2; FrontendOptionSetCursor(MENUPAGE_LANGUAGE_SETTINGS, 5, false); - fd = CFileMgr::OpenFile("text/polish.gxt","r"); - if (fd) { - FrontendOptionAddDynamic("FEL_POL", nil, nil, LangPolSelect, nil, nil); + if (fd = CFileMgr::OpenFile("text/polish.gxt","r")) { + if (fd2 = CFileMgr::OpenFile("models/fonts_p.txd","r")) { + FrontendOptionAddDynamic("FEL_POL", nil, nil, LangPolSelect, nil, nil); + CFileMgr::CloseFile(fd2); + } CFileMgr::CloseFile(fd); } - fd = CFileMgr::OpenFile("text/russian.gxt","r"); - if (fd) { - FrontendOptionAddDynamic("FEL_RUS", nil, nil, LangRusSelect, nil, nil); + if (fd = CFileMgr::OpenFile("text/russian.gxt","r")) { + if (fd2 = CFileMgr::OpenFile("models/fonts_r.txd","r")) { + FrontendOptionAddDynamic("FEL_RUS", nil, nil, LangRusSelect, nil, nil); + CFileMgr::CloseFile(fd2); + } CFileMgr::CloseFile(fd); } - fd = CFileMgr::OpenFile("text/japanese.gxt","r"); - if (fd) { - FrontendOptionAddDynamic("FEL_JAP", nil, nil, LangJapSelect, nil, nil); + if (fd = CFileMgr::OpenFile("text/japanese.gxt","r")) { + if (fd2 = CFileMgr::OpenFile("models/fonts_j.txd","r")) { + FrontendOptionAddDynamic("FEL_JAP", nil, nil, LangJapSelect, nil, nil); + CFileMgr::CloseFile(fd2); + } CFileMgr::CloseFile(fd); } #endif From 62f28cc4ace933dd95cf9ed50696898f3fd140ab Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 9 Feb 2021 14:50:21 +0200 Subject: [PATCH 036/314] Use VEHICLE_FIREWEAPON in GXTs --- gamefiles/TEXT/american.gxt | Bin 220474 -> 220602 bytes gamefiles/TEXT/french.gxt | Bin 244628 -> 244756 bytes gamefiles/TEXT/german.gxt | Bin 240566 -> 240694 bytes gamefiles/TEXT/italian.gxt | Bin 240052 -> 240180 bytes gamefiles/TEXT/polish.gxt | Bin 241148 -> 241276 bytes gamefiles/TEXT/russian.gxt | Bin 220670 -> 220788 bytes gamefiles/TEXT/spanish.gxt | Bin 235018 -> 235146 bytes utils/gxt/american.txt | 64 ++++++++++++++++++------------------ utils/gxt/french.txt | 64 ++++++++++++++++++------------------ utils/gxt/german.txt | 64 ++++++++++++++++++------------------ utils/gxt/italian.txt | 64 ++++++++++++++++++------------------ utils/gxt/polish.txt | 64 ++++++++++++++++++------------------ utils/gxt/russian.txt | 64 ++++++++++++++++++------------------ utils/gxt/spanish.txt | 64 ++++++++++++++++++------------------ 14 files changed, 224 insertions(+), 224 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index 270d5b5b33c1ed6d7e4dfe18292cfdcfe5e4c015..c45d3779748cf5a4520b1c1bbe1b7227da2cee15 100644 GIT binary patch delta 23666 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

?fnWcQ#NYQKy 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

)G=M|eIKyT$ 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 Mop^WukS7b}Wega7~l literal 0 HcmV?d00001 diff --git a/gamefiles/models/ps3btns.txd b/gamefiles/models/ps3btns.txd index 63d8565d95c06cf0c272300f48fd0638dd137b3b..ed216263987ad6ba36e0a50009e37054be667676 100644 GIT binary patch literal 528424 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 z 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�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⁢_sOP>E>HuxXB_y>I7y!Zz%{(-M= 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 G-~T^1PJ7+} diff --git a/gamefiles/models/x360btns.txd b/gamefiles/models/x360btns.txd index 27837c2fd71f7f86ab653b5b42358598b3285178..95a68c8b1c1e51be1ce2da301f4dc3f80bfcd27a 100644 GIT binary patch literal 528424 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�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 Date: Thu, 11 Feb 2021 21:50:14 +0100 Subject: [PATCH 042/314] better controller menu txds --- gamefiles/models/frontend_ds3.txd | Bin 394024 -> 590632 bytes gamefiles/models/frontend_ds4.txd | Bin 394024 -> 590632 bytes gamefiles/models/frontend_x360.txd | Bin 394024 -> 590632 bytes gamefiles/models/frontend_xone.txd | Bin 394024 -> 590632 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd index 9497aa8c4026138418cf6730c90aff72ad1e18a8..1e5da6e1438f966125b32a94c41e1cfeb7295f06 100644 GIT binary patch literal 590632 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 literal 394024 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


v!y4}{jgD7kX}E~Y=ruZQ^Zr}~QW+1M?S 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 Dfc&2c diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd index 08988f868321383396ddd7afee82b8f9027b6ec5..e3cd2bffde10eded9a1b56e17cc0fbdff9378d0a 100644 GIT binary patch literal 590632 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 literal 394024 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 BQx*UK diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd index 3d92cb43c4731a6763dc88f06e2de894d419ed5c..9ba773f29d4945aea2602dd61c90885b3afd9fef 100644 GIT binary patch literal 590632 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 literal 394024 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 SKycVyKKM~l!*G?!-~R`FJ|7kU diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd index 58fcbe2db82a244dca5ac076516598db726b0d99..848580e3f1a5d18afe78cd65d64e074870f63732 100644 GIT binary patch literal 590632 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
l97A3o+_yKFgHy`P!98W>;N&}* zFq6duWt(BsY91*w14q7M<;=jef%H(+ob>NdW(E#m=}S3dI`;EcKZr)7a#3$EH-i>i zCFbUuP1v}7=s+8QIap_kCTi-zWyi?PF4bWM9w{>ev!6jGv9rZDTwm~vH(X!o)BTIf zJ{Y`!jb{!y_@ai){Wv&*zjK0GKYN6L3t0Q1&S3V2*LU%NBl@6-VZI_DTa11=LH!G9 z$WxdF!hj9vgTPh1*(EnHHka|;mP|e?YcN$Sr_ib5*Mo5kj~@mw9jiHe(ZCV>x@9_6 zjw@3>k_o3Obh6yD@-XE^E00h#$)?jj3@uxF?Phh;5aPHRyxKv?0+4cHS26yxSkBB zz;i>DIp3f2Rip)ZI)FEpY_v-F$c5bh4Q2G-L(qMf3$YoTA1z~U@VPG*?@$a0c)OPC z5;=q+q+Cp;k{Cm7VatXes6)xf)nUkSv48^teB|OFbuchOo;;=uzc2qbp8GR5kh5F+ z7#K>Zx(`rKFtQ{wc-t|GaS@!&U^%e)EOaV7u|OrZY(Av9pJj{^=KI2-_2hzCN+hwW z!B_H9_{%f0{55bjj=$f737+RrAjka$wgfz5&hQZ!QH|q$jHJAvJi8FW=9QJtF5op> zmMe7l*BeGQA%PB5KzK1^IL((SWx{mITlqILWH=tvEn~99aWKhvI)5&f$6w~bHz|Mh z^CN;W$8lS?UB>;fW4sfK!;^BYBa`aHNQIKCM7m6$S;DH&a!i`P<~S}z&k4Ec^iiRg z?oyplOgetgaa@*K#&gR!4C&`0MNQwdTb05w4CapGvSp8Bd?~^)^8Ex3$8rwM4ilZ{ z&@Y48z^-qxayF{rziS!M%K>FJo=d-5vp3jX-P0TFuI4JUhl+l)&P3XVSWo}ZGRMW! zn7vd|_?9TTi@N8?Rr6udaU)>_9$oI5g%|X?f4X8suot6#Mdu-x*BY*IXc_-y%k1Me zDzjt0smzMMex21}pEUBUE~-SZzgc&7HQ+|s9?3Ce= zG7}!V$;zo!RAvDkQfB#d{ifBSK?A3u91suZP7%k5Xq{t3v`_WTvxie&w1H{q7G+v` zTbY(7)gZceoig3K6Tp!qq&yRRO1T7nq+G_FOF|#E0oY4!Rjz_x zSMC6>nPhd)-et;K8p;B|s`fDDb}qEmF${WSipI{1Ui@vNZwBbc%JlBM&6J~!)4lzE z$12gi>y_!=$y=ifmw#@kZ z1>5We%WttV%Wsb|%WpWA#FbnvUc~}+BKDTRNsd7s6A`wMr@HJyWg~MVe8XDHHI%`G zXULr??D@#hZzF60Eg!$Tm=fTN9+@#L%K_--dBG8NvgeQ#U+W(8#o@tZ_F^Tx1BZID z4r^uX7MP{)(1&21lT3o4mP4|UtS?d2qtaOp$vuppm1^7^(k)% z0s7T^o`0uwCv6Ag0`Ie9n!rD(#I9=8WC7!ou*lWrZ$e%yo3+_u46M~MU4~}Q^ zHK1eY^{TTo{98kEv%Aj=UkjcL=_8%^+e>Zu!<^SVVpA|>PDBK#e<0!DM$ zfv@Ux!aw*5y$tGSIoX9G!~PfLrSfc9syaB}m(8lvk<7{DHHfEV_v4mfegh87hTMx! z2`*9zPAHD7>U(aO}?Jkta=5iP42uJARA{qXm!*bHoiU_ylX2YEJ* zJnmt#GYbPY9E2xffAXafL0dZ{Tm<5GreK&gQm$G?{Xz*Sv*_Suh`ciQcCI>x z9g$g9haJRaWwZ?$KHJLKcP~`VV>FW;CI@sVmSETh_=8nez+yBW2he$Q~2GjtEB_!|HpEp*3%w4b1X8r_5Zg(ukO| zM z!AO=H57>yu$})KCc?3#zf8(#89`Sil2PE^2)~7%{vQ(aZZPuPX+duHy-S5-7yFWAk zeXj1{=>Ivpul-<7-7D|@U+(?ZlDf4|y*6lV9by{Pi~qiK_wBkV+uyF6{N06pzxCWp zPhx!|uT7uc_sw4z@xK)3OCJo^J@wk`MSZ_N; Date: Fri, 12 Feb 2021 05:37:30 +0200 Subject: [PATCH 046/314] Fix RW33 --- src/core/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index 58e77db3..1bcdff19 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -356,7 +356,7 @@ RwGrabScreen(RwCamera *camera, RwChar *filename) strcpy(temp, CFileMgr::GetRootDirName()); strcat(temp, filename); -#ifdef THIS_IS_STUPID +#ifndef LIBRW if (RtBMPImageWrite(pImage, &temp[0]) == nil) #else if (RtPNGImageWrite(pImage, &temp[0]) == nil) From e7a4a3516f3d0fa397dad144a0c6e8051f46f5dc Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 12 Feb 2021 07:52:21 +0200 Subject: [PATCH 047/314] Add english strings to translations as stubs, also translation notice --- gamefiles/TEXT/american.gxt | Bin 220602 -> 220570 bytes gamefiles/TEXT/french.gxt | Bin 244922 -> 246544 bytes gamefiles/TEXT/german.gxt | Bin 240860 -> 242498 bytes gamefiles/TEXT/italian.gxt | Bin 240354 -> 241978 bytes gamefiles/TEXT/polish.gxt | Bin 241276 -> 241610 bytes gamefiles/TEXT/russian.gxt | Bin 220788 -> 222404 bytes gamefiles/TEXT/spanish.gxt | Bin 235588 -> 235542 bytes src/core/MenuScreensCustom.cpp | 4 +- utils/gxt/american.txt | 10 +- utils/gxt/french.txt | 143 +++++++++++++++++++++++- utils/gxt/german.txt | 141 +++++++++++++++++++++++- utils/gxt/italian.txt | 141 +++++++++++++++++++++++- utils/gxt/polish.txt | 102 ++++++++++++------ utils/gxt/russian.txt | 192 +++++++++++++++++++++++++++------ utils/gxt/spanish.txt | 19 +++- 15 files changed, 664 insertions(+), 88 deletions(-) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index c45d3779748cf5a4520b1c1bbe1b7227da2cee15..ebd1ac397cb3e27d04811ef373f5f384130c9f62 100644 GIT binary patch delta 3365 zcmX|De{5CN9sk}34V(H*sf=d{FtXQ{wzRab1sp9k+;@MxciVgKyS?YUzGnvkB& z#2Gij*0rD;lLT?>FhU4UN1VaU5#%WlK&+jhFhy*XF~<4w^~t4wi5Sya4BO$VAlr(hRRTke5H3JGE!kD9JD%CX@dL z$I|T}zB~Yfq|>x~$dew^)nJc2J-4m)>c^3!>1*&-d|G0#Q%-G6Cm$jv?-;N~s*PRv>|Ay)yva{`-ii*n_Z3o!ZZNRLzIaG)lN!c_sTQ{G(cx(KWG0!>ZRB@M= zV1L9n3m4NdN`_sWq*WBWTQcD4;mB~Im%$|dVEub zGxEKbbaGvMip40)+byZg!I;5xufZJ^j5jkmv{Q4iTrad-Al}yCE@`y3Wxk@MGf#s- z@`QOV%o!(1Oz6y*FJ`fje`rlB_si3*>H4J~L^9mO7Nl%&(}tl5?86*6bv{cDkp^D0 zu@QeXKc#fZE%Vd0cT<^*ZWeU%q!&b{4zn(@mJLt57x7u&f*ltl ztl_E}m96b<${D%5J@v>Zbk{`rF1l-CWxxJgByZ~_@WKr1!p1zDBRx*mhMI7&b>ZM{ z{v+veEDvTA?-~VIHa+xHcxoOVlApGxlGn*A-(WB-t1`@jk0M(PYq5(?xv#=B@`w92 zEG4@Go(=a#c@QOw!2#k+wgZjw_nGy|9kR9~tt4bm$1@|FLrGg0ZVq-5HhlwLAe=LN zI7ryyDl7}5utl%x!8*boE{h?;K2Fvc$um!dbD@Wh=)lGF-7soLs6`HDZ4k91`#PJF z9?57d3te(kXR7By7^5Rh-+@zfnzwQ=o%lTCu#I?&+3+IqHm=13@}tgYMvl;_W9YE; zXplWe;C~7xlMhZI3rF519{1|bu$qo=@jramxrlcQF5C#Shdg?+nPdv42^(YV0yLBL zg2$mD(!WS}_%}O82KqU`YQjNLYwit$7rvvxW8^5)Ot>Oz7p_QoB^g_FVKm0b*N`3uC%J>-axku%NJc)lq^jo&(&^y5 z-K0nzjPwiAgB5|T;X{DqX3Z2j83z%qtchRq$V;Ask0DJ2c#JDx^ z;BsY_IrmOQuNeJLep6XcIX!sk4rQqF()XWBBnM95ip2{7_+KNemjTAnV!-=s5YCbe$JRYl`Q=alJ4tDNa>MYiHVi9=Hw-7X96vn0 Jd(sQv`9IkH$@c&N delta 3373 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 diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index cf07b6339775d88ca08810f0024dfb1254ebd48d..746f07dac9e1fff3605e63500295efc69bba8f86 100644 GIT binary patch delta 4720 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 F{s)Pj7xMrB delta 3026 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 delta 22958 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 LS8jf1P|N=U`+hQ@ diff --git a/gamefiles/TEXT/russian.gxt b/gamefiles/TEXT/russian.gxt index cdef169799dec49395880b93ec29cbf115b212f4..aeb3f0b5108cb03163feb211ef3fe978da7a33bb 100644 GIT binary patch delta 24157 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 delta 22635 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%0D^7BUHe>&Cy~P~ilrcJ1 z-Lh$HN^ESJ?9-RThNo8h_0(grkLs$&dk#)hHdfbu;n&lZq3XzU@5JgZk!xEuiu7W@ z_=D=jFFQ5L*Q)b&oU3bHT~mWf-tyM31&%S+dVv^q%(pwD54CJ}T?47=CoevzQJP;G d>3?~oUpY6@AA5J?htKY;sXcdVXU*1S{|D;Diwyt( delta 3425 zcmX|De{9s|8Gd|$6eyRrDa(xLLtQAYV=V_QE2h;0?^I>ah%qPYpAtz{8qZ55$vLyUD2MJyv|>RJYrQnpdL*Y@lD z_vrQeJ>UED`F!Ab!UUKL0=+l(Oq7wu>Y2 z5NB;0yK4&`c}$YVYo!HmOVUJb!J>yHsjrr9{cBybIjas@R`$9b3peiz@hUZsP2$m1 zLi&MNn|dbx`hQ}9k7lgJ%i@hxGX6Mw8YKs>h>ucTExXuaI}SE5cC=y4pCx)0ACA?} z7v~mtN~Vz7lTuzRZcmoJKHtAh@f1bFj!FLp9~*c#va1#z|BUTf6MG`Nmd2rJ+>KYK z@hZG7e%_wweJaMx`XELxGlOAZ0&F)d)ZdNlHq5ILc5p@9XwQ|NycJqhT|=J~o>Fxk z*CJeWaVo)fryCch@hV)K#;dV6@~_DFo%rFBgj5#4T$1e7ZioC?$3_E3n{{pUy~+0B zGH(7i#9F~dJM(C!f<7^GX;<^+dExDvt>8@bwc=n@7)z7!JX`Wc7Ml3p(yr?Kdm&pP z<094^o-GjDO7<+!%$)szead;HIEzBrfDD)Y~6k&ZKv=69Rq_~~~RNGw~ z+dxsp={tdcy*E&N0!KxRW@+$&uz;i>u_o`}cMa40%kQgMtssh3Rbj`&L!?nM3-6_>dNM#040 zg;FqyMzM_D;KyoHcVXL_)Y5h zhsb)frdz?W(7)=LB?EgSCtA1}Tn@96Mft<9G{pg0yN?+U4r2UYj133NctMJ0 z7PqIdhTY6rB#Af?w#l<(6&I(%vzF{&%q zIytK@oIIPlca&7m*A7Q>v4hiaas$}-5ZiSHEiticMQ8dEZj)mv=;m-8%Y=JByHYzQ zIcTSpp#k{&ilnqb%E>#=nu>|f!wR{Yj(<*L8?#U+ik(C8Cz;zV>3CNBx-&t- z_s7m;b3fl-GBYT%w3SR1+lADXY;NJTEEh7cxR({##(B}(m1u6^lqBf%#>eb z!X!+s%%Bm&jtEn`d)QxBE7%@ks>A_iHZnS{N0^>~Nsh`WSh&k}Gh4*zw&1RM8oE3# ziv{UK!!-`n&N^7wBr<8c@M=RCuiuXi{Mof-40A-Tt>ZU=5UF0-(lH}=d{nPeaIl$g ztLO&h`hNNu>5?dQC#4DT-R>V%UkN;QFKgy7##pnnIL$bhwecs$1y{zQAP?OekS!cz zY>@z+U~JQFPO`sa$>#-#^CBC`l&0%bQmvq+l6{w7^~j(v)nhO-eifwRn0v|P;Klq`DxM%X^&0=xe0 zFNaa@4Uvdl6uoN_@v|JSLr?uX;%jT3qY$Uoc#AhMgkmj>FGGVohYu^Vg0Ub_`ZrWe zj0V!)0RYpzEo!ftH|` zgz3TVXCIZSa)F6d+RgD`ugS+Tv1@LaOqMSG;CjfZk$-*g9J-#bK)>a)xhhG@c(8J= zmm?t<;|p>$dwuMbr^9b?h4QwFCMFsn`#tv2WfN_DRww&m#s;nTC|AOufKu%5?@j~R z*ZQS4XbVlw*q};mXEIP>vO7ggaHP}9E^axSEIGKcLP zmOrW+g4J?qY-L)uKldh@U*zi@`X_AX5FHZ0cZAfJ=-cmKP|!V1cX6AsU$brg-jUs+ z8mwmQKeVw3+hsI;S}XV6zArX^jxe>h*o@h=ZCd;Nv3U>F4iD{{Ep4oIeC79Zq{-UU z({IKauF}<(q8I7!0j;-cCpO!4(vNGiM^84SZF&qV1=Cx*hWgA{9R^a=bKh<|BUs9I x*VU1)-Przdon$>Xwe$I@ozlsvow2uX96a!oy2gWNw$?Qr+*FeqPZF}1{2y Date: Fri, 12 Feb 2021 12:59:10 +0200 Subject: [PATCH 048/314] Update TXDs --- gamefiles/models/frontend_ds3.txd | Bin 590632 -> 590632 bytes gamefiles/models/frontend_ds4.txd | Bin 590632 -> 590632 bytes gamefiles/models/frontend_x360.txd | Bin 590632 -> 590632 bytes gamefiles/models/frontend_xone.txd | Bin 590632 -> 590632 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/models/frontend_ds3.txd b/gamefiles/models/frontend_ds3.txd index 1e5da6e1438f966125b32a94c41e1cfeb7295f06..7481e9b95f33d342613da51649569758888f502b 100644 GIT binary patch delta 172 zcmV;d08{^{h9szlB!GkggaU*Egam{Iga)(+hynx%0R#h=K}Z9plhBPHw^0HGu|=l> zOa%zH0#OGg5CQGCC}9U04FT7;Lv9D~0|EWFG;#-@1_AK5)OZIn1p?O!lfjK|w|9OA z3Iw--T?McKmob9{rU4zd*np a0Ra$~*mDKmw{V^XRbz+60tlDI0tsVM3OpJB delta 50 zcmZ3{rm~_4Ia2h(;ACN^%J?UQv`n{>8Mjpk@y-adzkWBME> G&K>}&wh)s5 diff --git a/gamefiles/models/frontend_ds4.txd b/gamefiles/models/frontend_ds4.txd index e3cd2bffde10eded9a1b56e17cc0fbdff9378d0a..594de3283d7acb6013b6e9e7c370c223b049b03e 100644 GIT binary patch delta 87 zcmV-d0I2_{h9szlB!GkggaU*Egam{Iga)(+hynx%0R#h=F@OQWw@v~D)>pSATL;lV tlc1?ww^5e`gBYjOvjqeL_W#hg*S7`v0|5ZH(YpooMTf-#2$#hI31eF1A)5dI delta 50 zcmZ3{rm~_4Ia2h(;ACbl^d+f}03FFI^5oy~S3t^Fty$MmC2 GoXG&dsu9Bg diff --git a/gamefiles/models/frontend_x360.txd b/gamefiles/models/frontend_x360.txd index 9ba773f29d4945aea2602dd61c90885b3afd9fef..a57b8d131ba36f19b14c00f7918a7b291de75ced 100644 GIT binary patch delta 114 zcmZ3{rm~_4Ia2NMeiBMb9%MGeMh+l!c3ojSH}>1JQUJo&;> y!|fCM+0R2+li4q`1I2W=Pn-=Gn-6C#2C^1kSjxCPVL5ARRQpjTj_F64IFkX(CoY%( delta 55 zcmZ3{rm~_4Ia2h;WrMphZY=?da(EZa4N*?20poAhwJC~Kd? L#4&vi6K4+q>xmID diff --git a/gamefiles/models/frontend_xone.txd b/gamefiles/models/frontend_xone.txd index 848580e3f1a5d18afe78cd65d64e074870f63732..03dfefdadce3fd8128fa441dea20b494acb09815 100644 GIT binary patch delta 195 zcmZ3{rm~_4Ia2NMeiBMbB7kN3B4cV=RB@n&S2{BVBc_J_W# z3)C6kZ*MAPJ;cZ?!{EO?QHa%&X?sH@YY-RXh2@u delta 50 zcmZ3{rm~_4Ia2h;WrM%F(9+gXI!1S__S_HeM5x6fhXm_CPz Gvj+gL7!Vo& From 1b8d03f3aaaeaf96844f2d07caddabf90ec1e300 Mon Sep 17 00:00:00 2001 From: Filip Gawin Date: Fri, 12 Feb 2021 02:04:31 +0100 Subject: [PATCH 049/314] Cmake version for hash --- CMakeLists.txt | 4 + cmake/GetGitRevisionDescription.cmake | 284 +++++++++++++++++++++++ cmake/GetGitRevisionDescription.cmake.in | 43 ++++ premake5.lua | 1 + src/CMakeLists.txt | 7 +- src/core/config.h | 4 +- src/core/main.cpp | 8 +- src/core/re3.cpp | 6 +- src/extras/GitSHA1.cpp | 2 - src/extras/GitSHA1.cpp.in | 2 + 10 files changed, 348 insertions(+), 13 deletions(-) create mode 100644 cmake/GetGitRevisionDescription.cmake create mode 100644 cmake/GetGitRevisionDescription.cmake.in delete mode 100644 src/extras/GitSHA1.cpp create mode 100644 src/extras/GitSHA1.cpp.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d753d80..5396d3b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,10 @@ set(PROJECT RE3) project(${EXECUTABLE} C CXX) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") +include(GetGitRevisionDescription) +get_git_head_revision(GIT_REFSPEC GIT_SHA1 "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") +message(STATUS "Building ${CMAKE_PROJECT_NAME} GIT SHA1: ${GIT_SHA1}") + if(WIN32) set(${PROJECT}_AUDIOS "OAL" "MSS") else() diff --git a/cmake/GetGitRevisionDescription.cmake b/cmake/GetGitRevisionDescription.cmake new file mode 100644 index 00000000..87f691ad --- /dev/null +++ b/cmake/GetGitRevisionDescription.cmake @@ -0,0 +1,284 @@ +# - Returns a version string from Git +# +# These functions force a re-configure on each git commit so that you can +# trust the values of the variables in your build system. +# +# get_git_head_revision( [ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR]) +# +# Returns the refspec and sha hash of the current head revision +# +# git_describe( [ ...]) +# +# Returns the results of git describe on the source tree, and adjusting +# the output so that it tests false if an error occurs. +# +# git_describe_working_tree( [ ...]) +# +# Returns the results of git describe on the working tree (--dirty option), +# and adjusting the output so that it tests false if an error occurs. +# +# git_get_exact_tag( [ ...]) +# +# Returns the results of git describe --exact-match on the source tree, +# and adjusting the output so that it tests false if there was no exact +# matching tag. +# +# git_local_changes() +# +# Returns either "CLEAN" or "DIRTY" with respect to uncommitted changes. +# Uses the return code of "git diff-index --quiet HEAD --". +# Does not regard untracked files. +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2020 Ryan Pavlik +# http://academic.cleardefinition.com +# +# Copyright 2009-2013, Iowa State University. +# Copyright 2013-2020, Ryan Pavlik +# Copyright 2013-2020, Contributors +# SPDX-License-Identifier: BSL-1.0 +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) + +if(__get_git_revision_description) + return() +endif() +set(__get_git_revision_description YES) + +# We must run the following at "include" time, not at function call time, +# to find the path to this module rather than the path to a calling list file +get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) + +# Function _git_find_closest_git_dir finds the next closest .git directory +# that is part of any directory in the path defined by _start_dir. +# The result is returned in the parent scope variable whose name is passed +# as variable _git_dir_var. If no .git directory can be found, the +# function returns an empty string via _git_dir_var. +# +# Example: Given a path C:/bla/foo/bar and assuming C:/bla/.git exists and +# neither foo nor bar contain a file/directory .git. This wil return +# C:/bla/.git +# +function(_git_find_closest_git_dir _start_dir _git_dir_var) + set(cur_dir "${_start_dir}") + set(git_dir "${_start_dir}/.git") + while(NOT EXISTS "${git_dir}") + # .git dir not found, search parent directories + set(git_previous_parent "${cur_dir}") + get_filename_component(cur_dir ${cur_dir} DIRECTORY) + if(cur_dir STREQUAL git_previous_parent) + # We have reached the root directory, we are not in git + set(${_git_dir_var} + "" + PARENT_SCOPE) + return() + endif() + set(git_dir "${cur_dir}/.git") + endwhile() + set(${_git_dir_var} + "${git_dir}" + PARENT_SCOPE) +endfunction() + +function(get_git_head_revision _refspecvar _hashvar) + _git_find_closest_git_dir("${CMAKE_CURRENT_SOURCE_DIR}" GIT_DIR) + + if("${ARGN}" STREQUAL "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") + set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR TRUE) + else() + set(ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR FALSE) + endif() + if(NOT "${GIT_DIR}" STREQUAL "") + file(RELATIVE_PATH _relative_to_source_dir "${CMAKE_SOURCE_DIR}" + "${GIT_DIR}") + if("${_relative_to_source_dir}" MATCHES "[.][.]" AND NOT ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR) + # We've gone above the CMake root dir. + set(GIT_DIR "") + endif() + endif() + if("${GIT_DIR}" STREQUAL "") + set(${_refspecvar} + "GITDIR-NOTFOUND" + PARENT_SCOPE) + set(${_hashvar} + "GITDIR-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + # Check if the current source dir is a git submodule or a worktree. + # In both cases .git is a file instead of a directory. + # + if(NOT IS_DIRECTORY ${GIT_DIR}) + # The following git command will return a non empty string that + # points to the super project working tree if the current + # source dir is inside a git submodule. + # Otherwise the command will return an empty string. + # + execute_process( + COMMAND "${GIT_EXECUTABLE}" rev-parse + --show-superproject-working-tree + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT "${out}" STREQUAL "") + # If out is empty, GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a submodule + file(READ ${GIT_DIR} submodule) + string(REGEX REPLACE "gitdir: (.*)$" "\\1" GIT_DIR_RELATIVE + ${submodule}) + string(STRIP ${GIT_DIR_RELATIVE} GIT_DIR_RELATIVE) + get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) + get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} + ABSOLUTE) + set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") + else() + # GIT_DIR/CMAKE_CURRENT_SOURCE_DIR is in a worktree + file(READ ${GIT_DIR} worktree_ref) + # The .git directory contains a path to the worktree information directory + # inside the parent git repo of the worktree. + # + string(REGEX REPLACE "gitdir: (.*)$" "\\1" git_worktree_dir + ${worktree_ref}) + string(STRIP ${git_worktree_dir} git_worktree_dir) + _git_find_closest_git_dir("${git_worktree_dir}" GIT_DIR) + set(HEAD_SOURCE_FILE "${git_worktree_dir}/HEAD") + endif() + else() + set(HEAD_SOURCE_FILE "${GIT_DIR}/HEAD") + endif() + set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") + if(NOT EXISTS "${GIT_DATA}") + file(MAKE_DIRECTORY "${GIT_DATA}") + endif() + + if(NOT EXISTS "${HEAD_SOURCE_FILE}") + return() + endif() + set(HEAD_FILE "${GIT_DATA}/HEAD") + configure_file("${HEAD_SOURCE_FILE}" "${HEAD_FILE}" COPYONLY) + + configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" + "${GIT_DATA}/grabRef.cmake" @ONLY) + include("${GIT_DATA}/grabRef.cmake") + + set(${_refspecvar} + "${HEAD_REF}" + PARENT_SCOPE) + set(${_hashvar} + "${HEAD_HASH}" + PARENT_SCOPE) +endfunction() + +function(git_describe _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + # TODO sanitize + #if((${ARGN}" MATCHES "&&") OR + # (ARGN MATCHES "||") OR + # (ARGN MATCHES "\\;")) + # message("Please report the following error to the project!") + # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") + #endif() + + #message(STATUS "Arguments to execute_process: ${ARGN}") + + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --tags --always ${hash} ${ARGN} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_describe_working_tree _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" describe --dirty ${ARGN} + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_get_exact_tag _var) + git_describe(out --exact-match ${ARGN}) + set(${_var} + "${out}" + PARENT_SCOPE) +endfunction() + +function(git_local_changes _var) + if(NOT GIT_FOUND) + find_package(Git QUIET) + endif() + get_git_head_revision(refspec hash) + if(NOT GIT_FOUND) + set(${_var} + "GIT-NOTFOUND" + PARENT_SCOPE) + return() + endif() + if(NOT hash) + set(${_var} + "HEAD-HASH-NOTFOUND" + PARENT_SCOPE) + return() + endif() + + execute_process( + COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD -- + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + RESULT_VARIABLE res + OUTPUT_VARIABLE out + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + if(res EQUAL 0) + set(${_var} + "CLEAN" + PARENT_SCOPE) + else() + set(${_var} + "DIRTY" + PARENT_SCOPE) + endif() +endfunction() diff --git a/cmake/GetGitRevisionDescription.cmake.in b/cmake/GetGitRevisionDescription.cmake.in new file mode 100644 index 00000000..116efc4e --- /dev/null +++ b/cmake/GetGitRevisionDescription.cmake.in @@ -0,0 +1,43 @@ +# +# Internal file for GetGitRevisionDescription.cmake +# +# Requires CMake 2.6 or newer (uses the 'function' command) +# +# Original Author: +# 2009-2010 Ryan Pavlik +# http://academic.cleardefinition.com +# Iowa State University HCI Graduate Program/VRAC +# +# Copyright 2009-2012, Iowa State University +# Copyright 2011-2015, Contributors +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt) +# SPDX-License-Identifier: BSL-1.0 + +set(HEAD_HASH) + +file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) + +string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) +if(HEAD_CONTENTS MATCHES "ref") + # named branch + string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") + if(EXISTS "@GIT_DIR@/${HEAD_REF}") + configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) + else() + configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY) + file(READ "@GIT_DATA@/packed-refs" PACKED_REFS) + if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}") + set(HEAD_HASH "${CMAKE_MATCH_1}") + endif() + endif() +else() + # detached HEAD + configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) +endif() + +if(NOT HEAD_HASH) + file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) + string(STRIP "${HEAD_HASH}" HEAD_HASH) +endif() diff --git a/premake5.lua b/premake5.lua index 64dc8767..8f1c8a92 100644 --- a/premake5.lua +++ b/premake5.lua @@ -263,6 +263,7 @@ project "re3" files { addSrcFiles("src/vehicles") } files { addSrcFiles("src/weapons") } files { addSrcFiles("src/extras") } + files { "src/extras/GitSHA1.cpp" } -- this won't be in repo in first build includedirs { "src" } includedirs { "src/animation" } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index df39c7c9..c81873fd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ -set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) +set(THREADS_PREFER_PTHREAD_FLAG ON) file(GLOB_RECURSE ${PROJECT}_SOURCES "*.cpp" "*.h" "*.rc") @@ -17,6 +17,9 @@ endfunction() header_directories(${PROJECT}_INCLUDES) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/extras/GitSHA1.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/extras/GitSHA1.cpp" @ONLY) +list(APPEND ${PROJECT}_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/extras/GitSHA1.cpp") + add_executable(${EXECUTABLE} WIN32 ${${PROJECT}_SOURCES} ) @@ -46,6 +49,8 @@ if(LIBRW_PLATFORM_D3D9) ) endif() +target_compile_definitions(${EXECUTABLE} PRIVATE CMAKE_BUILD) + if(${PROJECT}_AUDIO STREQUAL "OAL") find_package(OpenAL REQUIRED) target_include_directories(${EXECUTABLE} PRIVATE ${OPENAL_INCLUDE_DIR}) diff --git a/src/core/config.h b/src/core/config.h index 87c31a0f..c051bdbb 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -184,8 +184,8 @@ enum Config { // those infamous texts #define DRAW_GAME_VERSION_TEXT #ifdef DRAW_GAME_VERSION_TEXT - #define TOGGLEABLE_VERSION_TEXT - #define USE_OUR_VERSIONING // If you disable this then game will fetch version peds.col, as R* did while in development + // unlike R* development builds, ours has runtime switch on debug menu & .ini, and disabled as default. + #define USE_OUR_VERSIONING // If you disable this then game will fetch version from peds.col, as R* did while in development #endif //#define DRAW_MENU_VERSION_TEXT diff --git a/src/core/main.cpp b/src/core/main.cpp index 363087c0..65ae5290 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -89,8 +89,8 @@ bool gbModelViewer; #ifdef TIMEBARS bool gbShowTimebars; #endif -#ifdef TOGGLEABLE_VERSION_TEXT -bool gDrawVersionText; +#ifdef DRAW_GAME_VERSION_TEXT +bool gDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds #endif volatile int32 frameCount; @@ -1096,9 +1096,7 @@ DisplayGameDebugText() #ifdef DRAW_GAME_VERSION_TEXT wchar ver[200]; -#ifdef TOGGLEABLE_VERSION_TEXT - if(gDrawVersionText) -#endif + if(gDrawVersionText) // This realtime switch is our thing { #ifdef USE_OUR_VERSIONING diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 80e89ca4..7f7f1f83 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -508,7 +508,7 @@ bool LoadINISettings() #ifdef FIX_SPRITES ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites); #endif -#ifdef TOGGLEABLE_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText); #endif @@ -599,7 +599,7 @@ void SaveINISettings() #ifdef FIX_SPRITES StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites); #endif -#ifdef TOGGLEABLE_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; StoreIni("General", "DrawVersionText", gDrawVersionText); #endif @@ -993,7 +993,7 @@ extern bool gbRenderWorld2; #endif -#ifdef TOGGLEABLE_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); #endif diff --git a/src/extras/GitSHA1.cpp b/src/extras/GitSHA1.cpp deleted file mode 100644 index 3d1cd73e..00000000 --- a/src/extras/GitSHA1.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#define GIT_SHA1 "" -const char* g_GIT_SHA1 = GIT_SHA1; diff --git a/src/extras/GitSHA1.cpp.in b/src/extras/GitSHA1.cpp.in new file mode 100644 index 00000000..6168dc79 --- /dev/null +++ b/src/extras/GitSHA1.cpp.in @@ -0,0 +1,2 @@ +#define GIT_SHA1 "@GIT_SHA1@" +const char* g_GIT_SHA1 = GIT_SHA1; From 8659b9d77c0a823f18a08fcea53a62dc29188529 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 17:23:29 +0300 Subject: [PATCH 050/314] Fix sha1 on premake linux --- premake5.lua | 2 +- printHash.sh | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) mode change 100644 => 100755 printHash.sh diff --git a/premake5.lua b/premake5.lua index 8f1c8a92..d4459f94 100644 --- a/premake5.lua +++ b/premake5.lua @@ -331,7 +331,7 @@ project "re3" prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' } filter "platforms:not win*" - prebuildcommands { '"%{prj.location}../printHash.sh" "%{prj.location}../src/extras/GitSHA1.cpp"' } + prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' } filter "platforms:win*glfw*" staticruntime "off" diff --git a/printHash.sh b/printHash.sh old mode 100644 new mode 100755 index 7b4453a1..71f54466 --- a/printHash.sh +++ b/printHash.sh @@ -1,12 +1,10 @@ -#!/usr/bin/bash +#!/bin/bash > $1 echo -n "#define GIT_SHA1 \"" > $1 -git --version 2>&1 >/dev/null -GIT_IS_AVAILABLE=$? -if [ $GIT_IS_AVAILABLE -ne 0 ]; then +if (command -v "git" >/dev/null) then git rev-parse --short HEAD | tr -d '\n' >> $1 fi From 6689b0be0201cb6a5c198701b9dc6efb9af33d5a Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 19:50:26 +0300 Subject: [PATCH 051/314] Fix XInput hotplug --- src/core/MenuScreensCustom.cpp | 7 ++----- src/core/re3.cpp | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 069cbdef..6e23f76a 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -333,11 +333,8 @@ wchar* DetectJoystickDraw(bool* disabled, bool userHovering) { } } if (found != -1 && CPad::XInputJoy1 != found) { - if (CPad::XInputJoy1 != -1 && CPad::XInputJoy1 != found) - CPad::XInputJoy2 = CPad::XInputJoy1; - else - CPad::XInputJoy2 = -1; - + // We should never leave pads -1, so we can process them when they're connected and kinda support hotplug. + CPad::XInputJoy2 = (CPad::XInputJoy1 == -1 ? (found + 1) % 4 : CPad::XInputJoy1); CPad::XInputJoy1 = found; cachedButtonNum = 0; // fake too, because xinput bypass CControllerConfig } diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 7f7f1f83..6de079e8 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -336,6 +336,14 @@ void LoadINIControllerSettings() CPad::XInputJoy2 = i; } } + + // There is no plug event on XInput, so let's leave XInputJoy1/2 as 0/1 respectively, and hotplug will be possible. + if (CPad::XInputJoy1 == -1) { + CPad::XInputJoy1 = 0; + CPad::XInputJoy2 = 1; + } else if (CPad::XInputJoy2 == -1) { + CPad::XInputJoy2 = (CPad::XInputJoy1 + 1) % 4; + } } #else ReadIniIfExists("Controller", "JoystickName", gSelectedJoystickName, 128); From 9553478d9cf80b2207d1e78f6e8ac21efc8ce090 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 20:12:43 +0100 Subject: [PATCH 052/314] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index 4c77fb57..41ae7b9b 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 4c77fb57546e89da1e6f3bad3c582848de9f5c93 +Subproject commit 41ae7b9b61c6736b34269df0f0350d1b5bcff4df From 78cc2aa9ccc1fd37f448d61cc2bcb3b915bcecdf Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 21:08:38 +0100 Subject: [PATCH 053/314] license information --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d3175662..25482ed9 100644 --- a/README.md +++ b/README.md @@ -150,5 +150,7 @@ Do not use features from C++11 or later. ## License -We don't feel like we're in a position to give this code a license. -If we were, it would be MIT licensed. +We don't feel like we're in a position to give this code a license.\ +The code should only be used for educational, documentation and modding purposes.\ +We do not encourage piracy or commercial use.\ +Please keep derivate work open source and give proper credit. \ No newline at end of file From 2ce946584e8c9584a7674a095521269b1bc5f40c Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 12 Feb 2021 21:52:33 +0100 Subject: [PATCH 054/314] add history section to readme --- README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/README.md b/README.md index 25482ed9..e9cf57b8 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,35 @@ We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_ST Do not use features from C++11 or later. +## History + +re3 was started sometime in the spring of 2018, +initially as a way to test reversed collision and physics code +inside the game. +This was done by replacing single functions of the game +with their reversed counterparts using a dll. + +After a bit of work then project lay dormant for about a year +and was picked up again and pushed to github in May 2019. +At the time I had reversed around 10k lines of code and estimated +the final game to have around 200-250k. +Others quickly joined the effort and we made very quick progress +throughout the summer of 2019 +after which the pace slowed down a bit. + +Due to everyone staying home during the start of the Corona pandemic +everybody had much time to work on re3 again and +we finally got a standalone exe in April 2020 (around 180k lines by then). + +After the initial excitement and fixing and polishing the code more +reVC was started in early May 2020 by starting from re3 code, +not by starting from scratch replacing functions with a dll. +After a few months of mostly steady progress we considered reVC +finished in December. + +Since then we have started LCS, which is currently work in progress. + + ## License We don't feel like we're in a position to give this code a license.\ From 291cdd4bfbd595f83ef711aef549c453d3cf64f7 Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sat, 13 Feb 2021 01:35:48 +0300 Subject: [PATCH 055/314] iii icon fix --- src/skel/win/win.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 7317356c..86b0b214 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -1330,7 +1330,11 @@ InitApplication(HANDLE instance) windowClass.cbClsExtra = 0; windowClass.cbWndExtra = 0; windowClass.hInstance = (HINSTANCE)instance; +#ifdef FIX_BUGS + windowClass.hIcon = LoadIcon((HINSTANCE)instance, MAKEINTRESOURCE(IDI_MAIN_ICON)); +#else windowClass.hIcon = nil; +#endif windowClass.hCursor = LoadCursor(nil, IDC_ARROW); windowClass.hbrBackground = nil; windowClass.lpszMenuName = NULL; From 0f8614221b7861a5d2dda55661c39375cc10f577 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 00:00:02 +0100 Subject: [PATCH 056/314] debugmenu cleanup --- src/core/main.cpp | 2 +- src/core/re3.cpp | 62 ++++++++---------------------------------- src/render/Shadows.cpp | 4 +-- 3 files changed, 15 insertions(+), 53 deletions(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index 37a87859..b47f5d37 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1094,7 +1094,7 @@ DisplayGameDebugText() static bool bDisplayRate = false; #ifndef FINAL { - SETTWEAKPATH("GameDebugText"); + SETTWEAKPATH("Debug"); TWEAKBOOL(bDisplayPosn); TWEAKBOOL(bDisplayRate); } diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 6de079e8..1a91d018 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -733,18 +733,6 @@ SwitchCarCollision(void) FindPlayerVehicle()->bUsesCollision = !FindPlayerVehicle()->bUsesCollision; } -static int engineStatus; -static void -SetEngineStatus(void) -{ - CVehicle *veh = FindPlayerVehicle(); - if(veh == nil) - return; - if(!veh->IsCar()) - return; - ((CAutomobile*)veh)->Damage.SetEngineStatus(engineStatus); -} - static void ToggleComedy(void) { @@ -754,23 +742,6 @@ ToggleComedy(void) veh->bComedyControls = !veh->bComedyControls; } -static void -PlaceOnRoad(void) -{ - CVehicle *veh = FindPlayerVehicle(); - if(veh == nil) - return; - - if(veh->IsCar()) - ((CAutomobile*)veh)->PlaceOnRoadProperly(); -} - -static void -ResetCamStatics(void) -{ - TheCamera.Cams[TheCamera.ActiveCam].ResetStatics = true; -} - #ifdef MISSION_SWITCHER int8 nextMissionToSwitch = 0; static void @@ -1004,6 +975,10 @@ extern bool gbRenderWorld2; #ifdef DRAW_GAME_VERSION_TEXT extern bool gDrawVersionText; DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); +#endif + DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil); +#ifdef TIMEBARS + DebugMenuAddVarBool8("Debug", "Show Timebars", &gbShowTimebars, nil); #endif #ifndef FINAL DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil); @@ -1021,27 +996,14 @@ extern bool gbRenderWorld2; #ifdef MENU_MAP DebugMenuAddCmd("Debug", "Teleport to map waypoint", TeleportToWaypoint); #endif - DebugMenuAddCmd("Debug", "Switch car collision", SwitchCarCollision); - DebugMenuAddVar("Debug", "Engine Status", &engineStatus, nil, 1, 0, 226, nil); - DebugMenuAddCmd("Debug", "Set Engine Status", SetEngineStatus); DebugMenuAddCmd("Debug", "Fix Car", FixCar); + DebugMenuAddCmd("Debug", "Switch car collision", SwitchCarCollision); DebugMenuAddCmd("Debug", "Toggle Comedy Controls", ToggleComedy); - DebugMenuAddCmd("Debug", "Place Car on Road", PlaceOnRoad); - - DebugMenuAddVarBool8("Debug", "Catalina Heli On", &CHeli::CatalinaHeliOn, nil); - DebugMenuAddCmd("Debug", "Catalina Fly By", CHeli::StartCatalinaFlyBy); - DebugMenuAddCmd("Debug", "Catalina Take Off", CHeli::CatalinaTakeOff); - DebugMenuAddCmd("Debug", "Catalina Fly Away", CHeli::MakeCatalinaHeliFlyAway); - DebugMenuAddVarBool8("Debug", "Script Heli On", &CHeli::ScriptHeliOn, nil); DebugMenuAddVarBool8("Debug", "Toggle popping heads on headshot", &CPed::bPopHeadsOnHeadshot, nil); - DebugMenuAddCmd("Debug", "Start Credits", CCredits::Start); - DebugMenuAddCmd("Debug", "Stop Credits", CCredits::Stop); + //DebugMenuAddCmd("Debug", "Start Credits", CCredits::Start); + //DebugMenuAddCmd("Debug", "Stop Credits", CCredits::Stop); - DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil); -#ifdef TIMEBARS - DebugMenuAddVarBool8("Debug", "Show Timebars", &gbShowTimebars, nil); -#endif #ifdef MISSION_SWITCHER DebugMenuEntry *missionEntry; static const char* missions[] = { @@ -1074,11 +1036,11 @@ extern bool gbRenderWorld2; #endif DebugMenuAddVarBool8("Cam", "Print Debug Code", &PrintDebugCode, nil); DebugMenuAddVar("Cam", "Cam Mode", &DebugCamMode, nil, 1, 0, CCam::MODE_EDITOR, nil); - DebugMenuAddCmd("Cam", "Normal", []() { DebugCamMode = 0; }); - DebugMenuAddCmd("Cam", "Follow Ped With Bind", []() { DebugCamMode = CCam::MODE_FOLLOW_PED_WITH_BIND; }); - DebugMenuAddCmd("Cam", "Reaction", []() { DebugCamMode = CCam::MODE_REACTION; }); - DebugMenuAddCmd("Cam", "Chris", []() { DebugCamMode = CCam::MODE_CHRIS; }); - DebugMenuAddCmd("Cam", "Reset Statics", ResetCamStatics); + // DebugMenuAddCmd("Cam", "Normal", []() { DebugCamMode = 0; }); + // DebugMenuAddCmd("Cam", "Follow Ped With Bind", []() { DebugCamMode = CCam::MODE_FOLLOW_PED_WITH_BIND; }); + // DebugMenuAddCmd("Cam", "Reaction", []() { DebugCamMode = CCam::MODE_REACTION; }); + // DebugMenuAddCmd("Cam", "Chris", []() { DebugCamMode = CCam::MODE_CHRIS; }); + // DebugMenuAddCmd("Cam", "Reset Statics", ResetCamStatics); CTweakVars::AddDBG("Debug"); } diff --git a/src/render/Shadows.cpp b/src/render/Shadows.cpp index 8c892be3..d7eccbfd 100644 --- a/src/render/Shadows.cpp +++ b/src/render/Shadows.cpp @@ -21,8 +21,8 @@ #include "Shadows.h" #ifdef DEBUGMENU -SETTWEAKPATH("Shadows"); -TWEAKBOOL(gbPrintShite); +//SETTWEAKPATH("Shadows"); +//TWEAKBOOL(gbPrintShite); #endif RwImVertexIndex ShadowIndexList[24]; From c1a274d91cfb6936f2c57f15f83c478eec3ca0c7 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 00:25:36 +0100 Subject: [PATCH 057/314] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..9f6e155a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,22 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. +For this please enable the version text from the debug menu (Ctrl-M, Debug -> Version Text) +so we know what code you're running. From f407c5a25f907882eb3f291bc0455060433da563 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 00:33:26 +0100 Subject: [PATCH 058/314] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 9f6e155a..85d1e584 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -18,5 +18,7 @@ A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. -For this please enable the version text from the debug menu (Ctrl-M, Debug -> Version Text) -so we know what code you're running. + +**Version** +Tell us what version you're running. Find out using the debug menu (Ctrl-M, Debug -> Version Text) +If you send a screenshot just enable it beforehand. From d0fbba19d1533c2bb494ab7f7ad73eb6bdd79f86 Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 00:08:35 +0100 Subject: [PATCH 059/314] debugmenu cleanup --- src/core/re3.cpp | 102 +++++++++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 1a91d018..98024219 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -742,6 +742,18 @@ ToggleComedy(void) veh->bComedyControls = !veh->bComedyControls; } +static void +PlaceOnRoad(void) +{ + CVehicle *veh = FindPlayerVehicle(); + if(veh == nil) + return; + + if(veh->IsCar()) + ((CAutomobile*)veh)->PlaceOnRoadProperly(); +} + + #ifdef MISSION_SWITCHER int8 nextMissionToSwitch = 0; static void @@ -898,12 +910,22 @@ DebugMenuPopulate(void) DebugMenuAddCmd("Spawn", "Spawn Predator", [](){ SpawnCar(MI_PREDATOR); }); DebugMenuAddVarBool8("Render", "Draw hud", &CHud::m_Wants_To_Draw_Hud, nil); + +#ifdef PROPER_SCALING + DebugMenuAddVarBool8("Render", "Proper Scaling", &CDraw::ms_bProperScaling, nil); +#endif +#ifdef FIX_RADAR + DebugMenuAddVarBool8("Render", "Fix Radar", &CDraw::ms_bFixRadar, nil); +#endif +#ifdef FIX_SPRITES + DebugMenuAddVarBool8("Render", "Fix Sprites", &CDraw::ms_bFixSprites, nil); +#endif DebugMenuAddVarBool8("Render", "PS2 Alpha test Emu", &gPS2alphaTest, nil); DebugMenuAddVarBool8("Render", "Frame limiter", &FrontEndMenuManager.m_PrefsFrameLimiter, nil); DebugMenuAddVarBool8("Render", "VSynch", &FrontEndMenuManager.m_PrefsVsync, nil); DebugMenuAddVar("Render", "Max FPS", &RsGlobal.maxFPS, nil, 1, 1, 1000, nil); #ifdef NEW_RENDERER - DebugMenuAddVarBool8("Render", "new renderer", &gbNewRenderer, nil); + DebugMenuAddVarBool8("Render", "New Renderer", &gbNewRenderer, nil); extern bool gbRenderRoads; extern bool gbRenderEverythingBarRoads; //extern bool gbRenderFadingInUnderwaterEntities; @@ -914,16 +936,16 @@ extern bool gbRenderVehicles; extern bool gbRenderWorld0; extern bool gbRenderWorld1; extern bool gbRenderWorld2; - DebugMenuAddVarBool8("Render", "gbRenderRoads", &gbRenderRoads, nil); - DebugMenuAddVarBool8("Render", "gbRenderEverythingBarRoads", &gbRenderEverythingBarRoads, nil); -// DebugMenuAddVarBool8("Render", "gbRenderFadingInUnderwaterEntities", &gbRenderFadingInUnderwaterEntities, nil); - DebugMenuAddVarBool8("Render", "gbRenderFadingInEntities", &gbRenderFadingInEntities, nil); - DebugMenuAddVarBool8("Render", "gbRenderWater", &gbRenderWater, nil); - DebugMenuAddVarBool8("Render", "gbRenderBoats", &gbRenderBoats, nil); - DebugMenuAddVarBool8("Render", "gbRenderVehicles", &gbRenderVehicles, nil); - DebugMenuAddVarBool8("Render", "gbRenderWorld0", &gbRenderWorld0, nil); - DebugMenuAddVarBool8("Render", "gbRenderWorld1", &gbRenderWorld1, nil); - DebugMenuAddVarBool8("Render", "gbRenderWorld2", &gbRenderWorld2, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderRoads", &gbRenderRoads, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderEverythingBarRoads", &gbRenderEverythingBarRoads, nil); +// DebugMenuAddVarBool8("Debug Render", "gbRenderFadingInUnderwaterEntities", &gbRenderFadingInUnderwaterEntities, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderFadingInEntities", &gbRenderFadingInEntities, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderWater", &gbRenderWater, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderBoats", &gbRenderBoats, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderVehicles", &gbRenderVehicles, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderWorld0", &gbRenderWorld0, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderWorld1", &gbRenderWorld1, nil); + DebugMenuAddVarBool8("Debug Render", "gbRenderWorld2", &gbRenderWorld2, nil); #endif #ifdef EXTENDED_COLOURFILTER @@ -947,29 +969,19 @@ extern bool gbRenderWorld2; DebugMenuAddVarBool8("Render", "Neo Road Gloss enable", &CustomPipes::GlossEnable, nil); DebugMenuAddVar("Render", "Mult", &CustomPipes::GlossMult, nil, 0.1f, 0, 1.0f); #endif - DebugMenuAddVarBool8("Render", "Show Ped Paths", &gbShowPedPaths, nil); - DebugMenuAddVarBool8("Render", "Show Car Paths", &gbShowCarPaths, nil); - DebugMenuAddVarBool8("Render", "Show Car Path Links", &gbShowCarPathsLinks, nil); - DebugMenuAddVarBool8("Render", "Show Ped Road Groups", &gbShowPedRoadGroups, nil); - DebugMenuAddVarBool8("Render", "Show Car Road Groups", &gbShowCarRoadGroups, nil); - DebugMenuAddVarBool8("Render", "Show Collision Lines", &gbShowCollisionLines, nil); - DebugMenuAddVarBool8("Render", "Show Collision Polys", &gbShowCollisionPolys, nil); - DebugMenuAddVarBool8("Render", "Don't render Buildings", &gbDontRenderBuildings, nil); - DebugMenuAddVarBool8("Render", "Don't render Big Buildings", &gbDontRenderBigBuildings, nil); - DebugMenuAddVarBool8("Render", "Don't render Peds", &gbDontRenderPeds, nil); - DebugMenuAddVarBool8("Render", "Don't render Vehicles", &gbDontRenderVehicles, nil); - DebugMenuAddVarBool8("Render", "Don't render Objects", &gbDontRenderObjects, nil); - DebugMenuAddVarBool8("Render", "Don't Render Water", &gbDontRenderWater, nil); - -#ifdef PROPER_SCALING - DebugMenuAddVarBool8("Draw", "Proper Scaling", &CDraw::ms_bProperScaling, nil); -#endif -#ifdef FIX_RADAR - DebugMenuAddVarBool8("Draw", "Fix Radar", &CDraw::ms_bFixRadar, nil); -#endif -#ifdef FIX_SPRITES - DebugMenuAddVarBool8("Draw", "Fix Sprites", &CDraw::ms_bFixSprites, nil); -#endif + DebugMenuAddVarBool8("Debug Render", "Show Ped Paths", &gbShowPedPaths, nil); + DebugMenuAddVarBool8("Debug Render", "Show Car Paths", &gbShowCarPaths, nil); + DebugMenuAddVarBool8("Debug Render", "Show Car Path Links", &gbShowCarPathsLinks, nil); + DebugMenuAddVarBool8("Debug Render", "Show Ped Road Groups", &gbShowPedRoadGroups, nil); + DebugMenuAddVarBool8("Debug Render", "Show Car Road Groups", &gbShowCarRoadGroups, nil); + DebugMenuAddVarBool8("Debug Render", "Show Collision Lines", &gbShowCollisionLines, nil); + DebugMenuAddVarBool8("Debug Render", "Show Collision Polys", &gbShowCollisionPolys, nil); + DebugMenuAddVarBool8("Debug Render", "Don't render Buildings", &gbDontRenderBuildings, nil); + DebugMenuAddVarBool8("Debug Render", "Don't render Big Buildings", &gbDontRenderBigBuildings, nil); + DebugMenuAddVarBool8("Debug Render", "Don't render Peds", &gbDontRenderPeds, nil); + DebugMenuAddVarBool8("Debug Render", "Don't render Vehicles", &gbDontRenderVehicles, nil); + DebugMenuAddVarBool8("Debug Render", "Don't render Objects", &gbDontRenderObjects, nil); + DebugMenuAddVarBool8("Debug Render", "Don't Render Water", &gbDontRenderWater, nil); #ifdef DRAW_GAME_VERSION_TEXT @@ -993,17 +1005,19 @@ extern bool gbRenderWorld2; #ifdef GTA_SCENE_EDIT DebugMenuAddVarBool8("Debug", "Edit on", &CSceneEdit::m_bEditOn, nil); #endif -#ifdef MENU_MAP - DebugMenuAddCmd("Debug", "Teleport to map waypoint", TeleportToWaypoint); -#endif - DebugMenuAddCmd("Debug", "Fix Car", FixCar); - DebugMenuAddCmd("Debug", "Switch car collision", SwitchCarCollision); - DebugMenuAddCmd("Debug", "Toggle Comedy Controls", ToggleComedy); - - DebugMenuAddVarBool8("Debug", "Toggle popping heads on headshot", &CPed::bPopHeadsOnHeadshot, nil); //DebugMenuAddCmd("Debug", "Start Credits", CCredits::Start); //DebugMenuAddCmd("Debug", "Stop Credits", CCredits::Stop); +#ifdef MENU_MAP + DebugMenuAddCmd("Game", "Teleport to map waypoint", TeleportToWaypoint); +#endif + DebugMenuAddCmd("Game", "Fix Car", FixCar); + DebugMenuAddCmd("Game", "Place Car on Road", PlaceOnRoad); + DebugMenuAddCmd("Game", "Switch car collision", SwitchCarCollision); + DebugMenuAddCmd("Game", "Toggle Comedy Controls", ToggleComedy); + + DebugMenuAddVarBool8("Game", "Toggle popping heads on headshot", &CPed::bPopHeadsOnHeadshot, nil); + #ifdef MISSION_SWITCHER DebugMenuEntry *missionEntry; static const char* missions[] = { @@ -1023,9 +1037,9 @@ extern bool gbRenderWorld2; "Uzi Money", "Toyminator", "Rigged To Blow", "Bullion Run", "Rumble", "The Exchange" }; - missionEntry = DebugMenuAddVar("Debug", "Select mission", &nextMissionToSwitch, nil, 1, 0, ARRAY_SIZE(missions) - 1, missions); + missionEntry = DebugMenuAddVar("Game", "Select mission", &nextMissionToSwitch, nil, 1, 0, ARRAY_SIZE(missions) - 1, missions); DebugMenuEntrySetWrap(missionEntry, true); - DebugMenuAddCmd("Debug", "Start selected mission ", SwitchToMission); + DebugMenuAddCmd("Game", "Start selected mission ", SwitchToMission); #endif extern bool PrintDebugCode; From 9c7d83ebc138d94b640feeb0b6808cc5fccb543c Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 14:22:00 +0100 Subject: [PATCH 060/314] dbg menu again --- src/core/re3.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 98024219..e0f9c5c2 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -753,6 +753,11 @@ PlaceOnRoad(void) ((CAutomobile*)veh)->PlaceOnRoadProperly(); } +static void +ResetCamStatics(void) +{ + TheCamera.Cams[TheCamera.ActiveCam].ResetStatics = true; +} #ifdef MISSION_SWITCHER int8 nextMissionToSwitch = 0; @@ -1050,11 +1055,11 @@ extern bool gbRenderWorld2; #endif DebugMenuAddVarBool8("Cam", "Print Debug Code", &PrintDebugCode, nil); DebugMenuAddVar("Cam", "Cam Mode", &DebugCamMode, nil, 1, 0, CCam::MODE_EDITOR, nil); - // DebugMenuAddCmd("Cam", "Normal", []() { DebugCamMode = 0; }); + DebugMenuAddCmd("Cam", "Normal", []() { DebugCamMode = 0; }); // DebugMenuAddCmd("Cam", "Follow Ped With Bind", []() { DebugCamMode = CCam::MODE_FOLLOW_PED_WITH_BIND; }); // DebugMenuAddCmd("Cam", "Reaction", []() { DebugCamMode = CCam::MODE_REACTION; }); // DebugMenuAddCmd("Cam", "Chris", []() { DebugCamMode = CCam::MODE_CHRIS; }); - // DebugMenuAddCmd("Cam", "Reset Statics", ResetCamStatics); + DebugMenuAddCmd("Cam", "Reset Statics", ResetCamStatics); CTweakVars::AddDBG("Debug"); } From 04345643a06d45c62fe8db2ad2cd1f475e716acd Mon Sep 17 00:00:00 2001 From: aap Date: Sat, 13 Feb 2021 14:54:44 +0100 Subject: [PATCH 061/314] new icon --- src/skel/win/gta3.ico | Bin 2238 -> 161654 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/skel/win/gta3.ico b/src/skel/win/gta3.ico index 2017c8116bb76bf612babe81eb013c2c0250dbc2..d0a4771306eeabea613587a299a94823fd448d70 100644 GIT binary patch literal 161654 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 z
Linux Premake @@ -103,13 +104,6 @@ For Linux using premake, proceed: [Building on Linux](https://github.com/GTAmodd
Linux Conan -Obtain source code. -``` -git clone https://github.com/GTAmodding/re3.git -cd re3 -git submodule init -git submodule update --recursive -``` Install python and conan, and then run build. ``` conan export vendor/librw librw/master@ @@ -128,19 +122,22 @@ For FreeBSD using premake, proceed: [Building on FreeBSD](https://github.com/GTA
Windows -Assuming you have Visual Studio: -- Clone the repo using the argument `--recursive`. +Assuming you have Visual Studio 2015/2017/2019: - Run one of the `premake-vsXXXX.cmd` variants on root folder. -- Open the project via Visual Studio - -**If you use 64-bit D3D9**: We don't ship 64-bit Dx9 SDK. You need to download it from Microsoft if you don't have it(although it should come pre-installed after some Windows version) +- Open the project with Visual Studio. + +Microsoft recently discontinued its downloads of the DX9 SDK. You can download an archived version here: https://archive.org/details/dxsdk_jun10 **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows).
-> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/master/src/core/config.h), you may want to take a look there. i.e. FIX_BUGS define fixes the bugs we've come across. +> :information_source: premake has an `--lto` option if you want the project to be compiled with Link Time Optimization. -> :information_source: **Did you notice librw?** re3 uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. +> :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/master/src/core/config.h), you may want to take a look there. + +> :information_source: re3 uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. + +If you feel the need, you can also use Codewarrior 7 to compile re3 using the supplied codewarrior/re3.mcp project - this requires the original RW33 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. ## Contributing We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. From 4e8f42f6f6ced8f1b581ad912006ea533e90244f Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 14 Feb 2021 03:01:44 +0100 Subject: [PATCH 069/314] 1 more fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cab6fae5..b73bbd1d 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ Sorry for the inconvenience. ## Building from Source -When using premake, you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder if you want executable to be moved there via post-build script. +When using premake, you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder if you want the executable to be moved there via post-build script. Clone the repository with `git clone --recursive https://github.com/GTAmodding/re3.git`. Then `cd re3` into the cloned repository. From 0dd5be788ff41d7acced3f0a5c5b7a024c2f1749 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 14 Feb 2021 03:09:22 +0100 Subject: [PATCH 070/314] 1 more readme fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b73bbd1d..93b69340 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ For FreeBSD using premake, proceed: [Building on FreeBSD](https://github.com/GTA Assuming you have Visual Studio 2015/2017/2019: - Run one of the `premake-vsXXXX.cmd` variants on root folder. -- Open the project with Visual Studio. +- Open build/re3.sln with Visual Studio and compile the solution. Microsoft recently discontinued its downloads of the DX9 SDK. You can download an archived version here: https://archive.org/details/dxsdk_jun10 From 475a4d71d8f706a0e971930bac6415abdf1e15ff Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 14 Feb 2021 09:48:35 +0100 Subject: [PATCH 071/314] optimize performance -> readme to-do --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 93b69340..44621056 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Some of them can be toggled at runtime, some cannot. The following things would be nice to have/do: * Fix physics for high FPS +* Improve performance on lower end devices, especially the OpenGL layer on the Raspberry Pi (if you have experience with this, please get in touch) * Compare code with PS2 code (tedious, no good decompiler) * [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port) * Xbox port (not quite as important) From b2b243e80391f3caf956a8479049c9b57bbc44f9 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 14 Feb 2021 16:02:32 +0100 Subject: [PATCH 072/314] update invite link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 44621056..bf54e9ed 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ re3 logo [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=master) - + ## Intro From 0b6e46b1e420e85a40caf1b2a91e050af51ae4b9 Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sun, 14 Feb 2021 20:11:23 +0300 Subject: [PATCH 073/314] cannon fix --- src/render/WaterCannon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/WaterCannon.cpp b/src/render/WaterCannon.cpp index 5cc9d0b8..3aaa74be 100644 --- a/src/render/WaterCannon.cpp +++ b/src/render/WaterCannon.cpp @@ -127,7 +127,7 @@ void CWaterCannon::Render(void) int16 pointA = m_nCur % NUM_SEGMENTPOINTS; int16 pointB = pointA - 1; - if ( (pointA - 1) < 0 ) + if ( pointB < 0 ) pointB += NUM_SEGMENTPOINTS; bool bInit = false; From be550853033e631e85f122bc459533643c230bac Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 14 Feb 2021 18:07:21 +0300 Subject: [PATCH 074/314] Try to fix streams stop after a while --- src/audio/oal/stream.cpp | 11 ++++++++--- src/audio/oal/stream.h | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 61cd243d..44cc1c93 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -1095,6 +1095,7 @@ void CStream::SetPan(uint8 nPan) m_nPan = nPan; } +// Should only be called if source is stopped void CStream::SetPosMS(uint32 nPos) { if ( !IsOpened() ) return; @@ -1177,12 +1178,16 @@ void CStream::ClearBuffers() alSourceUnqueueBuffers(m_pAlSources[1], 1, &value); } -bool CStream::Setup() +bool CStream::Setup(bool imSureQueueIsEmpty) { if ( IsOpened() ) { alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE); alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE); + if (!imSureQueueIsEmpty) { + SetPlay(false); + ClearBuffers(); + } m_pSoundFile->Seek(0); //SetPosition(0.0f, 0.0f, 0.0f); SetPitch(1.0f); @@ -1286,7 +1291,7 @@ void CStream::Update() // We should wait queue to be cleared to loop track, because position calculation relies on queue. if (m_nLoopCount != 1 && m_bActive && totalBuffers[0] == 0) { - Setup(); + Setup(true); buffersRefilled = FillBuffers() != 0; if (m_nLoopCount != 0) m_nLoopCount--; @@ -1319,7 +1324,7 @@ void CStream::ProviderInit() { if ( m_bReset ) { - if ( Setup() ) + if ( Setup(true) ) { SetPan(m_nPan); SetVolume(m_nVolume); diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h index b3e96809..9a2a2fbe 100644 --- a/src/audio/oal/stream.h +++ b/src/audio/oal/stream.h @@ -100,7 +100,7 @@ public: uint32 GetPosMS(); uint32 GetLengthMS(); - bool Setup(); + bool Setup(bool imSureQueueIsEmpty = false); void Start(); void Stop(); void Update(void); From e35c56ceb3eea3c3ccda1cc4e6645e901787d70a Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 14 Feb 2021 21:09:48 +0300 Subject: [PATCH 075/314] More compatible she-bang line --- printHash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/printHash.sh b/printHash.sh index 71f54466..e7d6f018 100755 --- a/printHash.sh +++ b/printHash.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash > $1 From a666de46aaebc3b76387cef7cc89f141414c38ce Mon Sep 17 00:00:00 2001 From: Steve Wills Date: Sun, 14 Feb 2021 14:06:37 -0500 Subject: [PATCH 076/314] Fix seg fault when configuring controller Since controllerAction can be -2 (line 2105) --- src/core/Frontend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 07b8f996..ae2dd12f 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -2166,7 +2166,7 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 // Print bindings, including seperator (-) between them CFont::SetScale(MENU_X(0.25f), MENU_Y(SMALLESTTEXT_Y_SCALE)); - for (; contSetOrder < MAX_SETORDERS && controllerAction != -1; contSetOrder++) { + for (; contSetOrder < MAX_SETORDERS && controllerAction >= 0; contSetOrder++) { wchar *settingText = ControlsManager.GetControllerSettingTextWithOrderNumber((e_ControllerAction)controllerAction, (eContSetOrder)contSetOrder); if (settingText) { ++bindingsForThisOpt; From a3eae736e71854617b0d0ac2c0f78ce9f2be1c8e Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Mon, 15 Feb 2021 00:58:42 +0300 Subject: [PATCH 077/314] readme update --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bf54e9ed..319326db 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Some of them can be toggled at runtime, some cannot. * Debug menu to do and change various things (Ctrl-M to open) * Debug camera (Ctrl-B to toggle) * Rotatable camera -* Xinput controller support (Windows) +* XInput controller support (Windows) * No loading screens between islands ("map memory usage" in menu) * Skinned ped support (models from Xbox or Mobile) * Rendering @@ -79,7 +79,7 @@ The following things would be nice to have/do: * [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port) * Xbox port (not quite as important) * reverse remaining unused/debug functions -* compare Codewarrior build with original binary for more accurate code (very tedious) +* compare CodeWarrior build with original binary for more accurate code (very tedious) ## Modding @@ -138,7 +138,7 @@ Microsoft recently discontinued its downloads of the DX9 SDK. You can download a > :information_source: re3 uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. -If you feel the need, you can also use Codewarrior 7 to compile re3 using the supplied codewarrior/re3.mcp project - this requires the original RW33 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. +If you feel the need, you can also use CodeWarrior 7 to compile re3 using the supplied codewarrior/re3.mcp project - this requires the original RW33 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. ## Contributing We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. @@ -158,7 +158,8 @@ After a bit of work the project lay dormant for about a year and was picked up again and pushed to github in May 2019. At the time I (aap) had reversed around 10k lines of code and estimated the final game to have around 200-250k. -Others quickly joined the effort and we made very quick progress +Others quickly joined the effort (Fire_Head, shfil, erorcun and Nick007J +in time order, and Serge a bit later) and we made very quick progress throughout the summer of 2019 after which the pace slowed down a bit. From a826091dc920bc521a948f74e75ebd63ab78e976 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 15 Feb 2021 14:24:07 +0100 Subject: [PATCH 078/314] always console for windows Debug builds --- src/skel/glfw/glfw.cpp | 2 ++ src/skel/win/win.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index baed9000..3a958f1a 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1476,7 +1476,9 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER +#ifndef DEBUG if (strstr(cmdLine, "-console")) +#endif { AllocConsole(); freopen("CONIN$", "r", stdin); diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 86b0b214..041cc6c1 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -2021,7 +2021,9 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER +#ifndef DEBUG if (strstr(cmdLine, "-console")) +#endif { AllocConsole(); freopen("CONIN$", "r", stdin); From fec39e87c0e9c7deb9f78d3320e423accbe14561 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 15 Feb 2021 14:57:19 +0100 Subject: [PATCH 079/314] Revert "always console for windows Debug builds" This reverts commit a826091dc920bc521a948f74e75ebd63ab78e976. --- src/skel/glfw/glfw.cpp | 2 -- src/skel/win/win.cpp | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 3a958f1a..baed9000 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1476,9 +1476,7 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER -#ifndef DEBUG if (strstr(cmdLine, "-console")) -#endif { AllocConsole(); freopen("CONIN$", "r", stdin); diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 041cc6c1..86b0b214 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -2021,9 +2021,7 @@ WinMain(HINSTANCE instance, SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE); #ifndef MASTER -#ifndef DEBUG if (strstr(cmdLine, "-console")) -#endif { AllocConsole(); freopen("CONIN$", "r", stdin); From edc77d7f00f021e78b041cbd7c4ca3a8827e1ab4 Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 15 Feb 2021 14:55:31 +0100 Subject: [PATCH 080/314] removed some f suffixes from shaders --- src/extras/shaders/colourfilterIII.frag | 2 +- src/extras/shaders/colourfilterIII_PS.hlsl | 2 +- src/extras/shaders/contrast.frag | 2 +- src/extras/shaders/neoVehicle.vert | 2 +- src/extras/shaders/neoVehicle_VS.hlsl | 2 +- src/extras/shaders/obj/colourfilterIII_frag.inc | 2 +- src/extras/shaders/obj/contrast_frag.inc | 2 +- src/extras/shaders/obj/neoVehicle_vert.inc | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/extras/shaders/colourfilterIII.frag b/src/extras/shaders/colourfilterIII.frag index b41cb94a..95e5d052 100644 --- a/src/extras/shaders/colourfilterIII.frag +++ b/src/extras/shaders/colourfilterIII.frag @@ -17,7 +17,7 @@ main(void) } vec4 color; color.rgb = prev.rgb; - color.a = 1.0f; + color.a = 1.0; FRAGCOLOR(color); } diff --git a/src/extras/shaders/colourfilterIII_PS.hlsl b/src/extras/shaders/colourfilterIII_PS.hlsl index 27f099ef..3d893c3c 100644 --- a/src/extras/shaders/colourfilterIII_PS.hlsl +++ b/src/extras/shaders/colourfilterIII_PS.hlsl @@ -10,6 +10,6 @@ float4 main(in float2 texcoord : TEXCOORD0) : COLOR0 float4 tmp = dst*(1-a) + prev*blurcol*a; prev = saturate(tmp); } - prev.a = 1.0f; + prev.a = 1.0; return prev; } diff --git a/src/extras/shaders/contrast.frag b/src/extras/shaders/contrast.frag index 1b93f6fe..2d394f66 100644 --- a/src/extras/shaders/contrast.frag +++ b/src/extras/shaders/contrast.frag @@ -12,7 +12,7 @@ main(void) vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y)); vec4 color; color.rgb = dst.rgb*u_contrastMult + u_contrastAdd; - color.a = 1.0f; + color.a = 1.0; FRAGCOLOR(color); } diff --git a/src/extras/shaders/neoVehicle.vert b/src/extras/shaders/neoVehicle.vert index f0224ddb..6985a689 100644 --- a/src/extras/shaders/neoVehicle.vert +++ b/src/extras/shaders/neoVehicle.vert @@ -42,7 +42,7 @@ main(void) v_tex1 = uv2.xy*0.5 + 0.5; float b = 1.0 - clamp(dot(viewVec, Normal), 0.0, 1.0); v_reflcolor = vec4(0.0, 0.0, 0.0, 1.0); - v_reflcolor.a = mix(b*b*b*b*b, 1.0f, fresnel)*shininess; + v_reflcolor.a = mix(b*b*b*b*b, 1.0, fresnel)*shininess; for(int i = 0; i < 5; i++) v_reflcolor.rgb += DoDirLightSpec(u_specDir[i].xyz, u_specColor[i].rgb, Normal, viewVec, u_specDir[i].w)*specularity*lightStrength; diff --git a/src/extras/shaders/neoVehicle_VS.hlsl b/src/extras/shaders/neoVehicle_VS.hlsl index de75e745..fb730092 100644 --- a/src/extras/shaders/neoVehicle_VS.hlsl +++ b/src/extras/shaders/neoVehicle_VS.hlsl @@ -52,7 +52,7 @@ VS_out main(in VS_in input) output.TexCoord1 = uv2.xy*0.5 + 0.5; float b = 1.0 - saturate(dot(viewVec, Normal)); output.ReflColor = float4(0.0, 0.0, 0.0, 1.0); - output.ReflColor.a = lerp(b*b*b*b*b, 1.0f, fresnel)*shininess; + output.ReflColor.a = lerp(b*b*b*b*b, 1.0, fresnel)*shininess; //Light mainLight = lights[0]; for(i = 0; i < 5; i++) diff --git a/src/extras/shaders/obj/colourfilterIII_frag.inc b/src/extras/shaders/obj/colourfilterIII_frag.inc index 6fd1935b..05f92785 100644 --- a/src/extras/shaders/obj/colourfilterIII_frag.inc +++ b/src/extras/shaders/obj/colourfilterIII_frag.inc @@ -18,7 +18,7 @@ const char *colourfilterIII_frag_src = " }\n" " vec4 color;\n" " color.rgb = prev.rgb;\n" -" color.a = 1.0f;\n" +" color.a = 1.0;\n" " FRAGCOLOR(color);\n" "}\n" diff --git a/src/extras/shaders/obj/contrast_frag.inc b/src/extras/shaders/obj/contrast_frag.inc index 97f78194..a1ad479f 100644 --- a/src/extras/shaders/obj/contrast_frag.inc +++ b/src/extras/shaders/obj/contrast_frag.inc @@ -13,7 +13,7 @@ const char *contrast_frag_src = " vec4 dst = texture(tex0, vec2(v_tex0.x, 1.0-v_tex0.y));\n" " vec4 color;\n" " color.rgb = dst.rgb*u_contrastMult + u_contrastAdd;\n" -" color.a = 1.0f;\n" +" color.a = 1.0;\n" " FRAGCOLOR(color);\n" "}\n" diff --git a/src/extras/shaders/obj/neoVehicle_vert.inc b/src/extras/shaders/obj/neoVehicle_vert.inc index b7b42622..ebd0ea12 100644 --- a/src/extras/shaders/obj/neoVehicle_vert.inc +++ b/src/extras/shaders/obj/neoVehicle_vert.inc @@ -43,7 +43,7 @@ const char *neoVehicle_vert_src = " v_tex1 = uv2.xy*0.5 + 0.5;\n" " float b = 1.0 - clamp(dot(viewVec, Normal), 0.0, 1.0);\n" " v_reflcolor = vec4(0.0, 0.0, 0.0, 1.0);\n" -" v_reflcolor.a = mix(b*b*b*b*b, 1.0f, fresnel)*shininess;\n" +" v_reflcolor.a = mix(b*b*b*b*b, 1.0, fresnel)*shininess;\n" " for(int i = 0; i < 5; i++)\n" " v_reflcolor.rgb += DoDirLightSpec(u_specDir[i].xyz, u_specColor[i].rgb, Normal, viewVec, u_specDir[i].w)*specularity*lightStrength;\n" From 3baccc9d3e4a2c99a0cce6497b4928536f77919d Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 16 Feb 2021 16:46:09 +0300 Subject: [PATCH 081/314] PR rules --- .github/pull_request_template.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..f458bd43 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,13 @@ +As long as it's not linux/cross-platform skeleton/compatibility layer, all of the code on the repo that's not behind a preprocessor condition(like FIX_BUGS) are **completely** reversed code from original binaries. + +We **don't** accept custom codes, as long as it's not wrapped via preprocessor conditions, or it's linux/cross-platform skeleton/compatibility layer. + +We accept only these kinds of PRs; + +- A new feature that exists in at least one of the GTAs (if it wasn't in III/VC then it doesn't have to be decompilation) +- Game, UI or UX bug fixes (if it's a fix to R* code, it should be behind FIX_BUGS) +- Platform-specific and/or unused code that's not been reversed yet +- Makes reversed code more understandable/accurate, as in "which code would produce this assembly". +- A new cross-platform skeleton/compatibility layer, or improvements to them +- Translation fixes, for languages R* supported/outsourced +- Code that increase maintainability From 179b11151eaa8217fdc13d1568729ebbdbc70305 Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 16 Feb 2021 16:49:42 +0300 Subject: [PATCH 082/314] Add PR rules to Readme --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 319326db..78f61b04 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,20 @@ Microsoft recently discontinued its downloads of the DX9 SDK. You can download a If you feel the need, you can also use CodeWarrior 7 to compile re3 using the supplied codewarrior/re3.mcp project - this requires the original RW33 libraries, and the DX8 SDK. The build is unstable compared to the MSVC builds though, and is mostly meant to serve as a reference. ## Contributing +As long as it's not linux/cross-platform skeleton/compatibility layer, all of the code on the repo that's not behind a preprocessor condition(like FIX_BUGS) are **completely** reversed code from original binaries. + +We **don't** accept custom codes, as long as it's not wrapped via preprocessor conditions, or it's linux/cross-platform skeleton/compatibility layer. + +We accept only these kinds of PRs; + +- A new feature that exists in at least one of the GTAs (if it wasn't in III/VC then it doesn't have to be decompilation) +- Game, UI or UX bug fixes (if it's a fix to original code, it should be behind FIX_BUGS) +- Platform-specific and/or unused code that's not been reversed yet +- Makes reversed code more understandable/accurate, as in "which code would produce this assembly". +- A new cross-platform skeleton/compatibility layer, or improvements to them +- Translation fixes, for languages original game supported +- Code that increase maintainability + We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. Do not use features from C++11 or later. From 49fd99119d28b488e87a273c1723c7c9d2e7a950 Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 16 Feb 2021 17:11:12 +0300 Subject: [PATCH 083/314] Fix rare stream deadlock on Windows --- src/core/CdStream.cpp | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/core/CdStream.cpp b/src/core/CdStream.cpp index da85a238..977f16c2 100644 --- a/src/core/CdStream.cpp +++ b/src/core/CdStream.cpp @@ -14,9 +14,9 @@ struct CdReadInfo void *pBuffer; char field_C; bool bLocked; - bool bInUse; + bool bReading; int32 nStatus; - HANDLE hSemaphore; // used for CdStreamSync + HANDLE pDoneSemaphore; // used for CdStreamSync HANDLE hFile; OVERLAPPED Overlapped; }; @@ -53,9 +53,9 @@ CdStreamInitThread(void) { for ( int32 i = 0; i < gNumChannels; i++ ) { - gpReadInfo[i].hSemaphore = CreateSemaphore(nil, 0, 2, nil); + gpReadInfo[i].pDoneSemaphore = CreateSemaphore(nil, 0, 2, nil); - if ( gpReadInfo[i].hSemaphore == nil ) + if ( gpReadInfo[i].pDoneSemaphore == nil ) { printf("%s: failed to create sync semaphore\n", "cdvd_stream"); ASSERT(0); @@ -183,7 +183,7 @@ CdStreamShutdown(void) CloseHandle(_gCdStreamThread); for ( int32 i = 0; i < gNumChannels; i++ ) - CloseHandle(gpReadInfo[i].hSemaphore); + CloseHandle(gpReadInfo[i].pDoneSemaphore); } LocalFree(gpReadInfo); @@ -213,7 +213,7 @@ CdStreamRead(int32 channel, void *buffer, uint32 offset, uint32 size) if ( _gbCdStreamAsync ) { - if ( pChannel->nSectorsToRead != 0 || pChannel->bInUse ) + if ( pChannel->nSectorsToRead != 0 || pChannel->bReading ) return STREAM_NONE; pChannel->nStatus = STREAM_NONE; @@ -271,7 +271,7 @@ CdStreamGetStatus(int32 channel) if ( _gbCdStreamAsync ) { - if ( pChannel->bInUse ) + if ( pChannel->bReading ) return STREAM_READING; if ( pChannel->nSectorsToRead != 0 ) @@ -321,12 +321,21 @@ CdStreamSync(int32 channel) { pChannel->bLocked = true; - ASSERT( pChannel->hSemaphore != nil ); + ASSERT( pChannel->pDoneSemaphore != nil ); - WaitForSingleObject(pChannel->hSemaphore, INFINITE); + // Deadlock fix 1 +#ifdef FIX_BUGS + // This is while loop on Posix streamer, for spurious wakeups + if (pChannel->bLocked && pChannel->nSectorsToRead != 0){ + WaitForSingleObject(pChannel->pDoneSemaphore, INFINITE); + } + pChannel->bLocked = false; +#else + WaitForSingleObject(pChannel->pDoneSemaphore, INFINITE); +#endif } - pChannel->bInUse = false; + pChannel->bReading = false; return pChannel->nStatus; } @@ -398,7 +407,7 @@ WINAPI CdStreamThread(LPVOID lpThreadParameter) CdReadInfo *pChannel = &gpReadInfo[channel]; ASSERT( pChannel != nil ); - pChannel->bInUse = true; + pChannel->bReading = true; if ( pChannel->nStatus == STREAM_NONE ) { @@ -455,11 +464,15 @@ WINAPI CdStreamThread(LPVOID lpThreadParameter) if ( pChannel->bLocked ) { - ASSERT( pChannel->hSemaphore != nil ); - ReleaseSemaphore(pChannel->hSemaphore, 1, NULL); + ASSERT( pChannel->pDoneSemaphore != nil ); + // Deadlock fix 2 +#ifdef FIX_BUGS + pChannel->bLocked = 0; +#endif + ReleaseSemaphore(pChannel->pDoneSemaphore, 1, NULL); } - pChannel->bInUse = false; + pChannel->bReading = false; } } From 5ee4931fb60e965cff48fdc182c161807ce451fc Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 16 Feb 2021 18:26:44 +0300 Subject: [PATCH 084/314] Fix FindClose->closedir --- src/skel/crossplatform.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index e5f4c7ba..710a7702 100644 --- a/src/skel/crossplatform.h +++ b/src/skel/crossplatform.h @@ -132,7 +132,12 @@ void GetLocalTime_CP(SYSTEMTIME* out); typedef void* HANDLE; #define INVALID_HANDLE_VALUE NULL -#define FindClose(h) closedir((DIR*)h) +#define FindClose(h) \ + do { \ + if (h != nil) \ + closedir((DIR*)h); \ + } while(0) + #define LOCALE_USER_DEFAULT 0 #define DATE_SHORTDATE 0 From 20d9498fdba8a2a574f0e819d8fab4db4b467bcb Mon Sep 17 00:00:00 2001 From: Steve Wills Date: Tue, 16 Feb 2021 10:55:11 -0500 Subject: [PATCH 085/314] Put fix behind ifdef --- src/core/Frontend.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index ae2dd12f..39d7430e 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -2166,7 +2166,11 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 // Print bindings, including seperator (-) between them CFont::SetScale(MENU_X(0.25f), MENU_Y(SMALLESTTEXT_Y_SCALE)); +#ifdef (FIX_BUGS) for (; contSetOrder < MAX_SETORDERS && controllerAction >= 0; contSetOrder++) { +#else + for (; contSetOrder < MAX_SETORDERS && controllerAction != -1; contSetOrder++) { +#endif wchar *settingText = ControlsManager.GetControllerSettingTextWithOrderNumber((e_ControllerAction)controllerAction, (eContSetOrder)contSetOrder); if (settingText) { ++bindingsForThisOpt; From e482ab629218dba31c95e1bdc13e0296a3aa53ef Mon Sep 17 00:00:00 2001 From: Steve Wills Date: Tue, 16 Feb 2021 11:13:20 -0500 Subject: [PATCH 086/314] Fix mistake --- src/core/Frontend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 39d7430e..9c6d6f24 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -2166,7 +2166,7 @@ CMenuManager::DrawControllerBound(int32 yStart, int32 xStart, int32 unused, int8 // Print bindings, including seperator (-) between them CFont::SetScale(MENU_X(0.25f), MENU_Y(SMALLESTTEXT_Y_SCALE)); -#ifdef (FIX_BUGS) +#ifdef FIX_BUGS for (; contSetOrder < MAX_SETORDERS && controllerAction >= 0; contSetOrder++) { #else for (; contSetOrder < MAX_SETORDERS && controllerAction != -1; contSetOrder++) { From 19b39f49fa17ecefe925a7bf6ecc6a904fe77428 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Tue, 16 Feb 2021 18:12:21 +0100 Subject: [PATCH 087/314] Fix buffer overflow on re3_sem_open/close --- src/core/CdStreamPosix.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp index 50d823d2..30fe06a0 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -57,7 +57,7 @@ re3_sem_close(sem_t* sem) sem_t* re3_sem_open(const char* format, ...) { - char semName[20]; + char semName[21]; va_list va; va_start(va, format); vsprintf(semName, format, va); @@ -71,7 +71,7 @@ re3_sem_close(sem_t* sem, const char* format, ...) { sem_close(sem); - char semName[20]; + char semName[21]; va_list va; va_start(va, format); vsprintf(semName, format, va); From c488ce166e5992a498f5a6e57eb1f148360e807e Mon Sep 17 00:00:00 2001 From: aap Date: Wed, 17 Feb 2021 11:02:57 +0100 Subject: [PATCH 088/314] add hires particle.txd --- gamefiles/models/particle.txd | Bin 0 -> 4921000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 gamefiles/models/particle.txd diff --git a/gamefiles/models/particle.txd b/gamefiles/models/particle.txd new file mode 100644 index 0000000000000000000000000000000000000000..a9d2a5ca7321003496fda5aade956e489e5ef71b GIT binary patch literal 4921000 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�bbgymq$=mh{mnARn6?X3* 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%0D>L-uh{ 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%0A_ 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%0A~KzSBOw;hr@Su?{N_ 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�u`hGMtT-t==c> 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ǯBnSUH91IufO<~E(c8f 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

+R4#uz?C5f>4f$c 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⁢eOp!ERh8D!YV9Hf8caxtgL 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 UQ~!VWH~;(ZPk;K`zu)se199w=i2wiq literal 0 HcmV?d00001 From b4c96bca93d76889ee3931914be4a228803ffa1c Mon Sep 17 00:00:00 2001 From: aap Date: Wed, 17 Feb 2021 13:12:33 +0100 Subject: [PATCH 089/314] update librw; get rid of glew --- premake5.lua | 24 ++++++------------------ vendor/librw | 2 +- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/premake5.lua b/premake5.lua index d4459f94..09887c17 100644 --- a/premake5.lua +++ b/premake5.lua @@ -1,10 +1,3 @@ -newoption { - trigger = "glewdir", - value = "PATH", - description = "Directory of GLEW", - default = "vendor/glew-2.1.0" -} - newoption { trigger = "glfwdir64", value = "PATH", @@ -158,7 +151,6 @@ workspace "re3" filter "platforms:*librw_gl3_glfw*" defines { "RW_GL3" } - includedirs { path.join(_OPTIONS["glewdir"], "include") } if(not _OPTIONS["with-librw"]) then libdirs { path.join(Librw, "lib/%{getsys(cfg.system)}-%{getarch(cfg.architecture)}-gl3/%{cfg.buildcfg}") } end @@ -169,9 +161,6 @@ workspace "re3" filter "platforms:*amd64-librw_gl3_glfw*" includedirs { path.join(_OPTIONS["glfwdir64"], "include") } - filter "platforms:win*librw_gl3_glfw*" - defines { "GLEW_STATIC" } - filter {} function setpaths (gamepath, exepath) @@ -196,6 +185,7 @@ project "librw" targetdir(path.join(Librw, "lib/%{cfg.platform}/%{cfg.buildcfg}")) files { path.join(Librw, "src/*.*") } files { path.join(Librw, "src/*/*.*") } + files { path.join(Librw, "src/gl/*/*.*") } filter { "platforms:*x86*" } architecture "x86" @@ -395,25 +385,23 @@ project "re3" libdirs { "sdk/dx8sdk/lib" } filter "platforms:win-x86*gl3_glfw*" - libdirs { path.join(_OPTIONS["glewdir"], "lib/Release/Win32") } libdirs { path.join(_OPTIONS["glfwdir32"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) } - links { "opengl32", "glew32s", "glfw3" } + links { "opengl32", "glfw3" } filter "platforms:win-amd64*gl3_glfw*" - libdirs { path.join(_OPTIONS["glewdir"], "lib/Release/x64") } libdirs { path.join(_OPTIONS["glfwdir64"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) } - links { "opengl32", "glew32s", "glfw3" } + links { "opengl32", "glfw3" } filter "platforms:linux*gl3_glfw*" - links { "GL", "GLEW", "glfw" } + links { "GL", "glfw" } filter "platforms:bsd*gl3_glfw*" - links { "GL", "GLEW", "glfw", "sysinfo" } + links { "GL", "glfw", "sysinfo" } includedirs { "/usr/local/include" } libdirs { "/usr/local/lib" } filter "platforms:macosx*gl3_glfw*" - links { "GLEW", "glfw" } + links { "glfw" } linkoptions { "-framework OpenGL" } includedirs { "/opt/local/include" } includedirs { "/usr/local/include" } diff --git a/vendor/librw b/vendor/librw index 41ae7b9b..f49c707d 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 41ae7b9b61c6736b34269df0f0350d1b5bcff4df +Subproject commit f49c707db33bd060fdd17ebb004a658280817545 From 7db2df33e83b3a0baf38f2179b3dfda9bf233e45 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 17 Feb 2021 13:33:52 +0100 Subject: [PATCH 090/314] fix premake workflows --- .github/workflows/re3_msvc_amd64.yml | 12 +----------- .github/workflows/re3_msvc_x86.yml | 12 +----------- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/.github/workflows/re3_msvc_amd64.yml b/.github/workflows/re3_msvc_amd64.yml index 78994650..29ad024c 100644 --- a/.github/workflows/re3_msvc_amd64.yml +++ b/.github/workflows/re3_msvc_amd64.yml @@ -6,13 +6,9 @@ on: release: types: published env: - GLEW_VER: "2.1.0" GLFW_VER: "3.3.2" - GLEW_BASE: "glew-2.1.0" GLFW_BASE: "glfw-3.3.2.bin.WIN64" - GLEW_FILE: "glew-2.1.0-win32.zip" GLFW_FILE: "glfw-3.3.2.bin.WIN64.zip" - GLEW_URL: "https://github.com/nigels-com/glew/releases/download/glew-2.1.0/glew-2.1.0-win32.zip" GLFW_URL: "https://github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.bin.WIN64.zip" jobs: build: @@ -27,11 +23,6 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'true' - - if: ${{ matrix.platform }} == "win-amd64-librw_gl3_glfw-mss" - name: Download glew - uses: carlosperate/download-file-action@v1.0.3 - with: - file-url: ${{env.GLEW_URL}} - if: ${{ matrix.platform }} == "win-amd64-librw_gl3_glfw-mss" name: Download glfw uses: carlosperate/download-file-action@v1.0.3 @@ -40,11 +31,10 @@ jobs: - if: ${{ matrix.platform }} == "win-amd64-librw_gl3_glfw-mss" name: Unpack archives run: | - 7z x ${{env.GLEW_FILE}} 7z x ${{env.GLFW_FILE}} - name: Configure build run: | - ./premake5 vs2019 --with-librw --glewdir=${{env.GLEW_BASE}} --glfwdir64=${{env.GLFW_BASE}} + ./premake5 vs2019 --with-librw --glfwdir64=${{env.GLFW_BASE}} - name: Build run: | msbuild -m build/re3.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} diff --git a/.github/workflows/re3_msvc_x86.yml b/.github/workflows/re3_msvc_x86.yml index ad60ce43..087b0d19 100644 --- a/.github/workflows/re3_msvc_x86.yml +++ b/.github/workflows/re3_msvc_x86.yml @@ -6,13 +6,9 @@ on: release: types: published env: - GLEW_VER: "2.1.0" GLFW_VER: "3.3.2" - GLEW_BASE: "glew-2.1.0" GLFW_BASE: "glfw-3.3.2.bin.WIN32" - GLEW_FILE: "glew-2.1.0-win32.zip" GLFW_FILE: "glfw-3.3.2.bin.WIN32.zip" - GLEW_URL: "https://github.com/nigels-com/glew/releases/download/glew-2.1.0/glew-2.1.0-win32.zip" GLFW_URL: "https://github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.bin.WIN32.zip" jobs: build: @@ -27,11 +23,6 @@ jobs: - uses: actions/checkout@v2 with: submodules: 'true' - - if: ${{ matrix.platform }} == "win-x86-librw_gl3_glfw-mss" - name: Download glew - uses: carlosperate/download-file-action@v1.0.3 - with: - file-url: ${{env.GLEW_URL}} - if: ${{ matrix.platform }} == "win-x86-librw_gl3_glfw-mss" name: Download glfw uses: carlosperate/download-file-action@v1.0.3 @@ -40,11 +31,10 @@ jobs: - if: ${{ matrix.platform }} == "win-x86-librw_gl3_glfw-mss" name: Unpack archives run: | - 7z x ${{env.GLEW_FILE}} 7z x ${{env.GLFW_FILE}} - name: Configure build run: | - ./premake5 vs2019 --with-librw --glewdir=${{env.GLEW_BASE}} --glfwdir32=${{env.GLFW_BASE}} + ./premake5 vs2019 --with-librw --glfwdir32=${{env.GLFW_BASE}} - name: Build run: | msbuild -m build/re3.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} From 53e3bc6092c4153255f462b99eb4cc88f4a4ba63 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 17 Feb 2021 13:58:31 +0100 Subject: [PATCH 091/314] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index f49c707d..a60b7a9a 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit f49c707db33bd060fdd17ebb004a658280817545 +Subproject commit a60b7a9a57e3106efaa435eba20aec3af2ac26fe From ee6b7152c7d4bbadf592f9cb5654cea70776b686 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 17 Feb 2021 15:04:53 +0200 Subject: [PATCH 092/314] Fix endless vibration in pause menu --- src/core/Frontend.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 9c6d6f24..7d378e7f 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -5696,6 +5696,9 @@ CMenuManager::SwitchMenuOnAndOff() || m_bShutDownFrontEndRequested || m_bStartUpFrontEndRequested) { m_bMenuActive = !m_bMenuActive; +#ifdef FIX_BUGS + CPad::StopPadsShaking(); +#endif if (m_bShutDownFrontEndRequested) m_bMenuActive = false; From 6227aee863d84f567d2b9bee0a10fbd4a4e791d8 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 17 Feb 2021 14:34:38 +0100 Subject: [PATCH 093/314] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index a60b7a9a..c2defffc 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit a60b7a9a57e3106efaa435eba20aec3af2ac26fe +Subproject commit c2defffca391a865af77146dffe762419066af74 From 68cc5fe9655cfabd44ca21275e6d59d0b1d8064d Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Thu, 18 Feb 2021 00:50:39 +0300 Subject: [PATCH 094/314] remove particle --- gamefiles/models/particle.txd | Bin 4921000 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 gamefiles/models/particle.txd diff --git a/gamefiles/models/particle.txd b/gamefiles/models/particle.txd deleted file mode 100644 index a9d2a5ca7321003496fda5aade956e489e5ef71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4921000 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�bbgymq$=mh{mnARn6?X3* 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%0D>L-uh{ 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%0A_ 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%0A~KzSBOw;hr@Su?{N_ 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�u`hGMtT-t==c> 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ǯBnSUH91IufO<~E(c8f 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

+R4#uz?C5f>4f$c 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⁢eOp!ERh8D!YV9Hf8caxtgL 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 UQ~!VWH~;(ZPk;K`zu)se199w=i2wiq From c3af33f97d7e5c6e72439d8524ffdcb965c42e53 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 18 Feb 2021 01:19:16 +0100 Subject: [PATCH 095/314] add ps2 particle.txd --- gamefiles/models/particle.txd | Bin 0 -> 414968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 gamefiles/models/particle.txd diff --git a/gamefiles/models/particle.txd b/gamefiles/models/particle.txd new file mode 100644 index 0000000000000000000000000000000000000000..e908ba4ec8da63a5cad49d25eb71702b3d33fef2 GIT binary patch literal 414968 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

L7> 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%0Aa)h7R4Y(A_=Ax6ih=p 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%0AL_OmtoQ`@Y4 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 Date: Thu, 18 Feb 2021 01:58:36 +0100 Subject: [PATCH 096/314] update librw; gl cleanup --- src/extras/custompipes_gl.cpp | 84 ++++++----------------------------- vendor/librw | 2 +- 2 files changed, 15 insertions(+), 71 deletions(-) diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index f1cbfc38..040bf686 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -91,13 +91,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); -#ifdef RW_GL_USE_VAOS - glBindVertexArray(header->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo); - glBindBuffer(GL_ARRAY_BUFFER, header->vbo); - setAttribPointers(header->attribDesc, header->numAttribs); -#endif + setupVertexInput(header); InstanceData *inst = header->inst; rw::int32 n = header->numMeshes; @@ -137,9 +131,7 @@ vehicleRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) SetRenderState(SRCBLEND, BLENDSRCALPHA); setTexture(1, nil); -#ifndef RW_GL_USE_VAOS - disableAttribPointers(header->attribDesc, header->numAttribs); -#endif + teardownVertexInput(header); } void @@ -210,13 +202,7 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); -#ifdef RW_GL_USE_VAOS - glBindVertexArray(header->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo); - glBindBuffer(GL_ARRAY_BUFFER, header->vbo); - setAttribPointers(header->attribDesc, header->numAttribs); -#endif + setupVertexInput(header); InstanceData *inst = header->inst; rw::int32 n = header->numMeshes; @@ -254,9 +240,7 @@ worldRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) inst++; } setTexture(1, nil); -#ifndef RW_GL_USE_VAOS - disableAttribPointers(header->attribDesc, header->numAttribs); -#endif + teardownVertexInput(header); } void @@ -318,13 +302,7 @@ glossRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) Material *m; -#ifdef RW_GL_USE_VAOS - glBindVertexArray(header->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo); - glBindBuffer(GL_ARRAY_BUFFER, header->vbo); - setAttribPointers(header->attribDesc, header->numAttribs); -#endif + setupVertexInput(header); InstanceData *inst = header->inst; rw::int32 n = header->numMeshes; @@ -367,9 +345,7 @@ glossRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) SetRenderState(SRCBLEND, BLENDSRCALPHA); SetRenderState(DESTBLEND, BLENDINVSRCALPHA); -#ifndef RW_GL_USE_VAOS - disableAttribPointers(header->attribDesc, header->numAttribs); -#endif + teardownVertexInput(header); } void @@ -453,13 +429,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); -#ifdef RW_GL_USE_VAOS - glBindVertexArray(header->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo); - glBindBuffer(GL_ARRAY_BUFFER, header->vbo); - setAttribPointers(header->attribDesc, header->numAttribs); -#endif + setupVertexInput(header); InstanceData *inst = header->inst; rw::int32 n = header->numMeshes; @@ -482,9 +452,7 @@ rimSkinRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) drawInst(header, inst); inst++; } -#ifndef RW_GL_USE_VAOS - disableAttribPointers(header->attribDesc, header->numAttribs); -#endif + teardownVertexInput(header); } static void @@ -504,13 +472,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) setWorldMatrix(atomic->getFrame()->getLTM()); lightingCB(atomic); -#ifdef RW_GL_USE_VAOS - glBindVertexArray(header->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, header->ibo); - glBindBuffer(GL_ARRAY_BUFFER, header->vbo); - setAttribPointers(header->attribDesc, header->numAttribs); -#endif + setupVertexInput(header); InstanceData *inst = header->inst; rw::int32 n = header->numMeshes; @@ -531,9 +493,7 @@ rimRenderCB(rw::Atomic *atomic, rw::gl3::InstanceDataHeader *header) drawInst(header, inst); inst++; } -#ifndef RW_GL_USE_VAOS - disableAttribPointers(header->attribDesc, header->numAttribs); -#endif + teardownVertexInput(header); } void @@ -696,13 +656,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) if(!setupDone){ defaultShader->use(); setWorldMatrix(&building->matrix); -#ifdef RW_GL_USE_VAOS - glBindVertexArray(building->instHeader->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, building->instHeader->ibo); - glBindBuffer(GL_ARRAY_BUFFER, building->instHeader->vbo); - setAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs); -#endif + setupVertexInput(building->instHeader); setLights(&lights); setupDone = true; } @@ -713,9 +667,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) drawInst(building->instHeader, inst); } -#ifndef RW_GL_USE_VAOS - disableAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs); -#endif + teardownVertexInput(building->instHeader); if(defer) numBlendInsts[pass]++; } @@ -754,13 +706,7 @@ RenderBlendPass(int pass) for(i = 0; i < numBlendInsts[pass]; i++){ BuildingInst *building = &blendInsts[pass][i]; -#ifdef RW_GL_USE_VAOS - glBindVertexArray(building->instHeader->vao); -#else - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, building->instHeader->ibo); - glBindBuffer(GL_ARRAY_BUFFER, building->instHeader->vbo); - setAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs); -#endif + setupVertexInput(building->instHeader); setWorldMatrix(&building->matrix); if(building->lighting) lights.ambient = pAmbient->color; @@ -782,9 +728,7 @@ RenderBlendPass(int pass) drawInst(building->instHeader, inst); } -#ifndef RW_GL_USE_VAOS - disableAttribPointers(building->instHeader->attribDesc, building->instHeader->numAttribs); -#endif + teardownVertexInput(building->instHeader); } } } diff --git a/vendor/librw b/vendor/librw index c2defffc..576d211c 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit c2defffca391a865af77146dffe762419066af74 +Subproject commit 576d211cbd76bfef43f33f2f837c0f392dbe86fe From 1a429bb3c40f2f407a29001b743486e51a3896b8 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 18 Feb 2021 11:10:11 +0100 Subject: [PATCH 097/314] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index 576d211c..65c619b3 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 576d211cbd76bfef43f33f2f837c0f392dbe86fe +Subproject commit 65c619b3e7dcec6f5dbd05d3203b530d667ba90f From 9db87fc6365ee76f3281ca2474f92ec4f155920d Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 18 Feb 2021 12:21:47 +0100 Subject: [PATCH 098/314] add debug render groups --- src/control/Pickups.cpp | 4 ++++ src/core/main.cpp | 16 ++++++++++++++++ src/core/main.h | 6 ++++++ src/extras/postfx.cpp | 4 ++++ src/render/Antennas.cpp | 4 ++++ src/render/Clouds.cpp | 13 +++++++++++++ src/render/Coronas.cpp | 8 ++++++++ src/render/Fluff.cpp | 2 ++ src/render/Glass.cpp | 4 ++++ src/render/MBlur.cpp | 3 +++ src/render/Particle.cpp | 5 +++++ src/render/PointLights.cpp | 4 ++++ src/render/Renderer.cpp | 28 ++++++++++++++++++++++++++++ src/render/Rubbish.cpp | 4 ++++ src/render/Shadows.cpp | 8 ++++++++ src/render/Skidmarks.cpp | 4 ++++ src/render/SpecialFX.cpp | 2 ++ src/render/WaterCannon.cpp | 2 ++ src/render/WaterLevel.cpp | 3 +++ src/rw/VisibilityPlugins.cpp | 3 +++ src/weapons/WeaponEffects.cpp | 5 +++++ 21 files changed, 132 insertions(+) diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 96a8a670..be9f734d 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -1330,6 +1330,8 @@ CPacManPickups::Render() { if (!bPMActive) return; + PUSH_RENDERGROUP("CPacManPickups::Render"); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); @@ -1363,6 +1365,8 @@ CPacManPickups::Render() RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, FALSE); + + POP_RENDERGROUP(); } void diff --git a/src/core/main.cpp b/src/core/main.cpp index b47f5d37..5eccf759 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1313,6 +1313,7 @@ if(gbRenderEverythingBarRoads) void RenderScene_new(void) { + PUSH_RENDERGROUP("RenderScene_new"); CClouds::Render(); DoRWRenderHorizon(); @@ -1320,6 +1321,7 @@ RenderScene_new(void) DefinedState(); // CMattRenderer::ResetRenderStates // moved CRenderer::RenderBoats to before transparent water + POP_RENDERGROUP(); } // TODO @@ -1327,6 +1329,7 @@ bool FredIsInFirstPersonCam(void) { return false; } void RenderEffects_new(void) { + PUSH_RENDERGROUP("RenderEffects_new"); CShadows::RenderStaticShadows(); // CRenderer::GenerateEnvironmentMap CShadows::RenderStoredShadows(); @@ -1369,6 +1372,7 @@ if(gbRenderFadingInEntities) CPointLights::RenderFogEffect(); CMovingThings::Render(); CRenderer::RenderFirstPersonVehicle(); + POP_RENDERGROUP(); } #endif @@ -1381,6 +1385,7 @@ RenderScene(void) return; } #endif + PUSH_RENDERGROUP("RenderScene"); CClouds::Render(); DoRWRenderHorizon(); CRenderer::RenderRoads(); @@ -1395,11 +1400,13 @@ RenderScene(void) CRenderer::RenderVehiclesButNotBoats(); #endif CWeather::RenderRainStreaks(); + POP_RENDERGROUP(); } void RenderDebugShit(void) { + PUSH_RENDERGROUP("RenderDebugShit"); CTheScripts::RenderTheScriptDebugLines(); #ifndef FINAL if(gbShowCollisionLines) @@ -1408,6 +1415,7 @@ RenderDebugShit(void) CDebug::DrawLines(); DefinedState(); #endif + POP_RENDERGROUP(); } void @@ -1419,6 +1427,7 @@ RenderEffects(void) return; } #endif + PUSH_RENDERGROUP("RenderEffects"); CGlass::Render(); CWaterCannons::Render(); CSpecialFX::Render(); @@ -1434,11 +1443,13 @@ RenderEffects(void) CPointLights::RenderFogEffect(); CMovingThings::Render(); CRenderer::RenderFirstPersonVehicle(); + POP_RENDERGROUP(); } void Render2dStuff(void) { + PUSH_RENDERGROUP("Render2dStuff"); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); @@ -1504,6 +1515,7 @@ Render2dStuff(void) #ifdef DEBUGMENU DebugMenuRender(); #endif + POP_RENDERGROUP(); } void @@ -1511,21 +1523,25 @@ RenderMenus(void) { if (FrontEndMenuManager.m_bMenuActive) { + PUSH_RENDERGROUP("RenderMenus"); PUSH_MEMID(MEMID_FRONTEND); FrontEndMenuManager.DrawFrontEnd(); POP_MEMID(); + POP_RENDERGROUP(); } } void Render2dStuffAfterFade(void) { + PUSH_RENDERGROUP("Render2dStuffAfterFade"); #ifndef MASTER DisplayGameDebugText(); #endif CHud::DrawAfterFade(); CFont::DrawFonts(); + POP_RENDERGROUP(); } void diff --git a/src/core/main.h b/src/core/main.h index 9f181101..787d4f52 100644 --- a/src/core/main.h +++ b/src/core/main.h @@ -1,5 +1,11 @@ #pragma once +#if defined(RW_OPENGL) +#define PUSH_RENDERGROUP(str) glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, str) +#define POP_RENDERGROUP() glPopDebugGroup() +#else +#endif + struct GlobalScene { RpWorld *world; diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp index b94d245d..03d4833e 100644 --- a/src/extras/postfx.cpp +++ b/src/extras/postfx.cpp @@ -7,6 +7,7 @@ #error "Need librw for EXTENDED_COLOURFILTER" #endif +#include "main.h" #include "RwHelper.h" #include "Camera.h" #include "MBlur.h" @@ -407,6 +408,7 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu break; } + PUSH_RENDERGROUP("CPostFX::Render"); if(pFrontBuffer == nil) Open(cam); assert(pFrontBuffer); @@ -464,6 +466,8 @@ CPostFX::Render(RwCamera *cam, uint32 red, uint32 green, uint32 blue, uint32 blu bJustInitialised = false; }else bJustInitialised = true; + + POP_RENDERGROUP(); } #endif diff --git a/src/render/Antennas.cpp b/src/render/Antennas.cpp index 452069a0..5e30aca2 100644 --- a/src/render/Antennas.cpp +++ b/src/render/Antennas.cpp @@ -1,5 +1,6 @@ #include "common.h" +#include "main.h" #include "Antennas.h" CAntenna CAntennas::aAntennas[NUMANTENNAS]; @@ -70,6 +71,7 @@ CAntennas::Render(void) { int i, j; + PUSH_RENDERGROUP("CAntennas::Render"); for(i = 0; i < NUMANTENNAS; i++){ if(!aAntennas[i].active) continue; @@ -101,6 +103,8 @@ CAntennas::Render(void) } RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); + + POP_RENDERGROUP(); } void diff --git a/src/render/Clouds.cpp b/src/render/Clouds.cpp index 684f5d74..957844a5 100644 --- a/src/render/Clouds.cpp +++ b/src/render/Clouds.cpp @@ -1,5 +1,6 @@ #include "common.h" +#include "main.h" #include "Sprite.h" #include "Sprite2d.h" #include "General.h" @@ -123,6 +124,8 @@ CClouds::Render(void) RwV3d screenpos; RwV3d worldpos; + PUSH_RENDERGROUP("CClouds::Render"); + CCoronas::SunBlockedByClouds = false; RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); @@ -310,6 +313,8 @@ CClouds::Render(void) RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); + + POP_RENDERGROUP(); } bool @@ -322,6 +327,8 @@ void CClouds::RenderBackground(int16 topred, int16 topgreen, int16 topblue, int16 botred, int16 botgreen, int16 botblue, int16 alpha) { + PUSH_RENDERGROUP("CClouds::RenderBackground"); + CVector left = TheCamera.GetRight(); float c = left.Magnitude2D(); if(c > 1.0f) @@ -422,6 +429,8 @@ CClouds::RenderBackground(int16 topred, int16 topgreen, int16 topblue, ms_colourBottom.g = (topgreen + 2 * botgreen) / 3; ms_colourBottom.b = (topblue + 2 * botblue) / 3; } + + POP_RENDERGROUP(); } void @@ -436,6 +445,8 @@ CClouds::RenderHorizon(void) if(ms_horizonZ > SCREEN_HEIGHT) return; + PUSH_RENDERGROUP("CClouds::RenderHorizon"); + float z1 = Min(ms_horizonZ + SMALLSTRIPHEIGHT, SCREEN_HEIGHT); CSprite2d::DrawRectXLU(CRect(0, ms_horizonZ, SCREEN_WIDTH, z1), ms_colourBottom, ms_colourBottom, ms_colourTop, ms_colourTop); @@ -450,4 +461,6 @@ CClouds::RenderHorizon(void) z2 = Min(z2, SCREEN_HEIGHT); CSprite2d::DrawRect(CRect(0, z1, SCREEN_WIDTH, z2), ms_colourBottom, ms_colourBottom, ms_colourTop, ms_colourTop); + + POP_RENDERGROUP(); } diff --git a/src/render/Coronas.cpp b/src/render/Coronas.cpp index 32957259..68e57b16 100644 --- a/src/render/Coronas.cpp +++ b/src/render/Coronas.cpp @@ -235,6 +235,8 @@ CCoronas::Render(void) int i, j; int screenw, screenh; + PUSH_RENDERGROUP("CCoronas::Render"); + screenw = RwRasterGetWidth(RwCameraGetRaster(Scene.camera)); screenh = RwRasterGetHeight(RwCameraGetRaster(Scene.camera)); @@ -418,6 +420,8 @@ CCoronas::Render(void) RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + + POP_RENDERGROUP(); } void @@ -428,6 +432,8 @@ CCoronas::RenderReflections(void) CEntity *entity; if(CWeather::WetRoads > 0.0f){ + PUSH_RENDERGROUP("CCoronas::RenderReflections"); + #ifdef FIX_BUGS CSprite::InitSpriteBuffer(); #endif @@ -505,6 +511,8 @@ CCoronas::RenderReflections(void) RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); + + POP_RENDERGROUP(); }else{ for(i = 0; i < NUMCORONAS; i++) aCoronas[i].renderReflection = false; diff --git a/src/render/Fluff.cpp b/src/render/Fluff.cpp index c76d6109..c4cfe7f7 100644 --- a/src/render/Fluff.cpp +++ b/src/render/Fluff.cpp @@ -189,6 +189,7 @@ void CMovingThings::Update() void CMovingThings::Render() { int i; + PUSH_RENDERGROUP("CMovingThings::Render"); for (i = 0; i < ARRAY_SIZE(aScrollBars); ++i) { if (aScrollBars[i].IsVisible()) @@ -204,6 +205,7 @@ void CMovingThings::Render() if (aDigitalClocks[i].IsVisible()) aDigitalClocks[i].Render(); } + POP_RENDERGROUP(); } // ---------- CMovingThing ---------- diff --git a/src/render/Glass.cpp b/src/render/Glass.cpp index 3b6fbd46..ede06ba1 100644 --- a/src/render/Glass.cpp +++ b/src/render/Glass.cpp @@ -261,6 +261,8 @@ CGlass::Render(void) RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void *)rwBLENDONE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)TRUE); + PUSH_RENDERGROUP("CGlass::Render"); + for ( int32 i = 0; i < NUM_GLASSPANES; i++ ) { if ( aGlassPanes[i].m_bActive ) @@ -270,6 +272,8 @@ CGlass::Render(void) for ( uint32 i = 0; i < NumGlassEntities; i++ ) RenderEntityInGlass(apEntitiesToBeRendered[i]); + POP_RENDERGROUP(); + NumGlassEntities = 0; RenderHiLightPolys(); diff --git a/src/render/MBlur.cpp b/src/render/MBlur.cpp index a7d07ad9..8e5fba2a 100644 --- a/src/render/MBlur.cpp +++ b/src/render/MBlur.cpp @@ -6,6 +6,7 @@ #include #endif +#include "main.h" #include "RwHelper.h" #include "Camera.h" #include "MBlur.h" @@ -208,6 +209,7 @@ CMBlur::MotionBlurRender(RwCamera *cam, uint32 red, uint32 green, uint32 blue, u #ifdef EXTENDED_COLOURFILTER CPostFX::Render(cam, red, green, blue, blur, type, bluralpha); #else + PUSH_RENDERGROUP("CMBlur::MotionBlurRender"); RwRGBA color = { (RwUInt8)red, (RwUInt8)green, (RwUInt8)blue, (RwUInt8)blur }; #ifdef GTA_PS2 if( pFrontBuffer ) @@ -227,6 +229,7 @@ CMBlur::MotionBlurRender(RwCamera *cam, uint32 red, uint32 green, uint32 blue, u OverlayRender(cam, nil, color, type, bluralpha); } #endif + POP_RENDERGROUP(); #endif } diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index 6c643caf..07e80abe 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -1,5 +1,6 @@ #include "common.h" +#include "main.h" #include "General.h" #include "Timer.h" #include "TxdStore.h" @@ -1477,6 +1478,8 @@ void CParticle::Update() void CParticle::Render() { + PUSH_RENDERGROUP("CParticle::Render"); + RwRenderStateSet(rwRENDERSTATETEXTUREADDRESS, (void *)rwTEXTUREADDRESSWRAP); RwRenderStateSet(rwRENDERSTATETEXTUREPERSPECTIVE, (void *)TRUE); RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE); @@ -1794,6 +1797,8 @@ void CParticle::Render() RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void *)TRUE); RwRenderStateSet(rwRENDERSTATESRCBLEND, (void *)rwBLENDSRCALPHA); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void *)rwBLENDINVSRCALPHA); + + POP_RENDERGROUP(); } void CParticle::RemovePSystem(tParticleType type) diff --git a/src/render/PointLights.cpp b/src/render/PointLights.cpp index 6f0b4d46..84ac4ab2 100644 --- a/src/render/PointLights.cpp +++ b/src/render/PointLights.cpp @@ -142,6 +142,8 @@ CPointLights::RenderFogEffect(void) CVector spriteCoors; float spritew, spriteh; + PUSH_RENDERGROUP("CPointLights::RenderFogEffect"); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDONE); @@ -282,4 +284,6 @@ CPointLights::RenderFogEffect(void) } } } + + POP_RENDERGROUP(); } diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 2c224677..9e60fe22 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -158,6 +158,8 @@ CRenderer::RenderOneRoad(CEntity *e) #ifdef EXTENDED_PIPELINES CustomPipes::AttachGlossPipe(e->GetAtomic()); #endif + PUSH_RENDERGROUP(CModelInfo::GetModelInfo(e->GetModelIndex())->GetModelName()); + #ifdef EXTRA_MODEL_FLAGS if(!e->IsBuilding() || CModelInfo::GetModelInfo(e->GetModelIndex())->RenderDoubleSided()){ BACKFACE_CULLING_OFF; @@ -166,6 +168,8 @@ CRenderer::RenderOneRoad(CEntity *e) }else #endif e->Render(); + + POP_RENDERGROUP(); } } @@ -213,6 +217,8 @@ CRenderer::RenderOneNonRoad(CEntity *e) } #endif + PUSH_RENDERGROUP(CModelInfo::GetModelInfo(e->GetModelIndex())->GetModelName()); + resetLights = e->SetupLighting(); if(e->IsVehicle()) @@ -246,6 +252,8 @@ CRenderer::RenderOneNonRoad(CEntity *e) } e->RemoveLighting(resetLights); + + POP_RENDERGROUP(); } void @@ -271,6 +279,7 @@ CRenderer::RenderRoads(void) int i; CTreadable *t; + PUSH_RENDERGROUP("CRenderer::RenderRoads"); RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); BACKFACE_CULLING_ON; DeActivateDirectional(); @@ -296,6 +305,7 @@ CRenderer::RenderRoads(void) #endif } } + POP_RENDERGROUP(); } void @@ -306,6 +316,7 @@ CRenderer::RenderEverythingBarRoads(void) CVector dist; EntityInfo ei; + PUSH_RENDERGROUP("CRenderer::RenderEverythingBarRoads"); BACKFACE_CULLING_ON; gSortedVehiclesAndPeds.Clear(); @@ -337,6 +348,7 @@ CRenderer::RenderEverythingBarRoads(void) }else RenderOneNonRoad(e); } + POP_RENDERGROUP(); } void @@ -361,6 +373,7 @@ CRenderer::RenderBoats(void) { CLink *node; + PUSH_RENDERGROUP("CRenderer::RenderBoats"); BACKFACE_CULLING_ON; for(node = gSortedVehiclesAndPeds.tail.prev; @@ -371,6 +384,7 @@ CRenderer::RenderBoats(void) if(v->IsBoat()) RenderOneNonRoad(v); } + POP_RENDERGROUP(); } #ifdef NEW_RENDERER @@ -475,6 +489,7 @@ CRenderer::RenderWorld(int pass) switch(pass){ case 0: // Roads + PUSH_RENDERGROUP("CRenderer::RenderWorld - Roads"); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); for(i = 0; i < ms_nNoOfVisibleBuildings; i++){ e = ms_aVisibleBuildingPtrs[i]; @@ -495,9 +510,11 @@ CRenderer::RenderWorld(int pass) RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); WorldRender::RenderBlendPass(PASS_BLEND); WorldRender::numBlendInsts[PASS_BLEND] = 0; + POP_RENDERGROUP(); break; case 1: // Opaque + PUSH_RENDERGROUP("CRenderer::RenderWorld - Opaque"); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); for(i = 0; i < ms_nNoOfVisibleBuildings; i++){ e = ms_aVisibleBuildingPtrs[i]; @@ -518,14 +535,17 @@ CRenderer::RenderWorld(int pass) RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE); WorldRender::RenderBlendPass(PASS_NOZ); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); + POP_RENDERGROUP(); break; case 2: // Transparent + PUSH_RENDERGROUP("CRenderer::RenderWorld - Transparent"); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDONE); WorldRender::RenderBlendPass(PASS_ADD); RwRenderStateSet(rwRENDERSTATEDESTBLEND, (void*)rwBLENDINVSRCALPHA); WorldRender::RenderBlendPass(PASS_BLEND); + POP_RENDERGROUP(); break; } } @@ -536,11 +556,13 @@ CRenderer::RenderPeds(void) int i; CEntity *e; + PUSH_RENDERGROUP("CRenderer::RenderPeds"); for(i = 0; i < ms_nNoOfVisibleVehicles; i++){ e = ms_aVisibleVehiclePtrs[i]; if(e->IsPed()) RenderOneNonRoad(e); } + POP_RENDERGROUP(); } void @@ -551,6 +573,7 @@ CRenderer::RenderVehicles(void) EntityInfo ei; CLink *node; + PUSH_RENDERGROUP("CRenderer::RenderVehicles"); // not the real thing for(i = 0; i < ms_nNoOfVisibleVehicles; i++){ e = ms_aVisibleVehiclePtrs[i]; @@ -567,6 +590,7 @@ CRenderer::RenderVehicles(void) node != &gSortedVehiclesAndPeds.head; node = node->prev) RenderOneNonRoad(node->item.ent); + POP_RENDERGROUP(); } void @@ -575,6 +599,7 @@ CRenderer::RenderWater(void) int i; CEntity *e; + PUSH_RENDERGROUP("CRenderer::RenderWater"); RwRenderStateSet(rwRENDERSTATETEXTURERASTER, nil); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); @@ -598,6 +623,7 @@ CRenderer::RenderWater(void) CWaterLevel::RenderWater(); SetStencilState(0); + POP_RENDERGROUP(); } void @@ -618,11 +644,13 @@ CRenderer::ClearForFrame(void) void CRenderer::RenderFadingInEntities(void) { + PUSH_RENDERGROUP("CRenderer::RenderFadingInEntities"); RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); BACKFACE_CULLING_ON; DeActivateDirectional(); SetAmbientColours(); CVisibilityPlugins::RenderFadingEntities(); + POP_RENDERGROUP(); } void diff --git a/src/render/Rubbish.cpp b/src/render/Rubbish.cpp index 18a20bc7..8da6b025 100644 --- a/src/render/Rubbish.cpp +++ b/src/render/Rubbish.cpp @@ -52,6 +52,8 @@ CRubbish::Render(void) { int type; + PUSH_RENDERGROUP("CRubbish::Render"); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); @@ -137,6 +139,8 @@ CRubbish::Render(void) RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); + + POP_RENDERGROUP(); } void diff --git a/src/render/Shadows.cpp b/src/render/Shadows.cpp index d7eccbfd..3884d3bb 100644 --- a/src/render/Shadows.cpp +++ b/src/render/Shadows.cpp @@ -687,6 +687,8 @@ CShadows::SetRenderModeForShadowType(uint8 ShadowType) void CShadows::RenderStoredShadows(void) { + PUSH_RENDERGROUP("CShadows::RenderStoredShadows"); + RenderBuffer::ClearRenderBuffer(); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)FALSE); @@ -784,11 +786,15 @@ CShadows::RenderStoredShadows(void) RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void *)TRUE); ShadowsStoredToBeRendered = 0; + + POP_RENDERGROUP(); } void CShadows::RenderStaticShadows(void) { + PUSH_RENDERGROUP("CShadows::RenderStaticShadows"); + RenderBuffer::ClearRenderBuffer(); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)FALSE); @@ -855,6 +861,8 @@ CShadows::RenderStaticShadows(void) RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)FALSE); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)TRUE); + + POP_RENDERGROUP(); } void diff --git a/src/render/Skidmarks.cpp b/src/render/Skidmarks.cpp index 9e509b52..4c662a79 100644 --- a/src/render/Skidmarks.cpp +++ b/src/render/Skidmarks.cpp @@ -118,6 +118,8 @@ CSkidmarks::Render(void) int i, j; RwTexture *lastTex = nil; + PUSH_RENDERGROUP("CSkidmarks::Render"); + RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATESRCBLEND, (void*)rwBLENDSRCALPHA); @@ -174,6 +176,8 @@ CSkidmarks::Render(void) RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)TRUE); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)TRUE); + + POP_RENDERGROUP(); } void diff --git a/src/render/SpecialFX.cpp b/src/render/SpecialFX.cpp index 97b70a94..6d96d21a 100644 --- a/src/render/SpecialFX.cpp +++ b/src/render/SpecialFX.cpp @@ -136,6 +136,7 @@ CSpecialFX::Shutdown(void) void CSpecialFX::Render(void) { + PUSH_RENDERGROUP("CSpecialFX::Render"); CMotionBlurStreaks::Render(); CBulletTraces::Render(); CBrightLights::Render(); @@ -145,6 +146,7 @@ CSpecialFX::Render(void) if(!(gbNewRenderer && FredIsInFirstPersonCam())) #endif C3dMarkers::Render(); + POP_RENDERGROUP(); } CRegisteredMotionBlurStreak CMotionBlurStreaks::aStreaks[NUMMBLURSTREAKS]; diff --git a/src/render/WaterCannon.cpp b/src/render/WaterCannon.cpp index 3aaa74be..08898be8 100644 --- a/src/render/WaterCannon.cpp +++ b/src/render/WaterCannon.cpp @@ -297,9 +297,11 @@ void CWaterCannons::Update(void) void CWaterCannons::Render(void) { + PUSH_RENDERGROUP("CWaterCannons::Render"); for ( int32 i = 0; i < NUM_WATERCANNONS; i++ ) { if ( aCannons[i].m_nId != 0 ) aCannons[i].Render(); } + POP_RENDERGROUP(); } diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index 7aa01f5a..bccaea39 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -643,6 +643,7 @@ CWaterLevel::RenderWater() if (gbDontRenderWater) return; #endif + PUSH_RENDERGROUP("CWaterLevel::RenderWater"); bool bUseCamEndX = false; bool bUseCamStartY = false; @@ -1066,6 +1067,8 @@ CWaterLevel::RenderWater() } DefinedState(); + + POP_RENDERGROUP(); } void diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp index 051a6883..9ea5b11c 100644 --- a/src/rw/VisibilityPlugins.cpp +++ b/src/rw/VisibilityPlugins.cpp @@ -293,6 +293,7 @@ CVisibilityPlugins::RenderFadingEntities(void) continue; #endif mi = (CSimpleModelInfo *)CModelInfo::GetModelInfo(e->GetModelIndex()); + #ifdef FIX_BUGS if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite) #else @@ -308,7 +309,9 @@ CVisibilityPlugins::RenderFadingEntities(void) DeActivateDirectional(); SetAmbientColours(); e->bImBeingRendered = true; + PUSH_RENDERGROUP(mi->GetModelName()); RenderFadingAtomic((RpAtomic*)e->m_rwObject, node->item.sort); + POP_RENDERGROUP(); e->bImBeingRendered = false; }else CRenderer::RenderOneNonRoad(e); diff --git a/src/weapons/WeaponEffects.cpp b/src/weapons/WeaponEffects.cpp index 214ae9c7..32e55fb1 100644 --- a/src/weapons/WeaponEffects.cpp +++ b/src/weapons/WeaponEffects.cpp @@ -1,5 +1,6 @@ #include "common.h" +#include "main.h" #include "WeaponEffects.h" #include "TxdStore.h" #include "Sprite.h" @@ -84,11 +85,15 @@ CWeaponEffects::Render(void) float w, h; if ( CSprite::CalcScreenCoors(gCrossHair.m_vecPos, &pos, &w, &h, true) ) { + PUSH_RENDERGROUP("CWeaponEffects::Render"); + float recipz = 1.0f / pos.z; CSprite::RenderOneXLUSprite(pos.x, pos.y, pos.z, gCrossHair.m_fSize * w, gCrossHair.m_fSize * h, gCrossHair.m_nRed, gCrossHair.m_nGreen, gCrossHair.m_nBlue, 255, recipz, 255); + + POP_RENDERGROUP(); } RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)FALSE); From e8b435a62488968b79b6cdcbcef8ef06841fe868 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 18 Feb 2021 12:23:15 +0100 Subject: [PATCH 099/314] fix last commit --- src/core/main.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/main.h b/src/core/main.h index 787d4f52..60ccc116 100644 --- a/src/core/main.h +++ b/src/core/main.h @@ -4,6 +4,8 @@ #define PUSH_RENDERGROUP(str) glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, str) #define POP_RENDERGROUP() glPopDebugGroup() #else +#define PUSH_RENDERGROUP(str) +#define POP_RENDERGROUP() #endif struct GlobalScene From 253021866c266d8cf8d18241d3c3f330bff9ed06 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 18 Feb 2021 13:08:22 +0100 Subject: [PATCH 100/314] d3d9 debug render groups --- src/core/main.h | 9 ++++++--- src/rw/RwHelper.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/core/main.h b/src/core/main.h index 60ccc116..311c0302 100644 --- a/src/core/main.h +++ b/src/core/main.h @@ -1,8 +1,11 @@ #pragma once -#if defined(RW_OPENGL) -#define PUSH_RENDERGROUP(str) glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, str) -#define POP_RENDERGROUP() glPopDebugGroup() +#ifndef FINAL +// defined in RwHelpder.cpp +void PushRendergroup(const char *name); +void PopRendergroup(void); +#define PUSH_RENDERGROUP(str) PushRendergroup(str) +#define POP_RENDERGROUP() PopRendergroup() #else #define PUSH_RENDERGROUP(str) #define POP_RENDERGROUP() diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index 65e342ed..e98b58f6 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -113,6 +113,30 @@ SetCullMode(uint32 mode) RwRenderStateSet(rwRENDERSTATECULLMODE, (void*)rwCULLMODECULLNONE); } +#ifndef FINAL +void +PushRendergroup(const char *name) +{ +#if defined(RW_OPENGL) + glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name); +#elif defined(RW_D3D9) + static WCHAR tmp[256]; + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, tmp, sizeof(tmp)); + D3DPERF_BeginEvent(0xFFFFFFFF, tmp); +#endif +} + +void +PopRendergroup(void) +{ +#if defined(RW_OPENGL) + glPopDebugGroup(); +#elif defined(RW_D3D9) + D3DPERF_EndEvent(); +#endif +} +#endif + RwFrame* GetFirstFrameCallback(RwFrame *child, void *data) { From 1402b9ed72ea6f4082fa1a9b3f3ecea56e54bd40 Mon Sep 17 00:00:00 2001 From: nick7 Date: Thu, 18 Feb 2021 21:29:39 +0300 Subject: [PATCH 101/314] CMake: MSS / mpg123 compilation fixes --- cmake/FindMilesSDK.cmake | 2 +- cmake/Findmpg123.cmake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/FindMilesSDK.cmake b/cmake/FindMilesSDK.cmake index 57da3a6e..dcf4da33 100644 --- a/cmake/FindMilesSDK.cmake +++ b/cmake/FindMilesSDK.cmake @@ -28,7 +28,7 @@ find_package_handle_standard_args(MilesSDK DEFAULT_MSG MilesSDK_LIBRARIES MilesS if(NOT TARGET MilesSDK::MilesSDK) add_library(MilesSDK::MilesSDK UNKNOWN IMPORTED) set_target_properties(MilesSDK::MilesSDK PROPERTIES - IMPORTED_LOCATION "${MilesSDK_LIBRARIES} + IMPORTED_LOCATION "${MilesSDK_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${MilesSDK_INCLUDE_DIR}" ) endif() diff --git a/cmake/Findmpg123.cmake b/cmake/Findmpg123.cmake index c6fe56bb..aa59ad82 100644 --- a/cmake/Findmpg123.cmake +++ b/cmake/Findmpg123.cmake @@ -18,7 +18,7 @@ find_path(mpg123_INCLUDE_DIR mpg123.h PATH_SUFFIXES include ) -find_library(mpg123_LIBRARIES NAMES mpg123 mpg123-0 +find_library(mpg123_LIBRARIES NAMES mpg123 mpg123-0 libmpg123-0 HINTS ${PKG_MPG123_LIBRARIES} PATHS "${mpg123_DIR}" PATH_SUFFIXES lib From 6245a17e168822300d7bb1f5a308305872dff2bc Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 18 Feb 2021 20:31:46 +0100 Subject: [PATCH 102/314] update librw; render groups only if extension supported --- src/rw/RwHelper.cpp | 6 ++++-- vendor/librw | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index e98b58f6..76749cb1 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -118,7 +118,8 @@ void PushRendergroup(const char *name) { #if defined(RW_OPENGL) - glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name); + if(GLAD_GL_KHR_debug) + glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name); #elif defined(RW_D3D9) static WCHAR tmp[256]; MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, name, -1, tmp, sizeof(tmp)); @@ -130,7 +131,8 @@ void PopRendergroup(void) { #if defined(RW_OPENGL) - glPopDebugGroup(); + if(GLAD_GL_KHR_debug) + glPopDebugGroup(); #elif defined(RW_D3D9) D3DPERF_EndEvent(); #endif diff --git a/vendor/librw b/vendor/librw index 65c619b3..cc550ff6 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 65c619b3e7dcec6f5dbd05d3203b530d667ba90f +Subproject commit cc550ff69c06ec03aae9ac7ac1f634703800660f From 48cec4a7862f40de2d0a31c065b1b24cf52d3548 Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 18 Feb 2021 22:40:32 +0100 Subject: [PATCH 103/314] add NoMovies ini option, rename gDrawVersionText, always save ini after loading --- src/core/Frontend.cpp | 7 +++---- src/core/config.h | 3 ++- src/core/main.cpp | 7 +++++-- src/core/main.h | 8 ++++++++ src/core/re3.cpp | 15 +++++++++------ src/skel/win/win.cpp | 12 +++++++++--- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 7d378e7f..4f3f31a4 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -3825,11 +3825,10 @@ CMenuManager::LoadSettings() #ifdef LOAD_INI_SETTINGS if (LoadINISettings()) { LoadINIControllerSettings(); - } else { - // no re3.ini, create it - SaveINISettings(); - SaveINIControllerSettings(); } + // if no re3.ini, create it, or update it with new values + SaveINISettings(); + SaveINIControllerSettings(); #endif m_PrefsVsync = m_PrefsVsyncDisp; diff --git a/src/core/config.h b/src/core/config.h index 6619be68..ebb26b39 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -223,7 +223,6 @@ enum Config { // not in master builds #define VALIDATE_SAVE_SIZE - #define NO_MOVIES // disable intro videos #define DEBUGMENU #endif @@ -241,6 +240,8 @@ enum Config { #define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible #define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS +#define NO_MOVIES // add option to disable intro videos + #if defined(__LP64__) || defined(_WIN64) #define FIX_BUGS_64 // Must have fixes to be able to run 64 bit build #endif diff --git a/src/core/main.cpp b/src/core/main.cpp index 5eccf759..7d59307c 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -92,7 +92,10 @@ bool gbModelViewer; bool gbShowTimebars; #endif #ifdef DRAW_GAME_VERSION_TEXT -bool gDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds +bool gbDrawVersionText; // Our addition, we think it was always enabled on !MASTER builds +#endif +#ifdef NO_MOVIES +bool gbNoMovies; #endif volatile int32 frameCount; @@ -1109,7 +1112,7 @@ DisplayGameDebugText() #ifdef DRAW_GAME_VERSION_TEXT wchar ver[200]; - if(gDrawVersionText) // This realtime switch is our thing + if(gbDrawVersionText) // This realtime switch is our thing { #ifdef USE_OUR_VERSIONING diff --git a/src/core/main.h b/src/core/main.h index 311c0302..803afb14 100644 --- a/src/core/main.h +++ b/src/core/main.h @@ -66,3 +66,11 @@ void SaveINIControllerSettings(); extern bool gbNewRenderer; bool FredIsInFirstPersonCam(void); #endif + +#ifdef DRAW_GAME_VERSION_TEXT +extern bool gbDrawVersionText; +#endif + +#ifdef NO_MOVIES +extern bool gbNoMovies; +#endif diff --git a/src/core/re3.cpp b/src/core/re3.cpp index e0f9c5c2..9d5ee8e6 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -517,8 +517,10 @@ bool LoadINISettings() ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites); #endif #ifdef DRAW_GAME_VERSION_TEXT - extern bool gDrawVersionText; - ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText); + ReadIniIfExists("General", "DrawVersionText", &gbDrawVersionText); +#endif +#ifdef NO_MOVIES + ReadIniIfExists("General", "NoMovies", &gbNoMovies); #endif #ifdef CUSTOM_FRONTEND_OPTIONS @@ -608,8 +610,10 @@ void SaveINISettings() StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites); #endif #ifdef DRAW_GAME_VERSION_TEXT - extern bool gDrawVersionText; - StoreIni("General", "DrawVersionText", gDrawVersionText); + StoreIni("General", "DrawVersionText", gbDrawVersionText); +#endif +#ifdef NO_MOVIES + StoreIni("General", "NoMovies", gbNoMovies); #endif #ifdef CUSTOM_FRONTEND_OPTIONS for (int i = 0; i < MENUPAGES; i++) { @@ -990,8 +994,7 @@ extern bool gbRenderWorld2; #ifdef DRAW_GAME_VERSION_TEXT - extern bool gDrawVersionText; - DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); + DebugMenuAddVarBool8("Debug", "Version Text", &gbDrawVersionText, nil); #endif DebugMenuAddVarBool8("Debug", "Show DebugStuffInRelease", &gbDebugStuffInRelease, nil); #ifdef TIMEBARS diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 86b0b214..baf9fdde 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -2275,7 +2275,7 @@ WinMain(HINSTANCE instance, case GS_START_UP: { #ifdef NO_MOVIES - gGameState = GS_INIT_ONCE; + gGameState = gbNoMovies ? GS_INIT_ONCE : GS_INIT_LOGO_MPEG; #else gGameState = GS_INIT_LOGO_MPEG; #endif @@ -2314,8 +2314,11 @@ WinMain(HINSTANCE instance, case GS_INIT_INTRO_MPEG: { -#ifndef NO_MOVIES +#ifdef NO_MOVIES + if (!gbNoMovies) +#endif CloseClip(); +#ifndef FIX_BUGS CoUninitialize(); #endif @@ -2351,8 +2354,11 @@ WinMain(HINSTANCE instance, case GS_INIT_ONCE: { -#ifndef NO_MOVIES +#ifdef NO_MOVIES + if (!gbNoMovies) +#endif CloseClip(); +#ifndef FIX_BUGS CoUninitialize(); #endif From bf7280b55bffd568b00d5145f5799c7f73114ffc Mon Sep 17 00:00:00 2001 From: erorcun Date: Thu, 18 Feb 2021 03:44:02 +0300 Subject: [PATCH 104/314] Get keyboard input from X11 on Linux --- premake5.lua | 4 +- src/skel/glfw/glfw.cpp | 309 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 305 insertions(+), 8 deletions(-) diff --git a/premake5.lua b/premake5.lua index 09887c17..fd59c1f8 100644 --- a/premake5.lua +++ b/premake5.lua @@ -342,10 +342,10 @@ project "re3" libdirs { "vendor/openal-soft/libs/Win64" } filter "platforms:linux*oal" - links { "openal", "mpg123", "sndfile", "pthread" } + links { "openal", "mpg123", "sndfile", "pthread", "X11" } filter "platforms:bsd*oal" - links { "openal", "mpg123", "sndfile", "pthread" } + links { "openal", "mpg123", "sndfile", "pthread", "X11" } filter "platforms:macosx*oal" links { "openal", "mpg123", "sndfile", "pthread" } diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index baed9000..8d3fc7d7 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -50,17 +50,30 @@ long _dwOperatingSystemVersion; #include "Font.h" #include "MemoryMgr.h" -#define MAX_SUBSYSTEMS (16) +// We found out that GLFW's keyboard input handling is still pretty delayed/not stable, so now we fetch input from X11 directly on Linux. +#if !defined _WIN32 && !defined __APPLE__ && !defined __SWITCH__ // && !defined WAYLAND +#define GET_KEYBOARD_INPUT_FROM_X11 +#endif + +#ifdef GET_KEYBOARD_INPUT_FROM_X11 +#include +#include +#define GLFW_EXPOSE_NATIVE_X11 +#include +#endif #ifdef _WIN32 #define GLFW_EXPOSE_NATIVE_WIN32 #include #endif +#define MAX_SUBSYSTEMS (16) rw::EngineOpenParams openParams; static RwBool ForegroundApp = TRUE; +static RwBool WindowIconified = FALSE; +static RwBool WindowFocused = TRUE; static RwBool RwInitialised = FALSE; @@ -322,7 +335,9 @@ psInitialize(void) RsGlobal.ps = &PsGlobal; PsGlobal.fullScreen = FALSE; - PsGlobal.cursorIsInWindow = TRUE; + PsGlobal.cursorIsInWindow = FALSE; + WindowFocused = TRUE; + WindowIconified = FALSE; PsGlobal.joy1id = -1; PsGlobal.joy2id = -1; @@ -838,11 +853,15 @@ psSelectDevice() return TRUE; } +#ifndef GET_KEYBOARD_INPUT_FROM_X11 void keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods); +#endif void resizeCB(GLFWwindow* window, int width, int height); void scrollCB(GLFWwindow* window, double xoffset, double yoffset); void cursorCB(GLFWwindow* window, double xpos, double ypos); void cursorEnterCB(GLFWwindow* window, int entered); +void windowFocusCB(GLFWwindow* window, int focused); +void windowIconifyCB(GLFWwindow* window, int iconified); void joysChangeCB(int jid, int event); bool IsThisJoystickBlacklisted(int i) @@ -930,11 +949,15 @@ void psPostRWinit(void) RwVideoMode vm; RwEngineGetVideoModeInfo(&vm, GcurSelVM); +#ifndef GET_KEYBOARD_INPUT_FROM_X11 glfwSetKeyCallback(PSGLOBAL(window), keypressCB); +#endif glfwSetFramebufferSizeCallback(PSGLOBAL(window), resizeCB); glfwSetScrollCallback(PSGLOBAL(window), scrollCB); glfwSetCursorPosCallback(PSGLOBAL(window), cursorCB); glfwSetCursorEnterCallback(PSGLOBAL(window), cursorEnterCB); + glfwSetWindowIconifyCallback(PSGLOBAL(window), windowIconifyCB); + glfwSetWindowFocusCallback(PSGLOBAL(window), windowFocusCB); glfwSetJoystickCallback(joysChangeCB); _InputInitialiseJoys(); @@ -1286,6 +1309,10 @@ void scrollCB(GLFWwindow* window, double xoffset, double yoffset) { PSGLOBAL(mouseWheel) = yoffset; } +bool lshiftStatus = false; +bool rshiftStatus = false; + +#ifndef GET_KEYBOARD_INPUT_FROM_X11 int keymap[GLFW_KEY_LAST + 1]; static void @@ -1416,9 +1443,6 @@ initkeymap(void) keymap[GLFW_KEY_MENU] = rsNULL; } -bool lshiftStatus = false; -bool rshiftStatus = false; - void keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods) { @@ -1436,6 +1460,266 @@ keypressCB(GLFWwindow* window, int key, int scancode, int action, int mods) } } +#else + +uint32 keymap[512]; // 256 ascii + 256 KeySyms between 0xff00 - 0xffff +bool keyStates[512]; +uint32 keyCodeToKeymapIndex[256]; // cache for physical keys + +#define KEY_MAP_OFFSET (0xff00 - 256) +static void +initkeymap(void) +{ + Display *display = glfwGetX11Display(); + int i; + + for (i = 0; i < ARRAY_SIZE(keymap); i++) + keymap[i] = rsNULL; + + // You can add new ASCII mappings to here freely (but beware that if right hand side of assignment isn't supported on CFont, it'll be blank/won't work on binding screen) + // Right hand side of assigments should always be uppercase counterpart of character + keymap[XK_space] = ' '; + keymap[XK_apostrophe] = '\''; + keymap[XK_ampersand] = '&'; + keymap[XK_percent] = '%'; + keymap[XK_dollar] = '$'; + keymap[XK_comma] = ','; + keymap[XK_minus] = '-'; + keymap[XK_period] = '.'; + keymap[XK_slash] = '/'; + keymap[XK_question] = '?'; + keymap[XK_exclam] = '!'; + keymap[XK_quotedbl] = '"'; + keymap[XK_colon] = ':'; + keymap[XK_semicolon] = ';'; + keymap[XK_equal] = '='; + keymap[XK_bracketleft] = '['; + keymap[XK_backslash] = '\\'; + keymap[XK_bracketright] = ']'; + keymap[XK_grave] = '`'; + keymap[XK_0] = '0'; + keymap[XK_1] = '1'; + keymap[XK_2] = '2'; + keymap[XK_3] = '3'; + keymap[XK_4] = '4'; + keymap[XK_5] = '5'; + keymap[XK_6] = '6'; + keymap[XK_7] = '7'; + keymap[XK_8] = '8'; + keymap[XK_9] = '9'; + keymap[XK_a] = 'A'; + keymap[XK_b] = 'B'; + keymap[XK_c] = 'C'; + keymap[XK_d] = 'D'; + keymap[XK_e] = 'E'; + keymap[XK_f] = 'F'; + keymap[XK_g] = 'G'; + keymap[XK_h] = 'H'; + keymap[XK_i] = 'I'; + keymap[XK_I] = 'I'; // Turkish I problem + keymap[XK_j] = 'J'; + keymap[XK_k] = 'K'; + keymap[XK_l] = 'L'; + keymap[XK_m] = 'M'; + keymap[XK_n] = 'N'; + keymap[XK_o] = 'O'; + keymap[XK_p] = 'P'; + keymap[XK_q] = 'Q'; + keymap[XK_r] = 'R'; + keymap[XK_s] = 'S'; + keymap[XK_t] = 'T'; + keymap[XK_u] = 'U'; + keymap[XK_v] = 'V'; + keymap[XK_w] = 'W'; + keymap[XK_x] = 'X'; + keymap[XK_y] = 'Y'; + keymap[XK_z] = 'Z'; + + // Some of regional but ASCII characters that GTA supports + keymap[XK_agrave] = 0x00c0; + keymap[XK_aacute] = 0x00c1; + keymap[XK_acircumflex] = 0x00c2; + keymap[XK_adiaeresis] = 0x00c4; + + keymap[XK_ae] = 0x00c6; + + keymap[XK_egrave] = 0x00c8; + keymap[XK_eacute] = 0x00c9; + keymap[XK_ecircumflex] = 0x00ca; + keymap[XK_ediaeresis] = 0x00cb; + + keymap[XK_igrave] = 0x00cc; + keymap[XK_iacute] = 0x00cd; + keymap[XK_icircumflex] = 0x00ce; + keymap[XK_idiaeresis] = 0x00cf; + + keymap[XK_ccedilla] = 0x00c7; + keymap[XK_odiaeresis] = 0x00d6; + keymap[XK_udiaeresis] = 0x00dc; + + // These are 0xff00 - 0xffff range of KeySym's, and subtracting KEY_MAP_OFFSET is needed + keymap[XK_Escape - KEY_MAP_OFFSET] = rsESC; + keymap[XK_Return - KEY_MAP_OFFSET] = rsENTER; + keymap[XK_Tab - KEY_MAP_OFFSET] = rsTAB; + keymap[XK_BackSpace - KEY_MAP_OFFSET] = rsBACKSP; + keymap[XK_Insert - KEY_MAP_OFFSET] = rsINS; + keymap[XK_Delete - KEY_MAP_OFFSET] = rsDEL; + keymap[XK_Right - KEY_MAP_OFFSET] = rsRIGHT; + keymap[XK_Left - KEY_MAP_OFFSET] = rsLEFT; + keymap[XK_Down - KEY_MAP_OFFSET] = rsDOWN; + keymap[XK_Up - KEY_MAP_OFFSET] = rsUP; + keymap[XK_Page_Up - KEY_MAP_OFFSET] = rsPGUP; + keymap[XK_Page_Down - KEY_MAP_OFFSET] = rsPGDN; + keymap[XK_Home - KEY_MAP_OFFSET] = rsHOME; + keymap[XK_End - KEY_MAP_OFFSET] = rsEND; + keymap[XK_Caps_Lock - KEY_MAP_OFFSET] = rsCAPSLK; + keymap[XK_Scroll_Lock - KEY_MAP_OFFSET] = rsSCROLL; + keymap[XK_Num_Lock - KEY_MAP_OFFSET] = rsNUMLOCK; + keymap[XK_Pause - KEY_MAP_OFFSET] = rsPAUSE; + + keymap[XK_F1 - KEY_MAP_OFFSET] = rsF1; + keymap[XK_F2 - KEY_MAP_OFFSET] = rsF2; + keymap[XK_F3 - KEY_MAP_OFFSET] = rsF3; + keymap[XK_F4 - KEY_MAP_OFFSET] = rsF4; + keymap[XK_F5 - KEY_MAP_OFFSET] = rsF5; + keymap[XK_F6 - KEY_MAP_OFFSET] = rsF6; + keymap[XK_F7 - KEY_MAP_OFFSET] = rsF7; + keymap[XK_F8 - KEY_MAP_OFFSET] = rsF8; + keymap[XK_F9 - KEY_MAP_OFFSET] = rsF9; + keymap[XK_F10 - KEY_MAP_OFFSET] = rsF10; + keymap[XK_F11 - KEY_MAP_OFFSET] = rsF11; + keymap[XK_F12 - KEY_MAP_OFFSET] = rsF12; + keymap[XK_F13 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F14 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F15 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F16 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F17 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F18 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F19 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F20 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F21 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F22 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F23 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F24 - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_F25 - KEY_MAP_OFFSET] = rsNULL; + + keymap[XK_KP_0 - KEY_MAP_OFFSET] = rsPADINS; + keymap[XK_KP_1 - KEY_MAP_OFFSET] = rsPADEND; + keymap[XK_KP_2 - KEY_MAP_OFFSET] = rsPADDOWN; + keymap[XK_KP_3 - KEY_MAP_OFFSET] = rsPADPGDN; + keymap[XK_KP_4 - KEY_MAP_OFFSET] = rsPADLEFT; + keymap[XK_KP_5 - KEY_MAP_OFFSET] = rsPAD5; + keymap[XK_KP_6 - KEY_MAP_OFFSET] = rsPADRIGHT; + keymap[XK_KP_7 - KEY_MAP_OFFSET] = rsPADHOME; + keymap[XK_KP_8 - KEY_MAP_OFFSET] = rsPADUP; + keymap[XK_KP_9 - KEY_MAP_OFFSET] = rsPADPGUP; + keymap[XK_KP_Insert - KEY_MAP_OFFSET] = rsPADINS; + keymap[XK_KP_End - KEY_MAP_OFFSET] = rsPADEND; + keymap[XK_KP_Down - KEY_MAP_OFFSET] = rsPADDOWN; + keymap[XK_KP_Page_Down - KEY_MAP_OFFSET] = rsPADPGDN; + keymap[XK_KP_Left - KEY_MAP_OFFSET] = rsPADLEFT; + keymap[XK_KP_Begin - KEY_MAP_OFFSET] = rsPAD5; + keymap[XK_KP_Right - KEY_MAP_OFFSET] = rsPADRIGHT; + keymap[XK_KP_Home - KEY_MAP_OFFSET] = rsPADHOME; + keymap[XK_KP_Up - KEY_MAP_OFFSET] = rsPADUP; + keymap[XK_KP_Page_Up - KEY_MAP_OFFSET] = rsPADPGUP; + + keymap[XK_KP_Decimal - KEY_MAP_OFFSET] = rsPADDEL; + keymap[XK_KP_Divide - KEY_MAP_OFFSET] = rsDIVIDE; + keymap[XK_KP_Multiply - KEY_MAP_OFFSET] = rsTIMES; + keymap[XK_KP_Subtract - KEY_MAP_OFFSET] = rsMINUS; + keymap[XK_KP_Add - KEY_MAP_OFFSET] = rsPLUS; + keymap[XK_KP_Enter - KEY_MAP_OFFSET] = rsPADENTER; + keymap[XK_KP_Equal - KEY_MAP_OFFSET] = rsNULL; + keymap[XK_Shift_L - KEY_MAP_OFFSET] = rsLSHIFT; + keymap[XK_Control_L - KEY_MAP_OFFSET] = rsLCTRL; + keymap[XK_Alt_L - KEY_MAP_OFFSET] = rsLALT; + keymap[XK_Super_L - KEY_MAP_OFFSET] = rsLWIN; + keymap[XK_Shift_R - KEY_MAP_OFFSET] = rsRSHIFT; + keymap[XK_Control_R - KEY_MAP_OFFSET] = rsRCTRL; + keymap[XK_Alt_R - KEY_MAP_OFFSET] = rsRALT; + keymap[XK_Super_R - KEY_MAP_OFFSET] = rsRWIN; + keymap[XK_Menu - KEY_MAP_OFFSET] = rsNULL; + + // Cache the key codes' key symbol equivelants, otherwise we will have to do it on each frame + // KeyCode is always in [0,255], and represents a physical key + + int min_keycode, max_keycode, keysyms_per_keycode; + KeySym *keymap, *origkeymap; + + char *keyboardLang = setlocale (LC_CTYPE, NULL); + setlocale(LC_CTYPE, ""); + + XDisplayKeycodes(display, &min_keycode, &max_keycode); + origkeymap = XGetKeyboardMapping(display, min_keycode, (max_keycode - min_keycode + 1), &keysyms_per_keycode); + keymap = origkeymap; + for (int i = min_keycode; i <= max_keycode; i++) { + int j, lastKeysym; + + lastKeysym = keysyms_per_keycode - 1; + while ((lastKeysym >= 0) && (keymap[lastKeysym] == NoSymbol)) + lastKeysym--; + + for (j = 0; j <= lastKeysym; j++) { + KeySym ks = keymap[j]; + + if (ks == NoSymbol) + continue; + + if (ks < 256) { + keyCodeToKeymapIndex[i] = ks; + break; + } else if (ks >= 0xff00 && ks < 0xffff) { + keyCodeToKeymapIndex[i] = ks - KEY_MAP_OFFSET; + break; + } + } + keymap += keysyms_per_keycode; + } + XFree(origkeymap); + + setlocale(LC_CTYPE, keyboardLang); +} +#undef KEY_MAP_OFFSET + +void checkKeyPresses() +{ + Display *display = glfwGetX11Display(); + char keys[32]; + XQueryKeymap(display, keys); + for (int i = 0; i < sizeof(keys); i++) { + for (int j = 0; j < 8; j++) { + KeyCode keycode = 8 * i + j; + uint32 keymapIndex = keyCodeToKeymapIndex[keycode]; + if (keymapIndex != 0) { + int rsCode = keymap[keymapIndex]; + if (rsCode == rsNULL) + continue; + + bool pressed = WindowFocused && !!(keys[i] & (1 << j)); + + // idk why R* does that + if (rsCode == rsLSHIFT) + lshiftStatus = pressed; + else if (rsCode == rsRSHIFT) + rshiftStatus = pressed; + + if (keyStates[keymapIndex] != pressed) { + if (pressed) { + RsKeyboardEventHandler(rsKEYDOWN, &rsCode); + } else { + RsKeyboardEventHandler(rsKEYUP, &rsCode); + } + } + + keyStates[keymapIndex] = pressed; + } + } + } + +} +#endif + // R* calls that in ControllerConfig, idk why void _InputTranslateShiftKeyUpDown(RsKeyCodes *rs) { @@ -1460,6 +1744,16 @@ cursorEnterCB(GLFWwindow* window, int entered) { PSGLOBAL(cursorIsInWindow) = !!entered; } +void +windowFocusCB(GLFWwindow* window, int focused) { + WindowFocused = !!focused; +} + +void +windowIconifyCB(GLFWwindow* window, int iconified) { + WindowIconified = !!iconified; +} + /* ***************************************************************************** */ @@ -1712,6 +2006,9 @@ main(int argc, char *argv[]) #endif { glfwPollEvents(); +#ifdef GET_KEYBOARD_INPUT_FROM_X11 + checkKeyPresses(); +#endif #ifndef MASTER if (gbModelViewer) { // This is TheModelViewerCore in LCS, but TheModelViewer on other state-machine III-VCs. @@ -1849,7 +2146,7 @@ main(int argc, char *argv[]) case GS_FRONTEND: { - if(!glfwGetWindowAttrib(PSGLOBAL(window), GLFW_ICONIFIED)) + if(!WindowIconified) RsEventHandler(rsFRONTENDIDLE, nil); #ifdef PS2_MENU From 006254fc9c39504f56a892fe860e09f5847c8696 Mon Sep 17 00:00:00 2001 From: RuesanG <34343052+RuesanG@users.noreply.github.com> Date: Fri, 19 Feb 2021 03:37:59 +0100 Subject: [PATCH 105/314] Add files via upload Fixed strings --- utils/gxt/german.txt | 50 ++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 2ab4df6a..8b7e4884 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -8019,10 +8019,10 @@ GRAFIK-SETUP MIP MAPPING [FED_AAS] -ANTI ALIASING +KANTENGLÄTTUNG [FED_FIL] -TEXTURE FILTERING +TEXTURFILFTER [FED_BIL] BILINEAR @@ -8031,44 +8031,44 @@ BILINEAR TRILINEAR [FED_WND] -WINDOWED +FENSTERMODUS [FED_FLS] -FULLSCREEN +VOLLBILD [FEM_CSB] -CUTSCENE BORDERS +CUTSCENE BALKEN [FEM_SCF] -SCREEN FORMAT +BILDSCHIRMFORMAT [FEM_ISL] -MAP MEMORY USAGE +KARTENSPEICHERNUTZUNG [FEM_LOW] -LOW +NIEDRIG [FEM_MED] -MEDIUM +MITTEL [FEM_HIG] -HIGH +HOCH [FEM_2PR] PS2 ALPHA TEST [FEC_FRC] -FREE CAM +FREIE KAMERA { Linux joy detection } [FEC_JOD] -DETECT JOYSTICK +JOYSTICK ERKENNEN [FEC_JPR] -Press any key on the joystick of your choice that you want to use on the game, and it will be selected. +Drücken Sie eine beliebige Taste auf dem Joystick den Sie für das Spiel verwenden möchten, und er wird ausgewählt. [FEC_JDE] -Detected joystick +Joystick erkannt { mission restart } [FET_RMS] @@ -8079,25 +8079,25 @@ WIEDERHOLEN? { more graphics } [FED_VPL] -VEHICLE PIPELINE +FAHRZEUG-PIPELINE [FED_PRM] -PED RIM LIGHT +CHARAKTER KANTEN LICHT [FED_RGL] -ROAD GLOSS +GLÄNZENDE STRAßEN [FED_CLF] -COLOUR FILTER +FARBFILTER [FED_WLM] -WORLD LIGHTMAPS +WELT LIGHTMAPS [FED_MBL] -MOTION BLUR +BEWEGUNGSUNSCHÄRFE [FEM_SIM] -SIMPLE +SIMPEL [FEM_NRM] NORMAL @@ -8122,11 +8122,11 @@ AUTO { controls } [FEC_IVP] -INVERT PAD VERTICALLY +PAD VERTIKAL INVERTIEREN { map } [FEM_TWP] -Toggle Waypoint +Wegpunkt umschalten [FEA_FMN] RADIO AUS @@ -8177,8 +8177,8 @@ IM AUTO VIBRATION [FET_AGS] -GAMEPAD SETTINGS +KONTROLLEREINSTELLUNGEN [DUMMY] THIS LABEL NEEDS TO BE HERE !!! -AS THE LAST LABEL DOES NOT GET COMPILED \ No newline at end of file +AS THE LAST LABEL DOES NOT GET COMPILED From 53631f97db6d544cee89f3a34ef6864a9a4f61ba Mon Sep 17 00:00:00 2001 From: RuesanG <34343052+RuesanG@users.noreply.github.com> Date: Fri, 19 Feb 2021 03:41:59 +0100 Subject: [PATCH 106/314] Add files via upload --- utils/gxt/german.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 8b7e4884..f7687f69 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -8022,7 +8022,7 @@ MIP MAPPING KANTENGLÄTTUNG [FED_FIL] -TEXTURFILFTER +TEXTURFILTER [FED_BIL] BILINEAR From 139c6bfcf3dd2e2f8e26d987b6da6db51645f210 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 19 Feb 2021 14:30:41 +0300 Subject: [PATCH 107/314] Fix MP3 player --- src/audio/sampman_miles.cpp | 192 +++++++++++++++++------------------- src/audio/sampman_oal.cpp | 180 ++++++++++++++++----------------- 2 files changed, 176 insertions(+), 196 deletions(-) diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 9b601d52..351c4958 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -2046,141 +2046,131 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) bool cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { + int i = 0; uint32 position = nPos; char filename[MAX_PATH]; - if ( m_bInitialised && nFile < TOTAL_STREAMED_SOUNDS ) + if ( !m_bInitialised || nFile >= TOTAL_STREAMED_SOUNDS ) + return false; + + if ( mp3Stream[nStream] ) { - if ( mp3Stream[nStream] ) + AIL_pause_stream(mp3Stream[nStream], 1); + AIL_close_stream(mp3Stream[nStream]); + } + if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) + { + do { - AIL_pause_stream(mp3Stream[nStream], 1); - AIL_close_stream(mp3Stream[nStream]); - } - - if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) - { - uint32 i = 0; - do { - if(i != 0 || _bIsMp3Active) { - if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0; + // Just switched to MP3 player + if ( !_bIsMp3Active && i == 0 ) + { + if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + position = 0; + tMP3Entry *e = _pMP3List; - _CurMP3Pos = 0; - - tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); - - if(mp3) { - mp3 = _pMP3List; - if(mp3 == NULL) { - _bIsMp3Active = false; - nFile = 0; - strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - - mp3Stream[nStream] = - AIL_open_stream(DIG, filename, 0); - if(mp3Stream[nStream]) { - AIL_set_stream_loop_count( - mp3Stream[nStream], 1); - AIL_set_stream_ms_position( - mp3Stream[nStream], position); - AIL_pause_stream(mp3Stream[nStream], - 0); - return true; - } - - return false; - } - } - - if(mp3->pLinkPath != NULL) - mp3Stream[nStream] = - AIL_open_stream(DIG, mp3->pLinkPath, 0); - else { - strcpy(filename, _mp3DirectoryPath); - strcat(filename, mp3->aFilename); - - mp3Stream[nStream] = - AIL_open_stream(DIG, filename, 0); - } - - if(mp3Stream[nStream]) { + // Try to continue from previous song, if already started + if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { + nFile = 0; + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( mp3Stream[nStream] ) + { AIL_set_stream_loop_count(mp3Stream[nStream], 1); - AIL_set_stream_ms_position(mp3Stream[nStream], 0); + AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); return true; } + return false; - _bIsMp3Active = false; - continue; - } - if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) - position = 0; + } else { + if ( e->pLinkPath != NULL ) + mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0); + else { + strcpy(filename, _mp3DirectoryPath); + strcat(filename, e->aFilename); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } + + if ( mp3Stream[nStream] ) { + AIL_set_stream_loop_count(mp3Stream[nStream], 1); + AIL_set_stream_ms_position(mp3Stream[nStream], position); + AIL_pause_stream(mp3Stream[nStream], 0); + + _bIsMp3Active = true; - tMP3Entry *e; - if ( !_GetMP3PosFromStreamPos(&position, &e) ) + return true; + } + // fall through, start playing from another song + } + } else { + if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0; + + _CurMP3Pos = 0; + + tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); + if ( !mp3 ) { - if ( e == NULL ) + mp3 = _pMP3List; + if ( !_pMP3List ) { nFile = 0; + _bIsMp3Active = 0; strcpy(filename, m_szCDRomRootPath); strcat(filename, StreamedNameTable[nFile]); - mp3Stream[nStream] = - AIL_open_stream(DIG, filename, 0); - if(mp3Stream[nStream]) { - AIL_set_stream_loop_count( - mp3Stream[nStream], 1); - AIL_set_stream_ms_position( - mp3Stream[nStream], position); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( mp3Stream[nStream] ) + { + AIL_set_stream_loop_count(mp3Stream[nStream], 1); + AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); return true; } - return false; } } - - if ( e->pLinkPath != NULL ) - mp3Stream[nStream] = AIL_open_stream(DIG, e->pLinkPath, 0); - else - { + if(mp3->pLinkPath != NULL) + mp3Stream[nStream] = AIL_open_stream(DIG, mp3->pLinkPath, 0); + else { strcpy(filename, _mp3DirectoryPath); - strcat(filename, e->aFilename); - - mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + strcat(filename, mp3->aFilename); + + mp3Stream[nStream] = + AIL_open_stream(DIG, filename, 0); } - - if ( mp3Stream[nStream] ) - { + + if(mp3Stream[nStream]) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); - AIL_set_stream_ms_position(mp3Stream[nStream], position); + AIL_set_stream_ms_position(mp3Stream[nStream], 0); AIL_pause_stream(mp3Stream[nStream], 0); - +#ifdef FIX_BUGS _bIsMp3Active = true; - +#endif return true; } - - _bIsMp3Active = false; - } while(++i < nNumMP3s); - - position = 0; - nFile = 0; - } - - strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - - mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); - if ( mp3Stream[nStream] ) - { - AIL_set_stream_loop_count(mp3Stream[nStream], 1); - AIL_set_stream_ms_position(mp3Stream[nStream], position); - AIL_pause_stream(mp3Stream[nStream], 0); - return true; + } + _bIsMp3Active = 0; } + while ( ++i < nNumMP3s ); + position = 0; + nFile = 0; } + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( mp3Stream[nStream] ) + { + AIL_set_stream_loop_count(mp3Stream[nStream], 1); + AIL_set_stream_ms_position(mp3Stream[nStream], position); + AIL_pause_stream(mp3Stream[nStream], 0); + return true; + } return false; } diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index d9adef5b..3d4b8dbd 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -730,8 +730,6 @@ _FindMP3s(void) delete aStream[0]; aStream[0] = NULL; - OutputDebugString(fd.cFileName); - pList->pNext = new tMP3Entry; tMP3Entry *e = pList->pNext; @@ -1706,91 +1704,91 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) bool cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { + int i = 0; uint32 position = nPos; - char filename[256]; - - ASSERT( nStream < MAX_STREAMS ); - - if ( nFile < TOTAL_STREAMED_SOUNDS ) + char filename[MAX_PATH]; + + if ( nFile >= TOTAL_STREAMED_SOUNDS ) + return false; + + if ( aStream[nStream] ) { - if ( aStream[nStream] ) + delete aStream[nStream]; + aStream[nStream] = NULL; + } + if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) + { + do { - delete aStream[nStream]; - aStream[nStream] = NULL; - } - - if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) - { - uint32 i = 0; - do { - if(i != 0 || _bIsMp3Active) { - if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0; + // Switched to MP3 player just now + if ( !_bIsMp3Active && i == 0 ) + { + if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + position = 0; + tMP3Entry *e = _pMP3List; - _CurMP3Pos = 0; + // Try to continue from previous song, if already started + if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { + nFile = 0; + strcpy(filename, StreamedNameTable[nFile]); + + CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); + aStream[nStream] = stream; - if(mp3) { - mp3 = _pMP3List; - if(mp3 == NULL) { - _bIsMp3Active = false; - nFile = 0; - strcat(filename, StreamedNameTable[nFile]); + if (stream->Setup()) { + if (position != 0) + stream->SetPosMS(position); - CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - ASSERT(stream != NULL); + stream->Start(); - aStream[nStream] = stream; - - if (stream->Setup()) { - if (position != 0) - stream->SetPosMS(position); - - stream->Start(); - - return true; - } else { - delete stream; - aStream[nStream] = NULL; - } - - return false; - } + return true; + } else { + delete stream; + aStream[nStream] = NULL; } + return false; - if (mp3->pLinkPath != NULL) - aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + } else { + if ( e->pLinkPath != NULL ) + aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); else { strcpy(filename, _mp3DirectoryPath); - strcat(filename, mp3->aFilename); - - aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + strcat(filename, e->aFilename); + + aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]); } - + if (aStream[nStream]->Setup()) { + if (position != 0) + aStream[nStream]->SetPosMS(position); + aStream[nStream]->Start(); + _bIsMp3Active = true; return true; } else { delete aStream[nStream]; aStream[nStream] = NULL; } - - _bIsMp3Active = false; - continue; + // fall through, start playing from another song } - if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) - position = 0; - - tMP3Entry *e; - if ( !_GetMP3PosFromStreamPos(&position, &e) ) + } else { + if(++_CurMP3Index >= nNumMP3s) _CurMP3Index = 0; + + _CurMP3Pos = 0; + + tMP3Entry *mp3 = _GetMP3EntryByIndex(_CurMP3Index); + if ( !mp3 ) { - if ( e == NULL ) + mp3 = _pMP3List; + if ( !_pMP3List ) { nFile = 0; - strcat(filename, StreamedNameTable[nFile]); + _bIsMp3Active = 0; + strcpy(filename, StreamedNameTable[nFile]); + CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - ASSERT(stream != NULL); aStream[nStream] = stream; @@ -1805,61 +1803,53 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) delete stream; aStream[nStream] = NULL; } - return false; } } - - if (e->pLinkPath != NULL) - aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + if(mp3->pLinkPath != NULL) + aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); else { strcpy(filename, _mp3DirectoryPath); - strcat(filename, e->aFilename); + strcat(filename, mp3->aFilename); aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]); } if (aStream[nStream]->Setup()) { - if (position != 0) - aStream[nStream]->SetPosMS(position); - aStream[nStream]->Start(); - +#ifdef FIX_BUGS _bIsMp3Active = true; +#endif return true; } else { delete aStream[nStream]; aStream[nStream] = NULL; } - - _bIsMp3Active = false; - } while(++i < nNumMP3s); - - position = 0; - nFile = 0; - } - - strcpy(filename, StreamedNameTable[nFile]); - - CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - ASSERT(stream != NULL); - - aStream[nStream] = stream; - - if ( stream->Setup() ) { - if (position != 0) - stream->SetPosMS(position); - - stream->Start(); - - return true; - } else { - delete stream; - aStream[nStream] = NULL; + } + _bIsMp3Active = 0; } + while ( ++i < nNumMP3s ); + position = 0; + nFile = 0; } + strcpy(filename, StreamedNameTable[nFile]); + CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + + aStream[nStream] = stream; + + if ( stream->Setup() ) { + if (position != 0) + stream->SetPosMS(position); + + stream->Start(); + + return true; + } else { + delete stream; + aStream[nStream] = NULL; + } return false; } From b52356f6b51edf0548d162c3df78738b9344a741 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 19 Feb 2021 16:56:42 +0300 Subject: [PATCH 108/314] Update librw to fix Mac hi-dpi --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index cc550ff6..8b2caf8f 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit cc550ff69c06ec03aae9ac7ac1f634703800660f +Subproject commit 8b2caf8f86b4f793d07fbc6b7d0bd4aafd22162f From 73fce903b86d2dd6a9e8a145fd9e4856214027cb Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 19 Feb 2021 16:23:52 +0100 Subject: [PATCH 109/314] nil -> false --- src/control/CarCtrl.cpp | 2 +- src/render/WaterLevel.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index 25ced498..2e9752a7 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -2718,7 +2718,7 @@ bool CCarCtrl::GenerateOneEmergencyServicesCar(uint32 mi, CVector vecPos) attempts += 1; } if (attempts >= 5) - return nil; + return false; CAutomobile* pVehicle = new CAutomobile(mi, RANDOM_VEHICLE); pVehicle->AutoPilot.m_vecDestinationCoors = vecPos; pVehicle->SetPosition(spawnPos); diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index bccaea39..4b474219 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -432,14 +432,14 @@ CWaterLevel::TestVisibilityForFineWaterBlocks(const CVector &worldPos) if ((lineEnd.x > WORLD_MIN_X && lineEnd.x < WORLD_MAX_X) && (lineEnd.y > WORLD_MIN_Y && lineEnd.y < WORLD_MAX_Y)) { - if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, nil)) + if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, false)) { lineStart.x += 0.4f; lineStart.y += 0.4f; lineEnd.x += 0.4f; lineEnd.y += 0.4f; - if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, nil)) + if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, false)) { return false; } From 8128e8e8172e360690b08b2c68d2544ddeebb6a3 Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 19 Feb 2021 16:33:37 +0100 Subject: [PATCH 110/314] tiny sync with miami --- src/render/WaterLevel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index 4b474219..e1014e86 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -432,14 +432,14 @@ CWaterLevel::TestVisibilityForFineWaterBlocks(const CVector &worldPos) if ((lineEnd.x > WORLD_MIN_X && lineEnd.x < WORLD_MAX_X) && (lineEnd.y > WORLD_MIN_Y && lineEnd.y < WORLD_MAX_Y)) { - if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, false)) + if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false)) { lineStart.x += 0.4f; lineStart.y += 0.4f; lineEnd.x += 0.4f; lineEnd.y += 0.4f; - if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false, false)) + if (!CWorld::ProcessLineOfSight(lineStart, lineEnd, col, entity, true, false, false, false, true, false)) { return false; } From 0b1d3669bc72c14f911aa0b8cbc3c66e0c6c6c4a Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 19 Feb 2021 18:21:04 +0100 Subject: [PATCH 111/314] remove nightly --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78f61b04..dc7c3796 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to ## Installation - re3 requires PC game assets to work, so you **must** own [a copy of GTA III](https://store.steampowered.com/app/12100/Grand_Theft_Auto_III/). -- Build re3 or download the latest nightly build: +- Build re3 or download the latest build: - [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_d3d9-oal.zip) - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) From 9a7fa478578beaba947ea867c15a25e411d641d8 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 19 Feb 2021 18:41:31 +0100 Subject: [PATCH 112/314] make debug render groups optional --- src/core/re3.cpp | 1 + src/rw/RwHelper.cpp | 5 +++++ src/rw/RwHelper.h | 1 + 3 files changed, 7 insertions(+) diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 9d5ee8e6..f27f10fe 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -1001,6 +1001,7 @@ extern bool gbRenderWorld2; DebugMenuAddVarBool8("Debug", "Show Timebars", &gbShowTimebars, nil); #endif #ifndef FINAL + DebugMenuAddVarBool8("Debug", "Use debug render groups", &bDebugRenderGroups, nil); DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil); #ifdef USE_CUSTOM_ALLOCATOR DebugMenuAddCmd("Debug", "Parse Heap", ParseHeap); diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index 76749cb1..ef2d1c0f 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -11,6 +11,7 @@ #endif #ifndef FINAL RtCharset *debugCharset; +bool bDebugRenderGroups; #endif #ifdef PS2_ALPHA_TEST @@ -117,6 +118,8 @@ SetCullMode(uint32 mode) void PushRendergroup(const char *name) { + if(!bDebugRenderGroups) + return; #if defined(RW_OPENGL) if(GLAD_GL_KHR_debug) glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, -1, name); @@ -130,6 +133,8 @@ PushRendergroup(const char *name) void PopRendergroup(void) { + if(!bDebugRenderGroups) + return; #if defined(RW_OPENGL) if(GLAD_GL_KHR_debug) glPopDebugGroup(); diff --git a/src/rw/RwHelper.h b/src/rw/RwHelper.h index 1a5f64b1..0e04aece 100644 --- a/src/rw/RwHelper.h +++ b/src/rw/RwHelper.h @@ -1,5 +1,6 @@ #pragma once +extern bool bDebugRenderGroups; extern bool gPS2alphaTest; void OpenCharsetSafe(); From 620155ac8d47f390d37a2f8f08ae33838660aaac Mon Sep 17 00:00:00 2001 From: Haydn Trigg Date: Sun, 21 Feb 2021 11:38:32 +0000 Subject: [PATCH 113/314] Fix stack corruption in HandleGraphEvent --- src/skel/win/win.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index baf9fdde..01e56701 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -914,14 +914,14 @@ void WaitForState(FILTER_STATE State) */ void HandleGraphEvent(void) { - LONG evCode, evParam1, evParam2; + LONG evCode; + LONG_PTR evParam1, evParam2; HRESULT hr=S_OK; ASSERT(pME != nil); // Process all queued events - while (SUCCEEDED(pME->GetEvent(&evCode, (LONG_PTR *)&evParam1, - (LONG_PTR *)&evParam2, 0))) + while (SUCCEEDED(pME->GetEvent(&evCode, &evParam1, &evParam2, 0))) { // Free memory associated with callback, since we're not using it hr = pME->FreeEventParams(evCode, evParam1, evParam2); From 82ebd8aae1c64f149877897dd1862bf83cad7e5a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 22 Feb 2021 17:47:58 +0200 Subject: [PATCH 114/314] Fix controls --- src/vehicles/Automobile.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 4863b945..c2cf26b9 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -333,7 +333,11 @@ CAutomobile::ProcessControl(void) bool playerRemote = false; switch(GetStatus()){ case STATUS_PLAYER_REMOTE: - if(CPad::GetPad(0)->WeaponJustDown()){ +#ifdef FIX_BUGS + if (CPad::GetPad(0)->CarGunJustDown()) { +#else + if (CPad::GetPad(0)->WeaponJustDown()) { +#endif BlowUpCar(FindPlayerPed()); CRemote::TakeRemoteControlledCarFromPlayer(); } @@ -2372,7 +2376,11 @@ void CAutomobile::FireTruckControl(void) { if(this == FindPlayerVehicle()){ - if(!CPad::GetPad(0)->GetWeapon()) +#ifdef FIX_BUGS + if (!CPad::GetPad(0)->GetCarGunFired()) +#else + if (!CPad::GetPad(0)->GetWeapon()) +#endif // FIX_BUGS return; #ifdef FREE_CAM if (!CCamera::bFreeCam) @@ -3054,7 +3062,7 @@ CAutomobile::DoDriveByShootings(void) lookingLeft = true; if(TheCamera.Cams[TheCamera.ActiveCam].LookingRight) lookingRight = true; - } + } if(lookingLeft || lookingRight){ if(lookingLeft){ From 59c9ae29cf12477576b0872a342bcbe5979b8281 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 26 Feb 2021 10:56:26 +0200 Subject: [PATCH 115/314] PoliceRadio -> PolRadio (original name) --- src/audio/{PoliceRadio.cpp => PolRadio.cpp} | 0 src/audio/{PoliceRadio.h => PolRadio.h} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/audio/{PoliceRadio.cpp => PolRadio.cpp} (100%) rename src/audio/{PoliceRadio.h => PolRadio.h} (100%) diff --git a/src/audio/PoliceRadio.cpp b/src/audio/PolRadio.cpp similarity index 100% rename from src/audio/PoliceRadio.cpp rename to src/audio/PolRadio.cpp diff --git a/src/audio/PoliceRadio.h b/src/audio/PolRadio.h similarity index 100% rename from src/audio/PoliceRadio.h rename to src/audio/PolRadio.h From 5bdbb5f802d8a6b5fdf9d23d1879b95c899a3df4 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 26 Feb 2021 11:05:37 +0200 Subject: [PATCH 116/314] Uhh, right --- src/audio/AudioManager.h | 2 +- src/audio/PolRadio.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 2f86ee98..57fbc818 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -2,7 +2,7 @@ #include "audio_enums.h" #include "AudioCollision.h" -#include "PoliceRadio.h" +#include "PolRadio.h" class tSound { diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 785dbf8f..cb12a2fe 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -7,7 +7,7 @@ #include "AudioSamples.h" #include "MusicManager.h" #include "PlayerPed.h" -#include "PoliceRadio.h" +#include "PolRadio.h" #include "Replay.h" #include "Vehicle.h" #include "World.h" From 9fce8636b0aab31343b708324abb0be70ddf5b25 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 26 Feb 2021 20:37:22 +0200 Subject: [PATCH 117/314] Fix muzzleflash rotation --- src/weapons/Weapon.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index dab510be..b3909a08 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -578,12 +578,29 @@ CWeapon::FireInstantHit(CEntity *shooter, CVector *fireSource) ProcessLineOfSight(*fireSource, target, point, victim, m_eWeaponType, shooter, true, true, true, true, true, true, false); } +#ifdef FIX_BUGS + // fix muzzleflash rotation + heading = CGeneral::GetAngleBetweenPoints(fireSource->x, fireSource->y, target.x, target.y); + angle = DEGTORAD(heading); + + ahead = CVector2D(-Sin(angle), Cos(angle)); + ahead.Normalise(); +#endif } else if ( shooter == FindPlayerPed() && TheCamera.Cams[0].Using3rdPersonMouseCam() ) { CVector src, trgt; TheCamera.Find3rdPersonCamTargetVector(info->m_fRange, *fireSource, src, trgt); +#ifdef FIX_BUGS + // fix muzzleflash rotation + heading = CGeneral::GetAngleBetweenPoints(src.x, src.y, trgt.x, trgt.y); + angle = DEGTORAD(heading); + + ahead = CVector2D(-Sin(angle), Cos(angle)); + ahead.Normalise(); +#endif + CWorld::bIncludeDeadPeds = true; ProcessLineOfSight(src, trgt,point, victim, m_eWeaponType, shooter, true, true, true, true, true, true, false); CWorld::bIncludeDeadPeds = false; From 087174c6a692409a6fbff78ac201b7bd3e508de0 Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 28 Feb 2021 14:15:22 +0100 Subject: [PATCH 118/314] update librw; little fix --- src/core/Game.cpp | 10 ++++++++-- src/core/re3.cpp | 5 +++++ src/render/Renderer.cpp | 2 +- vendor/librw | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/core/Game.cpp b/src/core/Game.cpp index 2a6afa97..f6156a4c 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -245,10 +245,16 @@ CGame::InitialiseRenderWare(void) #ifdef LIBRW #ifdef PS2_MATFX - rw::MatFX::modulateEnvMap = true; + rw::MatFX::envMapApplyLight = true; + rw::MatFX::envMapUseMatColor = true; + rw::MatFX::envMapFlipU = true; #else - rw::MatFX::modulateEnvMap = false; + rw::MatFX::envMapApplyLight = false; + rw::MatFX::envMapUseMatColor = false; + rw::MatFX::envMapFlipU = false; #endif + rw::RGBA envcol = { 128, 128, 128, 255 }; + rw::MatFX::envMapColor = envcol; #else #ifdef PS2_MATFX ReplaceMatFxCallback(); diff --git a/src/core/re3.cpp b/src/core/re3.cpp index f27f10fe..fe0347d9 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -964,6 +964,11 @@ extern bool gbRenderWorld2; DebugMenuAddVar("Render", "Intensity", &CPostFX::Intensity, nil, 0.05f, 0, 10.0f); DebugMenuAddVarBool8("Render", "Motion Blur", &CPostFX::MotionBlurOn, nil); #endif +#ifdef LIBRW + DebugMenuAddVarBool32("Render", "MatFX env map apply light", &rw::MatFX::envMapApplyLight, nil); + DebugMenuAddVarBool32("Render", "MatFX env map flip U", &rw::MatFX::envMapFlipU, nil); + DebugMenuAddVarBool32("Render", "MatFX env map use matcolor", &rw::MatFX::envMapUseMatColor, nil); +#endif #ifdef EXTENDED_PIPELINES static const char *vehpipenames[] = { "MatFX", "Neo" }; e = DebugMenuAddVar("Render", "Vehicle Pipeline", &CustomPipes::VehiclePipeSwitch, nil, diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 9e60fe22..165ef235 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -1451,7 +1451,7 @@ CRenderer::ScanBigBuildingList(CPtrList &list) // all missing from game actually TestedBigBuildings++; #endif - if(!ent->bZoneCulled){ + if(!ent->bZoneCulled || gbDisableZoneCull){ if(SetupBigBuildingVisibility(ent) == VIS_VISIBLE) InsertEntityIntoList(ent); #ifndef MASTER diff --git a/vendor/librw b/vendor/librw index 8b2caf8f..0102f883 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 8b2caf8f86b4f793d07fbc6b7d0bd4aafd22162f +Subproject commit 0102f8836754c82b0ac35015bd1e6058904bc334 From 931bc690cd898497ed4c783ecffb8e00a0594ac2 Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 28 Feb 2021 14:55:01 +0100 Subject: [PATCH 119/314] proper radar clipping --- src/core/Radar.cpp | 190 ++++++++++++++++++++++++++++----------------- 1 file changed, 117 insertions(+), 73 deletions(-) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 4fd7f1a5..31b5669f 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -142,6 +142,79 @@ void GetTextureCorners(int32 x, int32 y, CVector2D *out) out[3].y = RADAR_TILE_SIZE * (y); } +uint8 CRadar::CalculateBlipAlpha(float dist) +{ +#ifdef MENU_MAP + if (CMenuManager::bMenuMapActive) + return 255; +#endif + if (dist <= 1.0f) + return 255; + + if (dist <= 5.0f) + return (128.0f * ((dist - 1.0f) / 4.0f)) + ((1.0f - (dist - 1.0f) / 4.0f) * 255.0f); + + return 128; +} + +void CRadar::ChangeBlipBrightness(int32 i, int32 bright) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_bDim = bright != 1; +} + +void CRadar::ChangeBlipColour(int32 i, int32 color) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_nColor = color; +} + +void CRadar::ChangeBlipDisplay(int32 i, eBlipDisplay display) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_eBlipDisplay = display; +} + +void CRadar::ChangeBlipScale(int32 i, int32 scale) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) + ms_RadarTrace[index].m_wScale = scale; +} + +void CRadar::ClearBlip(int32 i) +{ + int index = GetActualBlipArrayIndex(i); + if (index != -1) { + SetRadarMarkerState(index, false); + ms_RadarTrace[index].m_bInUse = false; +#ifndef MENU_MAP + // Ssshhh + ms_RadarTrace[index].m_eBlipType = BLIP_NONE; + ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; + ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE; +#endif + } +} + +void CRadar::ClearBlipForEntity(eBlipType type, int32 id) +{ + for (int i = 0; i < NUMRADARBLIPS; i++) { + if (type == ms_RadarTrace[i].m_eBlipType && id == ms_RadarTrace[i].m_nEntityHandle) { + SetRadarMarkerState(i, false); + ms_RadarTrace[i].m_bInUse = false; + ms_RadarTrace[i].m_eBlipType = BLIP_NONE; + ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; + ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; + } + }; +} + +// Why not a proper clipping algorithm? +#ifdef THIS_IS_STUPID bool IsPointInsideRadar(const CVector2D &point) { @@ -222,79 +295,6 @@ int LineRadarBoxCollision(CVector2D &out, const CVector2D &p1, const CVector2D & return edge; } - -uint8 CRadar::CalculateBlipAlpha(float dist) -{ -#ifdef MENU_MAP - if (CMenuManager::bMenuMapActive) - return 255; -#endif - if (dist <= 1.0f) - return 255; - - if (dist <= 5.0f) - return (128.0f * ((dist - 1.0f) / 4.0f)) + ((1.0f - (dist - 1.0f) / 4.0f) * 255.0f); - - return 128; -} - -void CRadar::ChangeBlipBrightness(int32 i, int32 bright) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_bDim = bright != 1; -} - -void CRadar::ChangeBlipColour(int32 i, int32 color) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_nColor = color; -} - -void CRadar::ChangeBlipDisplay(int32 i, eBlipDisplay display) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_eBlipDisplay = display; -} - -void CRadar::ChangeBlipScale(int32 i, int32 scale) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) - ms_RadarTrace[index].m_wScale = scale; -} - -void CRadar::ClearBlip(int32 i) -{ - int index = GetActualBlipArrayIndex(i); - if (index != -1) { - SetRadarMarkerState(index, false); - ms_RadarTrace[index].m_bInUse = false; -#ifndef MENU_MAP - // Ssshhh - ms_RadarTrace[index].m_eBlipType = BLIP_NONE; - ms_RadarTrace[index].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[index].m_eRadarSprite = RADAR_SPRITE_NONE; -#endif - } -} - -void CRadar::ClearBlipForEntity(eBlipType type, int32 id) -{ - for (int i = 0; i < NUMRADARBLIPS; i++) { - if (type == ms_RadarTrace[i].m_eBlipType && id == ms_RadarTrace[i].m_nEntityHandle) { - SetRadarMarkerState(i, false); - ms_RadarTrace[i].m_bInUse = false; - ms_RadarTrace[i].m_eBlipType = BLIP_NONE; - ms_RadarTrace[i].m_eBlipDisplay = BLIP_DISPLAY_NEITHER; - ms_RadarTrace[i].m_eRadarSprite = RADAR_SPRITE_NONE; - } - }; -} - -// Why not a proper clipping algorithm? int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect) { CVector2D corners[4] = { @@ -373,6 +373,50 @@ int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect) return n; } +#else + +int +ClipPolyPlane(const CVector2D *in, int nin, CVector2D *out, CVector *plane) +{ + int j; + int nout; + int x1, x2; + float d1, d2, t; + + nout = 0; + for(j = 0; j < nin; j++){ + x1 = j; + x2 = (j+1) % nin; + + d1 = plane->x*in[x1].x + plane->y*in[x1].y + plane->z; + d2 = plane->x*in[x2].x + plane->y*in[x2].y + plane->z; + if(d1*d2 < 0.0f){ + t = d1/(d1 - d2); + out[nout++] = in[x1]*(1.0f-t) + in[x2]*t; + } + if(d2 >= 0.0f) + out[nout++] = in[x2]; + } + return nout; +} + +int CRadar::ClipRadarPoly(CVector2D *poly, const CVector2D *rect) +{ + CVector planes[4] = { + CVector(-1.0f, 0.0f, 1.0f), + CVector( 1.0f, 0.0f, 1.0f), + CVector(0.0f, -1.0f, 1.0f), + CVector(0.0f, 1.0f, 1.0f) + }; + CVector2D tmp[8]; + int n; + if(n = ClipPolyPlane(rect, 4, tmp, &planes[0]), n == 0) return 0; + if(n = ClipPolyPlane(tmp, n, poly, &planes[1]), n == 0) return 0; + if(n = ClipPolyPlane(poly, n, tmp, &planes[2]), n == 0) return 0; + if(n = ClipPolyPlane(tmp, n, poly, &planes[3]), n == 0) return 0; + return n; +} +#endif bool CRadar::DisplayThisBlip(int32 counter) { From df1ad8e122e43967710470e275844b62c4962e5d Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 28 Feb 2021 15:29:58 +0100 Subject: [PATCH 120/314] fix postfx --- src/extras/postfx.cpp | 3 +++ src/rw/RwHelper.cpp | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/extras/postfx.cpp b/src/extras/postfx.cpp index 03d4833e..425a22d4 100644 --- a/src/extras/postfx.cpp +++ b/src/extras/postfx.cpp @@ -48,6 +48,9 @@ CPostFX::InitOnce(void) void CPostFX::Open(RwCamera *cam) { + if(pFrontBuffer) + Close(); + uint32 width = Pow(2.0f, int32(log2(RwRasterGetWidth (RwCameraGetRaster(cam))))+1); uint32 height = Pow(2.0f, int32(log2(RwRasterGetHeight(RwCameraGetRaster(cam))))+1); uint32 depth = RwRasterGetDepth(RwCameraGetRaster(cam)); diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index ef2d1c0f..a633a139 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -6,6 +6,7 @@ #include "Timecycle.h" #include "skeleton.h" #include "Debug.h" +#include "MBlur.h" #if !defined(FINAL) || defined(DEBUGMENU) #include "rtcharse.h" #endif @@ -526,6 +527,13 @@ CameraSize(RwCamera * camera, RwRect * rect, RsGlobal.width = rect->w; RsGlobal.height = rect->h; + +#ifdef FIX_BUGS + if(CMBlur::BlurOn){ + CMBlur::MotionBlurClose(); + CMBlur::MotionBlurOpen(camera); + } +#endif } return; From 8488dc791aa0f14958c2ac46bbf45e9812e14331 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 28 Feb 2021 17:18:48 +0300 Subject: [PATCH 121/314] Pointless fixes --- src/peds/Population.cpp | 7 +++---- src/vehicles/Automobile.cpp | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index a0bf8be6..5bbb7c4b 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -945,10 +945,9 @@ CPopulation::MoveCarsAndPedsOutOfAbandonedZones() void CPopulation::ConvertAllObjectsToDummyObjects() { - int poolSize = CPools::GetObjectPool()->GetSize(); - for (int poolIndex = poolSize - 1; poolIndex >= 0; poolIndex--) { - - CObject *obj = CPools::GetObjectPool()->GetSlot(poolIndex); + uint32 i = CPools::GetObjectPool()->GetSize(); + while(i--) { + CObject *obj = CPools::GetObjectPool()->GetSlot(i); if (obj) { if (obj->CanBeDeleted()) ConvertToDummyObject(obj); diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index c2cf26b9..c29c0536 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -4050,7 +4050,7 @@ CAutomobile::GetHeightAboveRoad(void) void CAutomobile::PlayCarHorn(void) { - int r; + uint32 r; if(m_nCarHornTimer != 0) return; From 77ca9c593f7f04dcc1a1141bdaf197caa398afbf Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 28 Feb 2021 19:03:46 +0100 Subject: [PATCH 122/314] fix postfx fix --- src/rw/RwHelper.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp index a633a139..35593722 100644 --- a/src/rw/RwHelper.cpp +++ b/src/rw/RwHelper.cpp @@ -498,6 +498,12 @@ CameraSize(RwCamera * camera, RwRect * rect, raster->width = zRaster->width = rect->w; raster->height = zRaster->height = rect->h; +#endif +#ifdef FIX_BUGS + if(CMBlur::BlurOn){ + CMBlur::MotionBlurClose(); + CMBlur::MotionBlurOpen(camera); + } #endif } @@ -527,13 +533,6 @@ CameraSize(RwCamera * camera, RwRect * rect, RsGlobal.width = rect->w; RsGlobal.height = rect->h; - -#ifdef FIX_BUGS - if(CMBlur::BlurOn){ - CMBlur::MotionBlurClose(); - CMBlur::MotionBlurOpen(camera); - } -#endif } return; From c58d98a39ea3fa5e1f515fbac96eb58350a6de3e Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 28 Feb 2021 19:07:32 +0100 Subject: [PATCH 123/314] fix new renderer --- src/core/FileLoader.cpp | 1 + src/core/main.cpp | 9 +++++++++ src/extras/custompipes_d3d9.cpp | 5 +++++ src/extras/custompipes_gl.cpp | 5 +++++ src/render/Renderer.cpp | 22 ++++++++++++++-------- src/render/Renderer.h | 8 ++++++++ src/rw/VisibilityPlugins.cpp | 3 +++ 7 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp index 22e0159c..20e7bd8e 100644 --- a/src/core/FileLoader.cpp +++ b/src/core/FileLoader.cpp @@ -670,6 +670,7 @@ char *DoubleSidedNames[] = { "sbwy_tunl_cstm3", "sbwy_tunl_cstm2", "sbwy_tunl_cstm1", + "tenmnt6ad", "" }; diff --git a/src/core/main.cpp b/src/core/main.cpp index 7d59307c..58db2d34 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1333,11 +1333,13 @@ void RenderEffects_new(void) { PUSH_RENDERGROUP("RenderEffects_new"); +/* // stupid to do this before the whole world is drawn! CShadows::RenderStaticShadows(); // CRenderer::GenerateEnvironmentMap CShadows::RenderStoredShadows(); CSkidmarks::Render(); CRubbish::Render(); +*/ // these aren't really effects DefinedState(); @@ -1360,6 +1362,13 @@ if(gbRenderFadingInEntities) CRenderer::RenderFadingInEntities(); // actual effects here + + // from above + CShadows::RenderStaticShadows(); + CShadows::RenderStoredShadows(); + CSkidmarks::Render(); + CRubbish::Render(); + CGlass::Render(); // CMattRenderer::ResetRenderStates DefinedState(); diff --git a/src/extras/custompipes_d3d9.cpp b/src/extras/custompipes_d3d9.cpp index dad42b33..8b984448 100644 --- a/src/extras/custompipes_d3d9.cpp +++ b/src/extras/custompipes_d3d9.cpp @@ -568,6 +568,7 @@ struct BuildingInst { rw::RawMatrix combinedMat; rw::d3d9::InstanceDataHeader *instHeader; + uint32 cullMode; uint8 fadeAlpha; bool lighting; }; @@ -612,6 +613,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) assert(building->instHeader->platform == PLATFORM_D3D9); building->fadeAlpha = 255; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + building->cullMode = rw::GetRenderState(rw::CULLMODE); rw::uint32 flags = atomic->geometry->flags; bool setupDone = false; @@ -630,6 +632,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) // alright we're rendering this atomic if(!setupDone){ + rw::SetRenderState(rw::CULLMODE, building->cullMode); setStreamSource(0, building->instHeader->vertexStream[0].vertexBuffer, 0, building->instHeader->vertexStream[0].stride); setIndices(building->instHeader->indexBuffer); setVertexDeclaration(building->instHeader->vertexDeclaration); @@ -671,6 +674,7 @@ AtomicFullyTransparent(RpAtomic *atomic, int pass, int fadeAlpha) assert(building->instHeader->platform == PLATFORM_D3D9); building->fadeAlpha = fadeAlpha; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + building->cullMode = rw::GetRenderState(rw::CULLMODE); SetMatrix(building, atomic->getFrame()->getLTM()); numBlendInsts[pass]++; } @@ -688,6 +692,7 @@ RenderBlendPass(int pass) for(i = 0; i < numBlendInsts[pass]; i++){ BuildingInst *building = &blendInsts[pass][i]; + rw::SetRenderState(rw::CULLMODE, building->cullMode); setStreamSource(0, building->instHeader->vertexStream[0].vertexBuffer, 0, building->instHeader->vertexStream[0].stride); setIndices(building->instHeader->indexBuffer); setVertexDeclaration(building->instHeader->vertexDeclaration); diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index 040bf686..23a2a931 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -595,6 +595,7 @@ struct BuildingInst { rw::Matrix matrix; rw::gl3::InstanceDataHeader *instHeader; + uint32 cullMode; uint8 fadeAlpha; bool lighting; }; @@ -627,6 +628,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) assert(building->instHeader->platform == PLATFORM_GL3); building->fadeAlpha = 255; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + building->cullMode = rw::GetRenderState(rw::CULLMODE); rw::uint32 flags = atomic->geometry->flags; WorldLights lights; @@ -654,6 +656,7 @@ AtomicFirstPass(RpAtomic *atomic, int pass) // alright we're rendering this atomic if(!setupDone){ + rw::SetRenderState(rw::CULLMODE, building->cullMode); defaultShader->use(); setWorldMatrix(&building->matrix); setupVertexInput(building->instHeader); @@ -686,6 +689,7 @@ AtomicFullyTransparent(RpAtomic *atomic, int pass, int fadeAlpha) assert(building->instHeader->platform == PLATFORM_GL3); building->fadeAlpha = fadeAlpha; building->lighting = !!(atomic->geometry->flags & rw::Geometry::LIGHT); + building->cullMode = rw::GetRenderState(rw::CULLMODE); building->matrix = *atomic->getFrame()->getLTM(); numBlendInsts[pass]++; } @@ -706,6 +710,7 @@ RenderBlendPass(int pass) for(i = 0; i < numBlendInsts[pass]; i++){ BuildingInst *building = &blendInsts[pass][i]; + rw::SetRenderState(rw::CULLMODE, building->cullMode); setupVertexInput(building->instHeader); setWorldMatrix(&building->matrix); if(building->lighting) diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 165ef235..b131e6c3 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -82,14 +82,6 @@ CVehicle *CRenderer::m_pFirstPersonVehicle; bool CRenderer::m_loadingPriority; float CRenderer::ms_lodDistScale = 1.2f; -#ifdef EXTRA_MODEL_FLAGS -#define BACKFACE_CULLING_ON SetCullMode(rwCULLMODECULLBACK) -#define BACKFACE_CULLING_OFF SetCullMode(rwCULLMODECULLNONE) -#else -#define BACKFACE_CULLING_ON -#define BACKFACE_CULLING_OFF -#endif - // unused BlockedRange CRenderer::aBlockedRanges[16]; BlockedRange *CRenderer::pFullBlockedRanges; @@ -442,6 +434,14 @@ CRenderer::RenderOneBuilding(CEntity *ent, float camdist) RpAtomic *atomic = (RpAtomic*)ent->m_rwObject; CSimpleModelInfo *mi = (CSimpleModelInfo*)CModelInfo::GetModelInfo(ent->GetModelIndex()); +#ifdef EXTRA_MODEL_FLAGS + bool resetCull = false; + if(!ent->IsBuilding() || mi->RenderDoubleSided()){ + resetCull = true; + BACKFACE_CULLING_OFF; + } +#endif + int pass = PASS_BLEND; if(mi->m_additive) // very questionable pass = PASS_ADD; @@ -471,6 +471,11 @@ CRenderer::RenderOneBuilding(CEntity *ent, float camdist) }else WorldRender::AtomicFirstPass(atomic, pass); +#ifdef EXTRA_MODEL_FLAGS + if(resetCull) + BACKFACE_CULLING_ON; +#endif + ent->bImBeingRendered = false; // TODO: this seems wrong, but do we even need it? } @@ -482,6 +487,7 @@ CRenderer::RenderWorld(int pass) CLink *node; RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void*)TRUE); + BACKFACE_CULLING_ON; DeActivateDirectional(); SetAmbientColours(); diff --git a/src/render/Renderer.h b/src/render/Renderer.h index 35b43a0b..0322939c 100644 --- a/src/render/Renderer.h +++ b/src/render/Renderer.h @@ -10,6 +10,14 @@ class CEntity; #define FADE_DISTANCE 20.0f #define STREAM_DISTANCE 30.0f +#ifdef EXTRA_MODEL_FLAGS +#define BACKFACE_CULLING_ON SetCullMode(rwCULLMODECULLBACK) +#define BACKFACE_CULLING_OFF SetCullMode(rwCULLMODECULLNONE) +#else +#define BACKFACE_CULLING_ON +#define BACKFACE_CULLING_OFF +#endif + extern bool gbShowPedRoadGroups; extern bool gbShowCarRoadGroups; extern bool gbShowCollisionPolys; diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp index 9ea5b11c..7ff5c243 100644 --- a/src/rw/VisibilityPlugins.cpp +++ b/src/rw/VisibilityPlugins.cpp @@ -303,6 +303,8 @@ CVisibilityPlugins::RenderFadingEntities(void) #ifdef EXTRA_MODEL_FLAGS else if(mi->m_bIsTree) SetAlphaRef(128); + if(!e->IsBuilding() || mi->RenderDoubleSided()) + BACKFACE_CULLING_OFF; #endif if(e->bDistanceFade){ @@ -319,6 +321,7 @@ CVisibilityPlugins::RenderFadingEntities(void) #ifdef EXTRA_MODEL_FLAGS if(mi->m_bIsTree) SetAlphaRef(2); + BACKFACE_CULLING_ON; #endif #ifdef FIX_BUGS if(mi->GetModelType() == MITYPE_SIMPLE && mi->m_noZwrite) From c4f231deb40f980e8aa80c09ab8d426b07dc0e69 Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 28 Feb 2021 19:48:15 +0100 Subject: [PATCH 124/314] experiment: sorted building list for new renderer --- src/render/Renderer.cpp | 45 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index b131e6c3..1c0bd445 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -75,6 +75,8 @@ int32 CRenderer::ms_nNoOfVisibleVehicles; CEntity *CRenderer::ms_aVisibleVehiclePtrs[NUMVISIBLEENTITIES]; int32 CRenderer::ms_nNoOfVisibleBuildings; CEntity *CRenderer::ms_aVisibleBuildingPtrs[NUMVISIBLEENTITIES]; + +CLinkList gSortedBuildings; #endif CVector CRenderer::ms_vecCameraPosition; @@ -92,12 +94,18 @@ CRenderer::Init(void) { gSortedVehiclesAndPeds.Init(40); SortBIGBuildings(); +#ifdef NEW_RENDERER + gSortedBuildings.Init(NUMVISIBLEENTITIES); +#endif } void CRenderer::Shutdown(void) { gSortedVehiclesAndPeds.Shutdown(); +#ifdef NEW_RENDERER + gSortedBuildings.Shutdown(); +#endif } void @@ -114,8 +122,12 @@ CRenderer::PreRender(void) for(i = 0; i < ms_nNoOfVisibleVehicles; i++) ms_aVisibleVehiclePtrs[i]->PreRender(); // How is this done with cWorldStream? - for(i = 0; i < ms_nNoOfVisibleBuildings; i++) - ms_aVisibleBuildingPtrs[i]->PreRender(); + //for(i = 0; i < ms_nNoOfVisibleBuildings; i++) + // ms_aVisibleBuildingPtrs[i]->PreRender(); + for(CLink *node = gSortedBuildings.head.next; + node != &gSortedBuildings.tail; + node = node->next) + ((CEntity*)node->item.ent)->PreRender(); for(node = CVisibilityPlugins::m_alphaBuildingList.head.next; node != &CVisibilityPlugins::m_alphaBuildingList.tail; node = node->next) @@ -497,11 +509,20 @@ CRenderer::RenderWorld(int pass) // Roads PUSH_RENDERGROUP("CRenderer::RenderWorld - Roads"); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); +/* for(i = 0; i < ms_nNoOfVisibleBuildings; i++){ e = ms_aVisibleBuildingPtrs[i]; if(e->bIsBIGBuilding || IsRoad(e)) RenderOneBuilding(e); } +*/ + for(CLink *node = gSortedBuildings.tail.prev; + node != &gSortedBuildings.head; + node = node->prev){ + e = node->item.ent; + if(e->bIsBIGBuilding || IsRoad(e)) + RenderOneBuilding(e); + } for(node = CVisibilityPlugins::m_alphaBuildingList.tail.prev; node != &CVisibilityPlugins::m_alphaBuildingList.head; node = node->prev){ @@ -522,11 +543,20 @@ CRenderer::RenderWorld(int pass) // Opaque PUSH_RENDERGROUP("CRenderer::RenderWorld - Opaque"); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)FALSE); +/* for(i = 0; i < ms_nNoOfVisibleBuildings; i++){ e = ms_aVisibleBuildingPtrs[i]; if(!(e->bIsBIGBuilding || IsRoad(e))) RenderOneBuilding(e); } +*/ + for(CLink *node = gSortedBuildings.tail.prev; + node != &gSortedBuildings.head; + node = node->prev){ + e = node->item.ent; + if(!(e->bIsBIGBuilding || IsRoad(e))) + RenderOneBuilding(e); + } for(node = CVisibilityPlugins::m_alphaBuildingList.tail.prev; node != &CVisibilityPlugins::m_alphaBuildingList.head; node = node->prev){ @@ -640,6 +670,7 @@ CRenderer::ClearForFrame(void) ms_nNoOfVisibleBuildings = 0; ms_nNoOfInVisibleEntities = 0; gSortedVehiclesAndPeds.Clear(); + gSortedBuildings.Clear(); WorldRender::numBlendInsts[PASS_NOZ] = 0; WorldRender::numBlendInsts[PASS_ADD] = 0; @@ -1438,9 +1469,13 @@ CRenderer::InsertEntityIntoList(CEntity *ent) // TODO: there are more flags being checked here if(gbNewRenderer && (ent->IsVehicle() || ent->IsPed())) ms_aVisibleVehiclePtrs[ms_nNoOfVisibleVehicles++] = ent; - else if(gbNewRenderer && ent->IsBuilding()) - ms_aVisibleBuildingPtrs[ms_nNoOfVisibleBuildings++] = ent; - else + else if(gbNewRenderer && ent->IsBuilding()){ + EntityInfo info; + info.ent = ent; + info.sort = -(ent->GetPosition() - ms_vecCameraPosition).MagnitudeSqr(); + gSortedBuildings.InsertSorted(info); +// ms_aVisibleBuildingPtrs[ms_nNoOfVisibleBuildings++] = ent; + }else #endif ms_aVisibleEntityPtrs[ms_nNoOfVisibleEntities++] = ent; } From 8ae485939827a331d9b9a3a06866e8c4e6d55db0 Mon Sep 17 00:00:00 2001 From: erorcun Date: Tue, 2 Mar 2021 03:49:23 +0300 Subject: [PATCH 125/314] Fix FPE --- src/modelinfo/PedModelInfo.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modelinfo/PedModelInfo.cpp b/src/modelinfo/PedModelInfo.cpp index d0816467..2cce48f4 100644 --- a/src/modelinfo/PedModelInfo.cpp +++ b/src/modelinfo/PedModelInfo.cpp @@ -317,6 +317,10 @@ CPedModelInfo::CreateHitColModelSkinned(RpClump *clump) for(int i = 0; i < NUMPEDINFONODES; i++){ *mat = *invmat; + // From LCS. Otherwise gives FPE +#ifdef FIX_BUGS + spheres[i].center = CVector(0.0f, 0.0f, 0.0f); +#else int id = ConvertPedNode2BoneTag(m_pColNodeInfos[i].pedNode); // this is wrong, wtf R* ??? int idx = RpHAnimIDGetIndex(hier, id); @@ -326,6 +330,7 @@ CPedModelInfo::CreateHitColModelSkinned(RpClump *clump) RwV3dTransformPoints(&pos, &pos, 1, mat); spheres[i].center = pos + CVector(m_pColNodeInfos[i].x, 0.0f, m_pColNodeInfos[i].z); +#endif spheres[i].radius = m_pColNodeInfos[i].radius; spheres[i].surface = SURFACE_PED; spheres[i].piece = m_pColNodeInfos[i].pieceType; From f2b59f5097366af964c65824c1e2fd0779d07eed Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 2 Mar 2021 22:22:24 +0100 Subject: [PATCH 126/314] update librw --- src/extras/custompipes_gl.cpp | 6 +++--- vendor/librw | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/extras/custompipes_gl.cpp b/src/extras/custompipes_gl.cpp index 23a2a931..2b28cb52 100644 --- a/src/extras/custompipes_gl.cpp +++ b/src/extras/custompipes_gl.cpp @@ -154,7 +154,7 @@ CreateVehiclePipe(void) { #include "shaders/obj/neoVehicle_frag.inc" #include "shaders/obj/neoVehicle_vert.inc" - const char *vs[] = { shaderDecl, header_vert_src, neoVehicle_vert_src, nil }; + const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, neoVehicle_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, neoVehicle_frag_src, nil }; neoVehicleShader = Shader::create(vs, fs); assert(neoVehicleShader); @@ -515,7 +515,7 @@ CreateRimLightPipes(void) { #include "shaders/obj/simple_frag.inc" #include "shaders/obj/neoRimSkin_vert.inc" - const char *vs[] = { shaderDecl, header_vert_src, neoRimSkin_vert_src, nil }; + const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, neoRimSkin_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimSkinShader = Shader::create(vs, fs); assert(neoRimSkinShader); @@ -524,7 +524,7 @@ CreateRimLightPipes(void) { #include "shaders/obj/simple_frag.inc" #include "shaders/obj/neoRim_vert.inc" - const char *vs[] = { shaderDecl, header_vert_src, neoRim_vert_src, nil }; + const char *vs[] = { shaderDecl, "#define DIRECTIONALS\n", header_vert_src, neoRim_vert_src, nil }; const char *fs[] = { shaderDecl, header_frag_src, simple_frag_src, nil }; neoRimShader = Shader::create(vs, fs); assert(neoRimShader); diff --git a/vendor/librw b/vendor/librw index 0102f883..af20de45 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 0102f8836754c82b0ac35015bd1e6058904bc334 +Subproject commit af20de45226f5152a035866da32517466e81142d From 6537dfe7f103161676a8850801383b0d63efd40e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 10 May 2021 02:34:21 +0300 Subject: [PATCH 127/314] Use some GetMatrix/SetMatrix logic based on SA + CutsceneHead fix --- src/control/PathFind.cpp | 8 ++++---- src/control/Pickups.cpp | 18 +++++++++++++++--- src/control/RoadBlocks.cpp | 12 ++++++------ src/core/Camera.cpp | 4 ++-- src/core/Placeable.h | 6 ++++-- src/core/World.cpp | 4 ++-- src/entities/Entity.cpp | 22 +++++++++++----------- src/entities/Physical.cpp | 6 +++--- src/math/Matrix.h | 16 ---------------- src/objects/CutsceneHead.cpp | 3 +-- src/objects/Object.cpp | 10 +++++----- src/peds/Ped.cpp | 2 +- src/vehicles/Plane.cpp | 6 +++--- 13 files changed, 57 insertions(+), 60 deletions(-) diff --git a/src/control/PathFind.cpp b/src/control/PathFind.cpp index 49e43c81..c6407820 100644 --- a/src/control/PathFind.cpp +++ b/src/control/PathFind.cpp @@ -201,8 +201,8 @@ CPedPath::AddBlockade(CEntity *pEntity, CPedPathNode(*pathNodes)[40], CVector *p const float fBoundMaxY = boundingBox.max.y + 0.3f; const float fBoundMinY = boundingBox.min.y - 0.3f; const float fBoundMaxX = boundingBox.max.x + 0.3f; - const float fDistanceX = pPosition->x - pEntity->m_matrix.GetPosition().x; - const float fDistanceY = pPosition->y - pEntity->m_matrix.GetPosition().y; + const float fDistanceX = pPosition->x - pEntity->GetMatrix().GetPosition().x; + const float fDistanceY = pPosition->y - pEntity->GetMatrix().GetPosition().y; const float fBoundRadius = pEntity->GetBoundRadius(); CVector vecBoundCentre; pEntity->GetBoundCentre(vecBoundCentre); @@ -216,8 +216,8 @@ CPedPath::AddBlockade(CEntity *pEntity, CPedPathNode(*pathNodes)[40], CVector *p if (!pathNodes[x][y].bBlockade) { const float pointY = y * 0.7f + fDistanceY; CVector2D point(pointX, pointY); - if (fBoundMaxX > Abs(DotProduct2D(point, pEntity->m_matrix.GetRight()))) { - float fDotProduct = DotProduct2D(point, pEntity->m_matrix.GetForward()); + if (fBoundMaxX > Abs(DotProduct2D(point, pEntity->GetMatrix().GetRight()))) { + float fDotProduct = DotProduct2D(point, pEntity->GetMatrix().GetForward()); if (fBoundMaxY > fDotProduct && fBoundMinY < fDotProduct) pathNodes[x][y].bBlockade = true; } diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index be9f734d..a1e2a851 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -689,8 +689,7 @@ CPickups::DoPickUpEffects(CEntity *entity) entity->bDoNotRender = CTheScripts::IsPlayerOnAMission() || CDarkel::FrenzyOnGoing() || !CGame::nastyGame; if (!entity->bDoNotRender) { - float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)); - float modifiedSin = 0.3f * (s + 1.0f); + float modifiedSin = 0.3f * (Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800)) + 1.0f); int16 colorId; @@ -749,7 +748,20 @@ CPickups::DoPickUpEffects(CEntity *entity) } } - entity->GetMatrix().SetRotateZOnlyScaled((float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800), aWeaponScale[colorId]); + float angle = (float)(CTimer::GetTimeInMilliseconds() & 0x7FF) * DEGTORAD(360.0f / 0x800); + float c = Cos(angle) * aWeaponScale[colorId]; + float s = Sin(angle) * aWeaponScale[colorId]; + + // we know from SA they were setting each field manually like this + entity->GetMatrix().rx = c; + entity->GetMatrix().ry = s; + entity->GetMatrix().rz = 0.0f; + entity->GetMatrix().fx = -s; + entity->GetMatrix().fy = c; + entity->GetMatrix().fz = 0.0f; + entity->GetMatrix().ux = 0.0f; + entity->GetMatrix().uy = 0.0f; + entity->GetMatrix().uz = aWeaponScale[colorId]; } } diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index 3ec34a57..16627b17 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -55,7 +55,7 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType float fRadius = pVehicle->GetBoundRadius() / pPoliceColModel->boundingSphere.radius; for (int32 i = 0; i < 2; i++) { const int32 roadBlockIndex = i + 2 * roadBlockType; - CVector posForZ = pVehicle->m_matrix * (fRadius * vecRoadBlockOffets[roadBlockIndex]); + CVector posForZ = pVehicle->GetMatrix() * (fRadius * vecRoadBlockOffets[roadBlockIndex]); int32 modelInfoId = MI_COP; eCopType copType = COP_STREET; switch (pVehicle->GetModelIndex()) @@ -81,8 +81,8 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType CPedPlacement::FindZCoorForPed(&posForZ); pCopPed->SetPosition(posForZ); CVector vecSavedPos = pCopPed->GetPosition(); - pCopPed->m_matrix.SetRotate(0.0f, 0.0f, -HALFPI); - pCopPed->m_matrix.GetPosition() += vecSavedPos; + pCopPed->GetMatrix().SetRotate(0.0f, 0.0f, -HALFPI); + pCopPed->GetMatrix().GetPosition() += vecSavedPos; pCopPed->m_bIsDisabledCop = true; pCopPed->SetIdle(); pCopPed->bKindaStayInSamePlace = true; @@ -153,7 +153,7 @@ CRoadBlocks::GenerateRoadBlocks(void) offsetMatrix.GetPosition() = CVector(0.0f, i * fModelRadius - fOffset, 0.6f); else offsetMatrix.GetPosition() = CVector(i * fModelRadius - fOffset, 0.0f, 0.6f); - CMatrix vehicleMatrix = mapObject->m_matrix * offsetMatrix; + CMatrix vehicleMatrix = mapObject->GetMatrix() * offsetMatrix; float fModelRadius = CModelInfo::GetModelInfo(vehicleId)->GetColModel()->boundingSphere.radius - 0.25f; int16 colliding = 0; CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); @@ -162,10 +162,10 @@ CRoadBlocks::GenerateRoadBlocks(void) pVehicle->SetStatus(STATUS_ABANDONED); // pVehicle->GetHeightAboveRoad(); // called but return value is ignored? vehicleMatrix.GetPosition().z += fModelRadius - 0.6f; - pVehicle->m_matrix = vehicleMatrix; + pVehicle->SetMatrix(vehicleMatrix); pVehicle->PlaceOnRoadProperly(); pVehicle->SetIsStatic(false); - pVehicle->m_matrix.UpdateRW(); + pVehicle->GetMatrix().UpdateRW(); pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; CCarCtrl::JoinCarWithRoadSystem(pVehicle); pVehicle->bIsLocked = false; diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 2ce4e754..fd2d5eed 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -213,7 +213,7 @@ CCamera::Init(void) m_iModeToGoTo = CCam::MODE_FOLLOWPED; m_bJust_Switched = false; m_bUseTransitionBeta = false; - m_matrix.SetScale(1.0f); + GetMatrix().SetScale(1.0f); m_bTargetJustBeenOnTrain = false; m_bInitialNoNodeStaticsSet = false; m_uiLongestTimeInMill = 5000; @@ -3592,7 +3592,7 @@ CCamera::SetRwCamera(RwCamera *cam) void CCamera::CalculateDerivedValues(void) { - m_cameraMatrix = Invert(m_matrix); + m_cameraMatrix = Invert(GetMatrix()); float hfov = DEGTORAD(CDraw::GetScaledFOV()/2.0f); float c = Cos(hfov); diff --git a/src/core/Placeable.h b/src/core/Placeable.h index 1d51f306..d5ad94c9 100644 --- a/src/core/Placeable.h +++ b/src/core/Placeable.h @@ -2,12 +2,13 @@ class CPlaceable { +protected: + CMatrix m_matrix; + public: // disable allocation static void *operator new(size_t); - CMatrix m_matrix; - CPlaceable(void); virtual ~CPlaceable(void); const CVector &GetPosition(void) { return m_matrix.GetPosition(); } @@ -21,6 +22,7 @@ public: CVector &GetForward(void) { return m_matrix.GetForward(); } CVector &GetUp(void) { return m_matrix.GetUp(); } CMatrix &GetMatrix(void) { return m_matrix; } + void SetMatrix(CMatrix &newMatrix) { m_matrix = newMatrix; } void SetTransform(RwMatrix *m) { m_matrix = CMatrix(m, false); } void SetHeading(float angle); void SetOrientation(float x, float y, float z){ diff --git a/src/core/World.cpp b/src/core/World.cpp index 90d73b09..768ed7f9 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -1445,7 +1445,7 @@ CWorld::CallOffChaseForAreaSectorListVehicles(CPtrList &list, float x1, float y1 CColModel *pColModel = pVehicle->GetColModel(); bool bInsideSphere = false; for(int32 i = 0; i < pColModel->numSpheres; i++) { - CVector pos = pVehicle->m_matrix * pColModel->spheres[i].center; + CVector pos = pVehicle->GetMatrix() * pColModel->spheres[i].center; float fRadius = pColModel->spheres[i].radius; if(pos.x + fRadius > x1 && pos.x - fRadius < x2 && pos.y + fRadius > y1 && pos.y - fRadius < y2) @@ -1763,7 +1763,7 @@ CWorld::RepositionOneObject(CEntity *pEntity) position.z = FindGroundZFor3DCoord(position.x, position.y, position.z + OBJECT_REPOSITION_OFFSET_Z, nil) - fBoundingBoxMinZ; - pEntity->m_matrix.UpdateRW(); + pEntity->GetMatrix().UpdateRW(); pEntity->UpdateRwFrame(); } else if(modelId == MI_BUOY) { float fWaterLevel = 0.0f; diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 4885d631..208e6deb 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -110,9 +110,9 @@ CEntity::CreateRwObject(void) if(IsBuilding()) gBuildings++; if(RwObjectGetType(m_rwObject) == rpATOMIC) - m_matrix.AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)), false); + GetMatrix().AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic *)m_rwObject)), false); else if(RwObjectGetType(m_rwObject) == rpCLUMP) - m_matrix.AttachRW(RwFrameGetMatrix(RpClumpGetFrame((RpClump*)m_rwObject)), false); + GetMatrix().AttachRW(RwFrameGetMatrix(RpClumpGetFrame((RpClump *)m_rwObject)), false); mi->AddRef(); } } @@ -123,9 +123,9 @@ CEntity::AttachToRwObject(RwObject *obj) m_rwObject = obj; if(m_rwObject){ if(RwObjectGetType(m_rwObject) == rpATOMIC) - m_matrix.Attach(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject)), false); + GetMatrix().Attach(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic *)m_rwObject)), false); else if(RwObjectGetType(m_rwObject) == rpCLUMP) - m_matrix.Attach(RwFrameGetMatrix(RpClumpGetFrame((RpClump*)m_rwObject)), false); + GetMatrix().Attach(RwFrameGetMatrix(RpClumpGetFrame((RpClump *)m_rwObject)), false); CModelInfo::GetModelInfo(m_modelIndex)->AddRef(); } } @@ -136,7 +136,7 @@ CEntity::DetachFromRwObject(void) if(m_rwObject) CModelInfo::GetModelInfo(m_modelIndex)->RemoveRef(); m_rwObject = nil; - m_matrix.Detach(); + GetMatrix().Detach(); } #ifdef PED_SKIN @@ -166,7 +166,7 @@ CEntity::DeleteRwObject(void) { RwFrame *f; - m_matrix.Detach(); + GetMatrix().Detach(); if(m_rwObject){ if(RwObjectGetType(m_rwObject) == rpATOMIC){ f = RpAtomicGetFrame((RpAtomic*)m_rwObject); @@ -193,16 +193,16 @@ CEntity::GetBoundRect(void) CVector v; CColModel *col = CModelInfo::GetModelInfo(m_modelIndex)->GetColModel(); - rect.ContainPoint(m_matrix * col->boundingBox.min); - rect.ContainPoint(m_matrix * col->boundingBox.max); + rect.ContainPoint(GetMatrix() * col->boundingBox.min); + rect.ContainPoint(GetMatrix() * col->boundingBox.max); v = col->boundingBox.min; v.x = col->boundingBox.max.x; - rect.ContainPoint(m_matrix * v); + rect.ContainPoint(GetMatrix() * v); v = col->boundingBox.max; v.x = col->boundingBox.min.x; - rect.ContainPoint(m_matrix * v); + rect.ContainPoint(GetMatrix() * v); return rect; } @@ -218,7 +218,7 @@ CEntity::GetBoundCentre(void) void CEntity::GetBoundCentre(CVector &out) { - out = m_matrix * CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.center; + out = GetMatrix() * CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.center; } float diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp index ed01297e..a7e8beec 100644 --- a/src/entities/Physical.cpp +++ b/src/entities/Physical.cpp @@ -442,7 +442,7 @@ CPhysical::ApplyMoveForce(float jx, float jy, float jz) void CPhysical::ApplyTurnForce(float jx, float jy, float jz, float px, float py, float pz) { - CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass); + CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass); CVector turnimpulse = CrossProduct(CVector(px, py, pz)-com, CVector(jx, jy, jz)); m_vecTurnSpeed += turnimpulse*(1.0f/m_fTurnMass); } @@ -456,7 +456,7 @@ CPhysical::ApplyFrictionMoveForce(float jx, float jy, float jz) void CPhysical::ApplyFrictionTurnForce(float jx, float jy, float jz, float px, float py, float pz) { - CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass); + CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass); CVector turnimpulse = CrossProduct(CVector(px, py, pz)-com, CVector(jx, jy, jz)); m_vecTurnFriction += turnimpulse*(1.0f/m_fTurnMass); } @@ -853,7 +853,7 @@ CPhysical::ApplyCollisionAlt(CEntity *B, CColPoint &colpoint, float &impulse, CV moveSpeed += vImpulse * (1.0f/m_fMass); // ApplyTurnForce - CVector com = Multiply3x3(m_matrix, m_vecCentreOfMass); + CVector com = Multiply3x3(GetMatrix(), m_vecCentreOfMass); CVector turnimpulse = CrossProduct(pointpos-com, vImpulse); turnSpeed += turnimpulse*(1.0f/m_fTurnMass); diff --git a/src/math/Matrix.h b/src/math/Matrix.h index 9d50a4f6..6404b506 100644 --- a/src/math/Matrix.h +++ b/src/math/Matrix.h @@ -72,22 +72,6 @@ public: void SetRotateXOnly(float angle); void SetRotateYOnly(float angle); void SetRotateZOnly(float angle); - void SetRotateZOnlyScaled(float angle, float scale) { - float c = Cos(angle); - float s = Sin(angle); - - rx = c * scale; - ry = s * scale; - rz = 0.0f; - - fx = -s * scale; - fy = c * scale; - fz = 0.0f; - - ux = 0.0f; - uy = 0.0f; - uz = scale; - } void SetRotateX(float angle); void SetRotateY(float angle); void SetRotateZ(float angle); diff --git a/src/objects/CutsceneHead.cpp b/src/objects/CutsceneHead.cpp index 15611c29..19b3a592 100644 --- a/src/objects/CutsceneHead.cpp +++ b/src/objects/CutsceneHead.cpp @@ -85,7 +85,6 @@ CCutsceneHead::ProcessControl(void) { m_matrix.SetRotateY(PI/2); m_matrix = CMatrix(RwFrameGetLTM(m_pHeadNode)) * m_matrix; - UpdateRwFrame(); // android/xbox don't call this } assert(RwObjectGetType(m_rwObject) == rpCLUMP); @@ -95,7 +94,7 @@ CCutsceneHead::ProcessControl(void) // PS2 only plays anims in cutscene, PC always plays anims if(!lastLoadedSKA || CCutsceneMgr::IsRunning()) #endif - RpHAnimHierarchyAddAnimTime(hier, CTimer::GetTimeStepNonClipped()/50.0f); + RpHAnimHierarchyAddAnimTime(hier, CTimer::GetTimeStepNonClippedInSeconds()); } void diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index 411e245a..85936bb8 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -63,7 +63,7 @@ CObject::CObject(CDummyObject *dummy) if (dummy->m_rwObject) AttachToRwObject(dummy->m_rwObject); else - GetMatrix() = dummy->GetMatrix(); + SetMatrix(dummy->GetMatrix()); m_objectMatrix = dummy->GetMatrix(); dummy->DetachFromRwObject(); @@ -112,8 +112,8 @@ void CObject::Teleport(CVector vecPos) { CWorld::Remove(this); - m_matrix.GetPosition() = vecPos; - m_matrix.UpdateRW(); + GetMatrix().GetPosition() = vecPos; + GetMatrix().UpdateRW(); UpdateRwFrame(); CWorld::Add(this); } @@ -170,7 +170,7 @@ CObject::ObjectDamage(float amount) amount = 0.0f; } if ((amount * m_fCollisionDamageMultiplier > 150.0f || bBodyCastDamageEffect) && m_nCollisionDamageEffect) { - const CVector& vecPos = m_matrix.GetPosition(); + const CVector& vecPos = GetMatrix().GetPosition(); const float fDirectionZ = 0.0002f * amount; switch (m_nCollisionDamageEffect) { @@ -329,7 +329,7 @@ CObject::Init(void) m_pCollidingEntity = nil; CColPoint point; CEntity* outEntity = nil; - const CVector& vecPos = m_matrix.GetPosition(); + const CVector& vecPos = GetMatrix().GetPosition(); if (CWorld::ProcessVerticalLine(vecPos, vecPos.z - 10.0f, point, outEntity, true, false, false, false, false, false, nil)) m_pCurSurface = outEntity; else diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 28a4e989..52d6b130 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -6983,7 +6983,7 @@ CPed::SetPedPositionInCar(void) } else { m_fRotationCur = m_pMyVehicle->GetForward().Heading(); } - GetMatrix() = newMat; + SetMatrix(newMat); } void diff --git a/src/vehicles/Plane.cpp b/src/vehicles/Plane.cpp index 532be938..8ea03bf7 100644 --- a/src/vehicles/Plane.cpp +++ b/src/vehicles/Plane.cpp @@ -106,7 +106,7 @@ void CPlane::DeleteRwObject(void) { if(m_rwObject && RwObjectGetType(m_rwObject) == rpATOMIC){ - m_matrix.Detach(); + GetMatrix().Detach(); if(RwObjectGetType(m_rwObject) == rpATOMIC){ // useless check RwFrame *f = RpAtomicGetFrame((RpAtomic*)m_rwObject); RpAtomicDestroy((RpAtomic*)m_rwObject); @@ -556,13 +556,13 @@ CPlane::ProcessControl(void) m_rwObject = CModelInfo::GetModelInfo(mi->m_planeLodId)->CreateInstance(); POP_MEMID(); if(m_rwObject) - m_matrix.AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject))); + GetMatrix().AttachRW(RwFrameGetMatrix(RpAtomicGetFrame((RpAtomic*)m_rwObject))); } } }else if(CStreaming::HasModelLoaded(GetModelIndex())){ if(m_rwObject && RwObjectGetType(m_rwObject) == rpATOMIC){ // Get rid of LOD model - m_matrix.Detach(); + GetMatrix().Detach(); if(m_rwObject){ // useless check if(RwObjectGetType(m_rwObject) == rpATOMIC){ // useless check RwFrame *f = RpAtomicGetFrame((RpAtomic*)m_rwObject); From 0f6583560dfec7c2bd6092f139cfef4a39fd7583 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 10 May 2021 02:43:55 +0300 Subject: [PATCH 128/314] small RoadBlock fix --- src/control/RoadBlocks.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index 16627b17..c22bebaa 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -80,9 +80,7 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType pCopPed->SetCurrentWeapon(WEAPONTYPE_COLT45); CPedPlacement::FindZCoorForPed(&posForZ); pCopPed->SetPosition(posForZ); - CVector vecSavedPos = pCopPed->GetPosition(); - pCopPed->GetMatrix().SetRotate(0.0f, 0.0f, -HALFPI); - pCopPed->GetMatrix().GetPosition() += vecSavedPos; + pCopPed->SetOrientation(0.0f, 0.0f, -HALFPI); pCopPed->m_bIsDisabledCop = true; pCopPed->SetIdle(); pCopPed->bKindaStayInSamePlace = true; From f518676b76892dacca01aa2447902df3deab95ff Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 10 May 2021 09:12:50 +0300 Subject: [PATCH 129/314] fabs -> fabsf --- src/math/maths.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/math/maths.h b/src/math/maths.h index 8d68bf64..6a228036 100644 --- a/src/math/maths.h +++ b/src/math/maths.h @@ -10,7 +10,7 @@ inline float Acos(float x) { return acosf(x); } inline float Tan(float x) { return tanf(x); } inline float Atan(float x) { return atanf(x); } inline float Atan2(float y, float x) { return atan2f(y, x); } -inline float Abs(float x) { return fabs(x); } +inline float Abs(float x) { return fabsf(x); } inline float Sqrt(float x) { return sqrtf(x); } inline float RecipSqrt(float x, float y) { return x/Sqrt(y); } inline float RecipSqrt(float x) { return RecipSqrt(1.0f, x); } From 873c4fc81e38530000243ae7356f965a673c2b7e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 10 May 2021 17:46:41 +0300 Subject: [PATCH 130/314] Make gang members react to sexy females --- src/peds/Ped.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 52d6b130..936e039f 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -6990,7 +6990,14 @@ void CPed::LookForSexyPeds(void) { if ((!IsPedInControl() && m_nPedState != PED_DRIVING) - || m_lookTimer >= CTimer::GetTimeInMilliseconds() || m_nPedType != PEDTYPE_CIVMALE) + || m_lookTimer >= CTimer::GetTimeInMilliseconds() || +#ifdef FIX_BUGS + // gang members have these lines too + (!IsGangMember() && m_nPedType != PEDTYPE_CIVMALE) +#else + m_nPedType != PEDTYPE_CIVMALE +#endif + ) return; for (int i = 0; i < m_numNearPeds; i++) { @@ -6998,7 +7005,12 @@ CPed::LookForSexyPeds(void) if ((GetPosition() - m_nearPeds[i]->GetPosition()).Magnitude() < 10.0f) { CPed *nearPed = m_nearPeds[i]; if ((nearPed->m_pedStats->m_sexiness > m_pedStats->m_sexiness) +#ifdef FIX_BUGS + // react to prostitutes as well + && ((nearPed->m_nPedType == PEDTYPE_CIVFEMALE) || (nearPed->m_nPedType == PEDTYPE_PROSTITUTE))) { +#else && nearPed->m_nPedType == PEDTYPE_CIVFEMALE) { +#endif SetLookFlag(nearPed, true); m_lookTimer = CTimer::GetTimeInMilliseconds() + 4000; From 4a9d890ae9e54a3f4c6b7420ee140fbfecb8a435 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 17 May 2021 17:45:56 +0300 Subject: [PATCH 131/314] Fix quiet police scanner on OpenAL --- src/audio/oal/channel.cpp | 19 ++++++++++++++++++- src/audio/oal/channel.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index d1fd0aea..1bb4c4a8 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -17,6 +17,8 @@ bool bChannelsCreated = false; int32 CChannel::channelsThatNeedService = 0; +uint8 tempStereoBuffer[PED_BLOCKSIZE * 2]; + void CChannel::InitChannels() { @@ -50,6 +52,7 @@ CChannel::CChannel() { Data = nil; DataSize = 0; + bIs2D = false; SetDefault(); } @@ -90,6 +93,7 @@ void CChannel::Init(uint32 _id, bool Is2D) if ( Is2D ) { + bIs2D = true; alSource3f(alSources[id], AL_POSITION, 0.0f, 0.0f, 0.0f); alSourcef(alSources[id], AL_GAIN, 1.0f); } @@ -113,7 +117,20 @@ void CChannel::Start() if ( !HasSource() ) return; if ( !Data ) return; - alBufferData(alBuffers[id], AL_FORMAT_MONO16, Data, DataSize, Frequency); + if ( bIs2D ) + { + // convert mono data to stereo + int16 *monoData = (int16*)Data; + int16 *stereoData = (int16*)tempStereoBuffer; + for (size_t i = 0; i < DataSize / 2; i++) + { + *(stereoData++) = *monoData; + *(stereoData++) = *(monoData++); + } + alBufferData(alBuffers[id], AL_FORMAT_STEREO16, tempStereoBuffer, DataSize * 2, Frequency); + } + else + alBufferData(alBuffers[id], AL_FORMAT_MONO16, Data, DataSize, Frequency); if ( LoopPoints[0] != 0 && LoopPoints[0] != -1 ) alBufferiv(alBuffers[id], AL_LOOP_POINTS_SOFT, LoopPoints); alSourcei(alSources[id], AL_BUFFER, alBuffers[id]); diff --git a/src/audio/oal/channel.h b/src/audio/oal/channel.h index b081be25..872646c8 100644 --- a/src/audio/oal/channel.h +++ b/src/audio/oal/channel.h @@ -20,6 +20,7 @@ class CChannel int32 LoopCount; ALint LoopPoints[2]; ALint LastProcessedOffset; + bool bIs2D; public: static int32 channelsThatNeedService; From 596e12b8976f2138eb0d010a8c0e37ca0d614e1f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 22 May 2021 08:35:29 +0300 Subject: [PATCH 132/314] Fix C3dMarkers::PlaceMarker calls in Radar --- src/core/Radar.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 31b5669f..8f2c1747 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -441,7 +441,7 @@ void CRadar::Draw3dMarkers() if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { CVector pos = entity->GetPosition(); pos.z += 1.2f * CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 2.5f; - C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 2.5f, 0, 128, 255, 255, 1024, 0.2f, 5); + C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 2.5f, 0, 128, 255, 255, 1024, 0.2f, 5); } break; } @@ -455,7 +455,7 @@ void CRadar::Draw3dMarkers() if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { CVector pos = entity->GetPosition(); pos.z += 3.0f; - C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.5f, 0, 128, 255, 255, 1024, 0.2f, 5); + C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 1.5f, 0, 128, 255, 255, 1024, 0.2f, 5); } break; } @@ -465,7 +465,7 @@ void CRadar::Draw3dMarkers() if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { CVector pos = entity->GetPosition(); pos.z += CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 1.0f + 1.0f; - C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), 1, pos, 1.0f, 0, 128, 255, 255, 1024, 0.2f, 5); + C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 1.0f, 0, 128, 255, 255, 1024, 0.2f, 5); } break; } @@ -474,7 +474,7 @@ void CRadar::Draw3dMarkers() case BLIP_CONTACT_POINT: if (!CTheScripts::IsPlayerOnAMission()) { if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) - C3dMarkers::PlaceMarkerSet(i | (ms_RadarTrace[i].m_BlipIndex << 16), 4, ms_RadarTrace[i].m_vecPos, 2.0f, 0, 128, 255, 128, 2048, 0.2f, 0); + C3dMarkers::PlaceMarkerSet(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_CYLINDER, ms_RadarTrace[i].m_vecPos, 2.0f, 0, 128, 255, 128, 2048, 0.2f, 0); } break; } From 786e101acff29e07503a4d3c294b613d4a2714b3 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 22 May 2021 12:11:50 +0300 Subject: [PATCH 133/314] Use bool8 in audio code --- src/audio/AudioCollision.cpp | 26 +- src/audio/AudioLogic.cpp | 1142 ++++++++++++++++---------------- src/audio/AudioManager.cpp | 98 +-- src/audio/AudioManager.h | 104 +-- src/audio/DMAudio.cpp | 20 +- src/audio/DMAudio.h | 16 +- src/audio/MusicManager.cpp | 204 +++--- src/audio/MusicManager.h | 42 +- src/audio/PolRadio.cpp | 56 +- src/audio/sampman.h | 44 +- src/audio/sampman_miles.cpp | 282 ++++---- src/audio/sampman_null.cpp | 56 +- src/audio/sampman_oal.cpp | 208 +++--- src/control/Garages.cpp | 2 +- src/control/Replay.cpp | 4 +- src/control/Script4.cpp | 2 +- src/core/Frontend.cpp | 34 +- src/core/FrontendTriggers.h | 6 +- src/core/Frontend_PS2.cpp | 2 +- src/core/World.cpp | 4 +- src/objects/ParticleObject.cpp | 2 +- src/peds/Ped.cpp | 2 +- src/render/Weather.cpp | 2 +- src/vehicles/Cranes.cpp | 4 +- src/vehicles/Vehicle.cpp | 2 +- src/weapons/Explosion.cpp | 2 +- 26 files changed, 1183 insertions(+), 1183 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 6ce7bbac..0f96cec4 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -166,7 +166,7 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun m_sQueueSample.m_nCounter = counter; m_sQueueSample.m_vecPos = col.m_vecPosition; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; @@ -176,10 +176,10 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -307,7 +307,7 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) if(counter >= 255) counter = 28; m_sQueueSample.m_vecPos = col.m_vecPosition; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 11; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = emittingVol; @@ -315,9 +315,9 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -328,13 +328,13 @@ void cAudioManager::ServiceCollisions() { int i, j; - bool abRepeatedCollision1[NUMAUDIOCOLLISIONS]; - bool abRepeatedCollision2[NUMAUDIOCOLLISIONS]; + bool8 abRepeatedCollision1[NUMAUDIOCOLLISIONS]; + bool8 abRepeatedCollision2[NUMAUDIOCOLLISIONS]; m_sQueueSample.m_nEntityIndex = m_nCollisionEntity; for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) - abRepeatedCollision1[i] = abRepeatedCollision2[i] = false; + abRepeatedCollision1[i] = abRepeatedCollision2[i] = FALSE; for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { @@ -344,8 +344,8 @@ cAudioManager::ServiceCollisions() && (m_sCollisionManager.m_asCollisions1[index].m_bSurface1 == m_sCollisionManager.m_asCollisions2[j].m_bSurface1) && (m_sCollisionManager.m_asCollisions1[index].m_bSurface2 == m_sCollisionManager.m_asCollisions2[j].m_bSurface2) ) { - abRepeatedCollision1[index] = true; - abRepeatedCollision2[j] = true; + abRepeatedCollision1[index] = TRUE; + abRepeatedCollision2[j] = TRUE; m_sCollisionManager.m_asCollisions1[index].m_nBaseVolume = ++m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume; SetUpLoopingCollisionSound(m_sCollisionManager.m_asCollisions1[index], j); break; diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index ec364c27..2f173d5e 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -128,38 +128,38 @@ cAudioManager::PostInitialiseGameSpecificSetup() { m_nFireAudioEntity = CreateEntity(AUDIOTYPE_FIRE, &gFireManager); if (m_nFireAudioEntity >= 0) - SetEntityStatus(m_nFireAudioEntity, true); + SetEntityStatus(m_nFireAudioEntity, TRUE); m_nCollisionEntity = CreateEntity(AUDIOTYPE_COLLISION, (void *)1); if (m_nCollisionEntity >= 0) - SetEntityStatus(m_nCollisionEntity, true); + SetEntityStatus(m_nCollisionEntity, TRUE); m_nFrontEndEntity = CreateEntity(AUDIOTYPE_FRONTEND, (void *)1); if (m_nFrontEndEntity >= 0) - SetEntityStatus(m_nFrontEndEntity, true); + SetEntityStatus(m_nFrontEndEntity, TRUE); m_nProjectileEntity = CreateEntity(AUDIOTYPE_PROJECTILE, (void *)1); if (m_nProjectileEntity >= 0) - SetEntityStatus(m_nProjectileEntity, true); + SetEntityStatus(m_nProjectileEntity, TRUE); m_nWaterCannonEntity = CreateEntity(AUDIOTYPE_WATERCANNON, (void *)1); if (m_nWaterCannonEntity >= 0) - SetEntityStatus(m_nWaterCannonEntity, true); + SetEntityStatus(m_nWaterCannonEntity, TRUE); m_nPoliceChannelEntity = CreateEntity(AUDIOTYPE_POLICERADIO, (void *)1); if (m_nPoliceChannelEntity >= 0) - SetEntityStatus(m_nPoliceChannelEntity, true); + SetEntityStatus(m_nPoliceChannelEntity, TRUE); m_nBridgeEntity = CreateEntity(AUDIOTYPE_BRIDGE, (void *)1); if (m_nBridgeEntity >= 0) - SetEntityStatus(m_nBridgeEntity, true); + SetEntityStatus(m_nBridgeEntity, TRUE); m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_NOT_LOADED; m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_STOPPED; - m_sMissionAudio.m_bIsPlaying = false; - m_sMissionAudio.m_bIsPlayed = false; - m_sMissionAudio.m_bPredefinedProperties = true; + m_sMissionAudio.m_bIsPlaying = FALSE; + m_sMissionAudio.m_bIsPlayed = FALSE; + m_sMissionAudio.m_bPredefinedProperties = TRUE; m_sMissionAudio.m_nMissionAudioCounter = 0; ResetAudioLogicTimers(CTimer::GetTimeInMilliseconds()); } @@ -240,7 +240,7 @@ cAudioManager::ProcessReverb() const ; i++) { if (m_asActiveSamples[i].m_bReverbFlag) - SampleManager.SetChannelReverbFlag(i, true); + SampleManager.SetChannelReverbFlag(i, TRUE); } } } @@ -253,11 +253,11 @@ cAudioManager::GetDistanceSquared(const CVector &v) const } void -cAudioManager::CalculateDistance(bool &distCalculated, float dist) +cAudioManager::CalculateDistance(bool8 &distCalculated, float dist) { if (!distCalculated) { m_sQueueSample.m_fDistance = Sqrt(dist); - distCalculated = true; + distCalculated = TRUE; } } @@ -291,53 +291,53 @@ cAudioManager::ProcessEntity(int32 id) switch (m_asAudioEntities[id].m_nType) { case AUDIOTYPE_PHYSICAL: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessPhysical(id); } break; case AUDIOTYPE_EXPLOSION: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessExplosions(id); } break; case AUDIOTYPE_FIRE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessFires(id); } break; case AUDIOTYPE_WEATHER: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessWeather(id); } break; case AUDIOTYPE_CRANE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessCrane(); } break; case AUDIOTYPE_SCRIPTOBJECT: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessScriptObject(id); } break; case AUDIOTYPE_BRIDGE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessBridge(); } break; case AUDIOTYPE_FRONTEND: - m_sQueueSample.m_bReverbFlag = false; + m_sQueueSample.m_bReverbFlag = FALSE; ProcessFrontEnd(); break; case AUDIOTYPE_PROJECTILE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessProjectiles(); } break; @@ -347,13 +347,13 @@ cAudioManager::ProcessEntity(int32 id) break; case AUDIOTYPE_FIREHYDRANT: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessFireHydrant(); } break; case AUDIOTYPE_WATERCANNON: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; ProcessWaterCannon(id); } break; @@ -548,25 +548,25 @@ const tVehicleSampleData aVehicleSettings[MAX_CARS] = { {SFX_CAR_REV_1, SFX_BANK_PACARD, SFX_CAR_HORN_JEEP, 21043, SFX_CAR_ALARM_1, 9935, OLD_DOOR}}; -bool bPlayerJustEnteredCar; +bool8 bPlayerJustEnteredCar; -const bool hornPatternsArray[8][44] = { - {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, - false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false}, - {false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, - true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false}, - {false, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, true, true, true, true, true, false, - false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false}, - {false, false, true, true, true, true, true, false, false, true, true, true, true, true, false, false, false, true, true, true, true, true, - true, true, true, true, true, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, false}, - {false, false, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, true, true, false, false, false, true, true, true, false, false, false, false, false, false, false, false, false, false, false, - false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, true, true, true, false, false, false, false, true, true, true, false, false, true, true, true, false, false, true, true, - true, true, true, true, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, false, false}, - {false, false, true, true, true, true, false, false, true, true, true, true, true, false, false, false, true, true, true, true, true, true, - false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false}, +const bool8 hornPatternsArray[8][44] = { + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, + FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, + TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, + FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, + TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, + FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, + FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, + TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE}, + {FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, + FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE}, }; @@ -578,7 +578,7 @@ cAudioManager::ProcessVehicle(CVehicle *veh) cVehicleParams params; m_sQueueSample.m_vecPos = veh->GetPosition(); - params.m_bDistanceCalculated = false; + params.m_bDistanceCalculated = FALSE; params.m_pVehicle = veh; params.m_fDistance = GetDistanceSquared(m_sQueueSample.m_vecPos); @@ -677,7 +677,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) veh->m_bRainSamplesCounter = 68; m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 9; m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 4000 + 28000; m_sQueueSample.m_nLoopCount = 1; @@ -686,16 +686,16 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = rainOnVehicleIntensity; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = false; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } } } -bool +bool8 cAudioManager::ProcessReverseGear(cVehicleParams& params) { const int reverseGearIntensity = 30; @@ -706,7 +706,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) float modificator; if (params.m_fDistance >= SQR(reverseGearIntensity)) - return false; + return FALSE; veh = params.m_pVehicle; if (veh->bEngineOn && (veh->m_fGasPedal < 0.0f || veh->m_nCurrentGear == 0)) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); @@ -730,7 +730,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_REVERSE_GEAR; } m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = (6000.f * modificator) + 7000; m_sQueueSample.m_nLoopCount = 0; @@ -739,14 +739,14 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } - return true; + return TRUE; } void @@ -781,7 +781,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_REMOTE_CONTROLLED_CAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = (11025.f * velocityChange / params.m_pTransmission->fMaxVelocity + 11025.f); m_sQueueSample.m_nLoopCount = 0; @@ -790,10 +790,10 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -804,7 +804,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) -bool +bool8 cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) { const float SOUND_INTENSITY = 95.0f; @@ -816,7 +816,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) float velocity; if (params.m_fDistance >= SQR(SOUND_INTENSITY)) - return false; + return FALSE; if (params.m_pTransmission != nil) { if (((CAutomobile*)params.m_pVehicle)->m_nDriveWheelsOnGround != 0) { velocity = Abs(params.m_fVelocityChange); @@ -827,7 +827,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; if (params.m_pVehicle->m_nSurfaceTouched == SURFACE_WATER) { m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; @@ -845,19 +845,19 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } } } - return true; + return TRUE; } -bool +bool8 cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) { const float SOUND_INTENSITY = 30.0f; @@ -869,7 +869,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) float velChange; if (params.m_fDistance >= SQR(SOUND_INTENSITY)) - return false; + return FALSE; if (params.m_pTransmission != nil) { if (((CAutomobile *)params.m_pVehicle)->m_nDriveWheelsOnGround != 0) { velChange = Abs(params.m_fVelocityChange); @@ -882,7 +882,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; #ifdef FIX_BUGS multiplier = (m_sQueueSample.m_fDistance / SOUND_INTENSITY) * 0.5f; @@ -897,16 +897,16 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } } } - return true; + return TRUE; } void @@ -1033,7 +1033,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) } } m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) @@ -1044,10 +1044,10 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 8; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -1070,7 +1070,7 @@ void cAudioManager::PlayerJustGotInCar() const { if (m_bIsInitialised) - bPlayerJustEnteredCar = true; + bPlayerJustEnteredCar = TRUE; } void @@ -1080,7 +1080,7 @@ cAudioManager::PlayerJustLeftCar(void) const } void -cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool notLooping) +cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping) { m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, 50.f, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { @@ -1091,7 +1091,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl #else m_sQueueSample.m_nBankIndex = SFX_BANK_0; #endif // GTA_PS2 - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = freq; if (notLooping) { @@ -1105,9 +1105,9 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -1127,11 +1127,11 @@ cAudioManager::ProcessCesna(cVehicleParams& params) } else if (nAccel < 60) { ++nAccel; } - AddPlayerCarSample(85 * (60 - nAccel) / 60 + 20, 8500 * nAccel / 60 + 17000, SFX_CESNA_IDLE, SFX_BANK_0, 52, true); - AddPlayerCarSample(85 * nAccel / 60 + 20, 8500 * nAccel / 60 + 17000, SFX_CESNA_REV, SFX_BANK_0, 2, true); + AddPlayerCarSample(85 * (60 - nAccel) / 60 + 20, 8500 * nAccel / 60 + 17000, SFX_CESNA_IDLE, SFX_BANK_0, 52, TRUE); + AddPlayerCarSample(85 * nAccel / 60 + 20, 8500 * nAccel / 60 + 17000, SFX_CESNA_REV, SFX_BANK_0, 2, TRUE); } } else if (params.m_nIndex == DODO) { - AddPlayerCarSample(105, 17000, SFX_CESNA_IDLE, SFX_BANK_0, 52, true); + AddPlayerCarSample(105, 17000, SFX_CESNA_IDLE, SFX_BANK_0, 52, TRUE); } else if (params.m_fDistance < SQR(200)) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(80, 200.f, m_sQueueSample.m_fDistance); @@ -1139,7 +1139,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_nSampleIndex = SFX_CESNA_IDLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 12500; m_sQueueSample.m_nLoopCount = 0; @@ -1149,9 +1149,9 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 200.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } if (params.m_fDistance < SQR(90)) { @@ -1160,7 +1160,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 25000; m_sQueueSample.m_nLoopCount = 0; @@ -1170,9 +1170,9 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -1199,9 +1199,9 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * int soundOffset; uint8 engineSoundType; int16 accelerateState; - bool channelUsed; - bool lostTraction; - bool processedAccelSampleStopped; + bool8 channelUsed; + bool8 lostTraction; + bool8 processedAccelSampleStopped; uint8 currentGear; float gasPedalAudio; CVector pos; @@ -1209,21 +1209,21 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * static int16 LastAccel = 0; static int16 LastBrake = 0; static uint8 CurrentPretendGear = 1; - static bool bLostTractionLastFrame = false; - static bool bHandbrakeOnLastFrame = false; + static bool8 bLostTractionLastFrame = FALSE; + static bool8 bHandbrakeOnLastFrame = FALSE; static int32 nCruising = 0; - static bool bAccelSampleStopped = true; + static bool8 bAccelSampleStopped = TRUE; - lostTraction = false; - processedAccelSampleStopped = false; + lostTraction = FALSE; + processedAccelSampleStopped = FALSE; if (bPlayerJustEnteredCar) { - bAccelSampleStopped = true; - bPlayerJustEnteredCar = false; + bAccelSampleStopped = TRUE; + bPlayerJustEnteredCar = FALSE; nCruising = 0; LastAccel = 0; - bLostTractionLastFrame = false; + bLostTractionLastFrame = FALSE; LastBrake = 0; - bHandbrakeOnLastFrame = false; + bHandbrakeOnLastFrame = FALSE; CurrentPretendGear = 1; } if (CReplay::IsPlayingBack()) @@ -1249,16 +1249,16 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * ++wheelInUseCounter; } if (wheelInUseCounter > 2) - lostTraction = true; + lostTraction = TRUE; break; case 'F': if ((automobile->m_aWheelState[CARWHEEL_FRONT_LEFT] != WHEEL_STATE_NORMAL || automobile->m_aWheelState[CARWHEEL_FRONT_RIGHT] != WHEEL_STATE_NORMAL) && (automobile->m_aWheelState[CARWHEEL_REAR_LEFT] != WHEEL_STATE_NORMAL || automobile->m_aWheelState[CARWHEEL_REAR_RIGHT] != WHEEL_STATE_NORMAL)) - lostTraction = true; + lostTraction = TRUE; break; case 'R': if ((automobile->m_aWheelState[CARWHEEL_REAR_LEFT] != WHEEL_STATE_NORMAL) || (automobile->m_aWheelState[CARWHEEL_REAR_RIGHT] != WHEEL_STATE_NORMAL)) - lostTraction = true; + lostTraction = TRUE; break; } @@ -1279,7 +1279,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * if (params.m_fVelocityChange < -0.001f) { if (channelUsed) { SampleManager.StopChannel(m_nActiveSamples); - bAccelSampleStopped = true; + bAccelSampleStopped = TRUE; } if (automobile->m_nWheelsOnGround == 0 || automobile->bIsHandbrakeOn || lostTraction) gasPedalAudio = automobile->m_fGasPedalAudio; @@ -1291,7 +1291,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * } else if (LastAccel > 0) { if (channelUsed) { SampleManager.StopChannel(m_nActiveSamples); - bAccelSampleStopped = true; + bAccelSampleStopped = TRUE; } nCruising = 0; if (automobile->m_nWheelsOnGround == 0 || automobile->bIsHandbrakeOn || lostTraction || @@ -1304,13 +1304,13 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * if (engineSoundType == SFX_BANK_TRUCK) freq /= 2; AddPlayerCarSample((25.f * (gasPedalAudio - 0.05f) * 20.f / 19) + 40, freq, (soundOffset + SFX_CAR_FINGER_OFF_ACCEL_1), engineSoundType, 63, - false); + FALSE); } } freq = (10000.f * gasPedalAudio) + 22050; if (engineSoundType == SFX_BANK_TRUCK) freq /= 2; - AddPlayerCarSample(110 - (40.f * gasPedalAudio), freq, (engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1), SFX_BANK_0, 52, true); + AddPlayerCarSample(110 - (40.f * gasPedalAudio), freq, (engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1), SFX_BANK_0, 52, TRUE); CurrentPretendGear = Max(1, currentGear); } else { @@ -1335,9 +1335,9 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * freq /= 2; if (channelUsed) { SampleManager.StopChannel(m_nActiveSamples); - bAccelSampleStopped = true; + bAccelSampleStopped = TRUE; } - AddPlayerCarSample(vol, freq, (engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_REV_1), SFX_BANK_0, 2, true); + AddPlayerCarSample(vol, freq, (engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_REV_1), SFX_BANK_0, 2, TRUE); } else { TranslateEntity(&m_sQueueSample.m_vecPos, &pos); if (bAccelSampleStopped) { @@ -1347,8 +1347,8 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * gearNr = 1; CurrentPretendGear = gearNr; } - processedAccelSampleStopped = true; - bAccelSampleStopped = false; + processedAccelSampleStopped = TRUE; + bAccelSampleStopped = FALSE; } if (!channelUsed) { @@ -1375,14 +1375,14 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * freq /= 2; SampleManager.SetChannelFrequency(m_nActiveSamples, freq); if (!channelUsed) { - SampleManager.SetChannelReverbFlag(m_nActiveSamples, m_bDynamicAcousticModelingStatus != false); + SampleManager.SetChannelReverbFlag(m_nActiveSamples, m_bDynamicAcousticModelingStatus != FALSE); SampleManager.StartChannel(m_nActiveSamples); } } break; } if (nCruising != 0) { - bAccelSampleStopped = true; + bAccelSampleStopped = TRUE; if (accelerateState < 150 || automobile->m_nWheelsOnGround == 0 || automobile->bIsHandbrakeOn || lostTraction || currentGear < params.m_pTransmission->nNumberOfGears - 1) { nCruising = 0; @@ -1396,7 +1396,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * freq = 27 * nCruising + freqModifier + 22050; if (engineSoundType == SFX_BANK_TRUCK) freq /= 2; - AddPlayerCarSample(85, freq, (soundOffset + SFX_CAR_AFTER_ACCEL_1), engineSoundType, 64, true); + AddPlayerCarSample(85, freq, (soundOffset + SFX_CAR_AFTER_ACCEL_1), engineSoundType, 64, TRUE); } } } @@ -1406,7 +1406,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * bLostTractionLastFrame = lostTraction; } -bool +bool8 cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) { const float SOUND_INTENSITY = 40.0f; @@ -1418,10 +1418,10 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) float skidVal = 0.0f; if (params.m_fDistance >= SQR(SOUND_INTENSITY)) - return false; + return FALSE; automobile = (CAutomobile *)params.m_pVehicle; if (automobile->m_nWheelsOnGround == 0) - return true; + return TRUE; CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); for (int32 i = 0; i < ARRAY_SIZE(automobile->m_aWheelState); i++) { if (automobile->m_aWheelState[i] == WHEEL_STATE_NORMAL || automobile->Damage.GetWheelStatus(i) == WHEEL_STATUS_MISSING) @@ -1462,7 +1462,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) m_sQueueSample.m_nFrequency = 13000.f * skidVal + 35000.f; m_sQueueSample.m_nVolume /= 4; if (m_sQueueSample.m_nVolume == 0) - return true; + return TRUE; break; case SURFACE_GRAVEL: case SURFACE_MUD_DRY: @@ -1479,7 +1479,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) } m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 8; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; @@ -1487,14 +1487,14 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } - return true; + return TRUE; } float @@ -1569,7 +1569,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nHornSample; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nHornFrequency; m_sQueueSample.m_nLoopCount = 0; @@ -1578,10 +1578,10 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 5.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -1589,7 +1589,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) } } -bool +bool8 cAudioManager::UsesSiren(int32 model) const { switch (model) { @@ -1599,13 +1599,13 @@ cAudioManager::UsesSiren(int32 model) const case POLICE: case ENFORCER: case PREDATOR: - return true; + return TRUE; default: - return false; + return FALSE; } } -bool +bool8 cAudioManager::UsesSirenSwitching(int32 model) const { switch (model) { @@ -1613,21 +1613,21 @@ cAudioManager::UsesSirenSwitching(int32 model) const case POLICE: case ENFORCER: case PREDATOR: - return true; + return TRUE; default: - return false; + return FALSE; } } -bool +bool8 cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) { const float SOUND_INTENSITY = 110.0f; if (params.m_fDistance < SQR(SOUND_INTENSITY)) { CVehicle *veh = params.m_pVehicle; - if (veh->m_bSirenOrAlarm == false && !veh->IsAlarmOn()) - return true; + if (veh->m_bSirenOrAlarm == FALSE && !veh->IsAlarmOn()) + return TRUE; CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(80, SOUND_INTENSITY, m_sQueueSample.m_fDistance); @@ -1635,7 +1635,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) m_sQueueSample.m_nCounter = 5; if (UsesSiren(params.m_nIndex)) { if (params.m_pVehicle->GetStatus() == STATUS_ABANDONED) - return true; + return TRUE; if (veh->m_nCarHornTimer && params.m_nIndex != FIRETRUK) { m_sQueueSample.m_nSampleIndex = SFX_SIREN_FAST; if (params.m_nIndex == FBICAR) @@ -1652,7 +1652,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nSirenOrAlarmFrequency; } m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 80; @@ -1660,25 +1660,25 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 7.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); - return true; + return TRUE; } else - return true; + return TRUE; } else - return false; + return FALSE; } -bool +bool8 cAudioManager::UsesReverseWarning(int32 model) const { return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == COACH; } -bool +bool8 cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) { const float SOUND_INTENSITY = 50.0f; @@ -1686,7 +1686,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) CVehicle *veh = params.m_pVehicle; if (params.m_fDistance >= SQR(SOUND_INTENSITY)) - return false; + return FALSE; if (veh->bEngineOn && veh->m_fGasPedal < 0.0f) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); @@ -1695,7 +1695,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) m_sQueueSample.m_nCounter = 12; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_WARNING; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = (100 * m_sQueueSample.m_nEntityIndex & 1023) + SampleManager.GetSampleBaseFrequency(SFX_REVERSE_WARNING); m_sQueueSample.m_nLoopCount = 0; @@ -1704,17 +1704,17 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } - return true; + return TRUE; } -bool +bool8 cAudioManager::ProcessVehicleDoors(cVehicleParams& params) { const float SOUND_INTENSITY = 40.0f; @@ -1725,7 +1725,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) float velocity; if (params.m_fDistance >= SQR(SOUND_INTENSITY)) - return false; + return FALSE; automobile = (CAutomobile *)params.m_pVehicle; CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); @@ -1742,7 +1742,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = m_anRandomTable[1] % 6 + SFX_COL_CAR_PANEL_1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) + RandomDisplacement(1000); m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = emittingVol; @@ -1750,33 +1750,33 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 1.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); } } } } } - return true; + return TRUE; } -bool +bool8 cAudioManager::ProcessAirBrakes(cVehicleParams& params) { CAutomobile *automobile; uint8 rand; if (params.m_fDistance > SQR(30)) - return false; + return FALSE; automobile = (CAutomobile *)params.m_pVehicle; if (!automobile->bEngineOn) - return true; + return TRUE; if ((automobile->m_fVelocityChangeForAudio < 0.025f || params.m_fVelocityChange >= 0.025f) && (automobile->m_fVelocityChangeForAudio > -0.025f || params.m_fVelocityChange <= 0.025f)) - return true; + return TRUE; CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); rand = m_anRandomTable[0] % 10 + 70; @@ -1787,7 +1787,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AIR_BRAKES); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = rand; @@ -1795,22 +1795,22 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - return true; + return TRUE; } -bool +bool8 cAudioManager::HasAirBrakes(int32 model) const { return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == COACH; } -bool +bool8 cAudioManager::ProcessEngineDamage(cVehicleParams& params) { const int engineDamageIntensity = 40; @@ -1820,12 +1820,12 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) uint8 emittingVolume; if (params.m_fDistance >= SQR(engineDamageIntensity)) - return false; + return FALSE; veh = (CAutomobile *)params.m_pVehicle; if (veh->bEngineOn) { engineStatus = veh->Damage.GetEngineStatus(); if (engineStatus > 250 || engineStatus < 100) - return true; + return TRUE; if (engineStatus < 225) { m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; emittingVolume = 6; @@ -1842,30 +1842,30 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = 28; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } - return true; + return TRUE; } -bool +bool8 cAudioManager::ProcessCarBombTick(cVehicleParams& params) { CAutomobile *automobile; if (params.m_fDistance >= SQR(40.f)) - return false; + return FALSE; automobile = (CAutomobile *)params.m_pVehicle; if (automobile->bEngineOn && automobile->m_bombType == CARBOMB_TIMEDACTIVE) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); @@ -1874,7 +1874,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) m_sQueueSample.m_nCounter = 35; m_sQueueSample.m_nSampleIndex = SFX_COUNTDOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); m_sQueueSample.m_nLoopCount = 0; @@ -1883,14 +1883,14 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } - return true; + return TRUE; } void @@ -1900,7 +1900,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) uint8 emittingVol; float relVol; float vol; - bool noReflections; + bool8 noReflections; float maxDist; static uint8 WaveIndex = 41; @@ -1910,7 +1910,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) for (int i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { noReflections = 0; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bRequireReflection = FALSE; event = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; switch (event) { case SOUND_CAR_DOOR_CLOSE_BONNET: @@ -1950,7 +1950,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; break; } case SOUND_CAR_DOOR_OPEN_BONNET: @@ -1988,7 +1988,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; break; } case SOUND_CAR_WINDSHIELD_CRACK: { @@ -2034,7 +2034,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; break; } case SOUND_CAR_LIGHT_BREAK: { @@ -2079,7 +2079,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_nReleasingVolumeDivider = 7; - noReflections = true; + noReflections = TRUE; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[0] % 15 + 55; break; @@ -2161,7 +2161,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; emittingVol = (37.f * vol * 2500.0f / 96.0f) + 90; maxDist = SQR(SOUND_INTENSITY); - noReflections = true; + noReflections = TRUE; break; } case SOUND_CAR_BOMB_TICK: { @@ -2174,7 +2174,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVol = 60; break; } @@ -2234,7 +2234,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVol = 50; maxDist = SQR(SOUND_INTENSITY); break; @@ -2265,7 +2265,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVol = m_anRandomTable[4] % 20 + 90; break; } @@ -2282,7 +2282,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 20 + 55; CrunchOffset %= 2; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; break; } case SOUND_CAR_PED_COLLISION: { @@ -2311,23 +2311,23 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) if (m_sQueueSample.m_nVolume != 0) { if (noReflections) { m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; } else { m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; } m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bIs2D = FALSE; AddSampleToRequestedQueue(); } } } } -bool +bool8 cAudioManager::ProcessTrainNoise(cVehicleParams& params) { const float SOUND_INTENSITY = 300.0f; @@ -2337,7 +2337,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) float speedMultipler; if (params.m_fDistance >= SQR(SOUND_INTENSITY)) - return false; + return FALSE; if (params.m_fVelocityChange > 0.0f) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); @@ -2350,7 +2350,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nCounter = 32; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR); m_sQueueSample.m_nLoopCount = 0; @@ -2359,10 +2359,10 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -2373,7 +2373,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nCounter = 33; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987; m_sQueueSample.m_nLoopCount = 0; @@ -2382,18 +2382,18 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } } - return true; + return TRUE; } -bool +bool8 cAudioManager::ProcessBoatEngine(cVehicleParams& params) { CBoat *boat; @@ -2419,7 +2419,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nFrequency = 10386; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 80; @@ -2427,10 +2427,10 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } if (FindPlayerVehicle() == params.m_pVehicle) { @@ -2454,12 +2454,12 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) } m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, intensity, m_sQueueSample.m_fDistance); if (!m_sQueueSample.m_nVolume) - return true; + return TRUE; m_sQueueSample.m_nCounter = 40; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; @@ -2467,10 +2467,10 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; } else { if (FindPlayerVehicle() == params.m_pVehicle) { padAccelerate = Max(Pads[0].GetAccelerate(), Pads[0].GetBrake()); @@ -2512,10 +2512,10 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, intensity, m_sQueueSample.m_fDistance); if (!m_sQueueSample.m_nVolume) - return true; + return TRUE; m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; @@ -2523,18 +2523,18 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; } AddSampleToRequestedQueue(); - return true; + return TRUE; } - return false; + return FALSE; } -bool +bool8 cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) { float velocityChange; @@ -2542,11 +2542,11 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) float multiplier; if (params.m_fDistance > SQR(50)) - return false; + return FALSE; velocityChange = Abs(params.m_fVelocityChange); if (velocityChange <= 0.0005f && ((CBoat*)params.m_pVehicle)->bBoatInWater) - return true; + return TRUE; velocityChange = Min(0.75f, velocityChange); multiplier = (velocityChange - 0.0005f) / (1499.0f / 2000.0f); @@ -2557,7 +2557,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) m_sQueueSample.m_nCounter = 38; m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000; m_sQueueSample.m_nLoopCount = 0; @@ -2566,14 +2566,14 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - return true; + return TRUE; } struct tHelicopterSampleData { @@ -2582,7 +2582,7 @@ struct tHelicopterSampleData { uint8 m_bBaseVolume; }; -bool +bool8 cAudioManager::ProcessHelicopter(cVehicleParams& params) { CHeli *heli; @@ -2593,7 +2593,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) static const tHelicopterSampleData gHeliSfxRanges[3] = {{400.f, 380.f, 100}, {100.f, 70.f, MAX_VOLUME}, {60.f, 30.f, MAX_VOLUME}}; if (SQR(gHeliSfxRanges[0].m_fMaxDistance) <= params.m_fDistance) - return false; + return FALSE; CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); heli = (CHeli *)params.m_pVehicle; @@ -2601,7 +2601,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) MaxDist = gHeliSfxRanges[i].m_fMaxDistance; dist = m_sQueueSample.m_fDistance; if (dist >= MaxDist) - return true; + return TRUE; baseDist = gHeliSfxRanges[i].m_fBaseDistance; if (dist < baseDist) emittingVol = (gHeliSfxRanges[i].m_bBaseVolume * ((MaxDist - dist) / (MaxDist - baseDist))); @@ -2613,7 +2613,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) m_sQueueSample.m_nCounter = i + 65; m_sQueueSample.m_nSampleIndex = i + SFX_HELI_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 1200 * heli->m_nHeliId + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 0; @@ -2622,14 +2622,14 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } - return true; + return TRUE; } void @@ -2771,12 +2771,12 @@ cAudioManager::ProcessJumboDecel(CPlane *plane) } } -bool +bool8 cAudioManager::SetupJumboTaxiSound(uint8 vol) { const float SOUND_INTENSITY = 180.0f; if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY) - return false; + return FALSE; uint8 emittingVol = (vol / 2) + ((vol / 2) * m_sQueueSample.m_fDistance / SOUND_INTENSITY); @@ -2788,7 +2788,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = GetJumboTaxiFreq(); m_sQueueSample.m_nLoopCount = 0; @@ -2797,22 +2797,22 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - return true; + return TRUE; } -bool +bool8 cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) { const float SOUND_INTENSITY = 170.0f; if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY) - return false; + return FALSE; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); @@ -2820,7 +2820,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; @@ -2829,21 +2829,21 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - return true; + return TRUE; } -bool +bool8 cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) { const float SOUND_INTENSITY = 180.0f; if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY) - return false; + return FALSE; uint8 emittingVol = vol - gJumboVolOffsetPercentage / 100; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); @@ -2851,7 +2851,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) m_sQueueSample.m_nCounter = 3; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; @@ -2860,21 +2860,21 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - return true; + return TRUE; } -bool +bool8 cAudioManager::SetupJumboFlySound(uint8 emittingVol) { const float SOUND_INTENSITY = 440.0f; if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY) - return false; + return FALSE; int32 vol = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); m_sQueueSample.m_nVolume = vol; @@ -2882,29 +2882,29 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); AddSampleToRequestedQueue(); } - return true; + return TRUE; } -bool +bool8 cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) { const float SOUND_INTENSITY = 240.0f; if (m_sQueueSample.m_fDistance >= SOUND_INTENSITY) - return false; + return FALSE; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); @@ -2912,7 +2912,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nCounter = 5; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); m_sQueueSample.m_nLoopCount = 0; @@ -2921,11 +2921,11 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 12; m_sQueueSample.m_nOffset = 0; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); m_sQueueSample.m_nCounter = 6; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; @@ -2933,7 +2933,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nOffset = MAX_VOLUME; AddSampleToRequestedQueue(); } - return true; + return TRUE; } int32 @@ -2954,7 +2954,7 @@ cAudioManager::ProcessPed(CPhysical *ped) m_sQueueSample.m_vecPos = ped->GetPosition(); - params.m_bDistanceCalculated = false; + params.m_bDistanceCalculated = FALSE; params.m_pPed = (CPed *)ped; params.m_fDistance = GetDistanceSquared(m_sQueueSample.m_vecPos); if (ped->GetModelIndex() == MI_FATMALE02) @@ -2993,7 +2993,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) m_sQueueSample.m_nCounter = 64; m_sQueueSample.m_nSampleIndex = SFX_HEADPHONES; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_HEADPHONES); m_sQueueSample.m_nLoopCount = 0; @@ -3002,10 +3002,10 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 7.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } return; @@ -3021,9 +3021,9 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) CPed *ped = params.m_pPed; - bool narrowSoundRange; + bool8 narrowSoundRange; int16 sound; - bool stereo; + bool8 stereo; CWeapon *weapon; float maxDist = 0.f; // uninitialized variable @@ -3031,9 +3031,9 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) weapon = params.m_pPed->GetWeapon(); for (uint32 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { - stereo = false; - narrowSoundRange = false; - m_sQueueSample.m_bRequireReflection = false; + stereo = FALSE; + narrowSoundRange = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; sound = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; switch (sound) { case SOUND_STEP_START: @@ -3110,9 +3110,9 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; break; case SOUND_FALL_LAND: case SOUND_FALL_COLLAPSE: @@ -3138,9 +3138,9 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; break; case SOUND_FIGHT_PUNCH_33: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_1; @@ -3192,7 +3192,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) AddFightSound: m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound; - narrowSoundRange = true; + narrowSoundRange = TRUE; ++iSound; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; @@ -3203,15 +3203,15 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) emittingVol = m_anRandomTable[3] % 26 + 100; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; break; case SOUND_WEAPON_BAT_ATTACK: m_sQueueSample.m_nSampleIndex = SFX_BAT_HIT_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 22000; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; @@ -3222,12 +3222,12 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[2] % 20 + 100; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; case SOUND_WEAPON_SHOT_FIRED: weapon = ped->GetWeapon(); @@ -3236,7 +3236,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nSampleIndex = SFX_COLT45_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COLT45_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3248,18 +3248,18 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[1] % 10 + 90; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; case WEAPONTYPE_UZI: m_sQueueSample.m_nSampleIndex = SFX_UZI_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3271,14 +3271,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) emittingVol = m_anRandomTable[3] % 15 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; case WEAPONTYPE_SHOTGUN: m_sQueueSample.m_nSampleIndex = SFX_SHOTGUN_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOTGUN_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3290,18 +3290,18 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[2] % 10 + 100; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; case WEAPONTYPE_AK47: m_sQueueSample.m_nSampleIndex = SFX_AK47_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AK47_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3313,14 +3313,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) emittingVol = m_anRandomTable[1] % 15 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; case WEAPONTYPE_M16: m_sQueueSample.m_nSampleIndex = SFX_M16_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_M16_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3332,14 +3332,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) emittingVol = m_anRandomTable[4] % 15 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; case WEAPONTYPE_SNIPERRIFLE: m_sQueueSample.m_nSampleIndex = SFX_SNIPER_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SNIPER_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3351,18 +3351,18 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[4] % 10 + 110; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; case WEAPONTYPE_ROCKETLAUNCHER: m_sQueueSample.m_nSampleIndex = SFX_ROCKET_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 1; @@ -3374,12 +3374,12 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[0] % 20 + 80; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; case WEAPONTYPE_FLAMETHROWER: m_sQueueSample.m_nSampleIndex = SFX_FLAMETHROWER_LEFT; @@ -3395,13 +3395,13 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nEmittingVolume = 90; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 6; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; default: continue; @@ -3444,7 +3444,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) } emittingVol = 75; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency += RandomDisplacement(300); m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 5; @@ -3455,9 +3455,9 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = 75; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; break; case SOUND_WEAPON_AK47_BULLET_ECHO: case SOUND_WEAPON_UZI_BULLET_ECHO: @@ -3465,7 +3465,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nSampleIndex = SFX_UZI_END_LEFT; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_END_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nReleasingVolumeModificator = 3; @@ -3477,12 +3477,12 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = m_anRandomTable[4] % 10 + 40; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; else - stereo = true; + stereo = TRUE; break; case SOUND_WEAPON_FLAMETHROWER_FIRE: m_sQueueSample.m_nSampleIndex = SFX_FLAMETHROWER_START_LEFT; @@ -3499,14 +3499,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopEnd = -1; emittingVol = 70; m_sQueueSample.m_nEmittingVolume = 70; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; case SOUND_WEAPON_HIT_PED: m_sQueueSample.m_nSampleIndex = SFX_BULLET_PED; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BULLET_PED); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); m_sQueueSample.m_nReleasingVolumeModificator = 7; @@ -3518,14 +3518,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) emittingVol = m_anRandomTable[0] % 20 + 90; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; case SOUND_SPLASH: m_sQueueSample.m_nSampleIndex = SFX_SPLASH_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = iSound++; - narrowSoundRange = true; + narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = RandomDisplacement(1400) + 20000; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; @@ -3536,9 +3536,9 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) emittingVol = m_anRandomTable[2] % 30 + 70; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; break; default: SetupPedComments(params, sound); @@ -3553,13 +3553,13 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) if (m_sQueueSample.m_nVolume != 0) { if (stereo) { if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_fSoundIntensity) { - m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nOffset = 0; } else { - stereo = false; + stereo = FALSE; } } - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; AddSampleToRequestedQueue(); if (stereo) { m_sQueueSample.m_nOffset = 127; @@ -6101,18 +6101,18 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_fSoundIntensity = 50.0f; break; } - AudioManager.m_sQueueSample.m_bReleasingSoundFlag = true; + AudioManager.m_sQueueSample.m_bReleasingSoundFlag = TRUE; AudioManager.m_sQueueSample.m_vecPos = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_vecPos; if (sampleIndex >= SFX_AMMU_D && sampleIndex <= SFX_AMMU_F) { - AudioManager.m_sQueueSample.m_bReverbFlag = false; - AudioManager.m_sQueueSample.m_bRequireReflection = false; + AudioManager.m_sQueueSample.m_bReverbFlag = FALSE; + AudioManager.m_sQueueSample.m_bRequireReflection = FALSE; } else { - AudioManager.m_sQueueSample.m_bReverbFlag = true; - AudioManager.m_sQueueSample.m_bRequireReflection = true; + AudioManager.m_sQueueSample.m_bReverbFlag = TRUE; + AudioManager.m_sQueueSample.m_bRequireReflection = TRUE; } - AudioManager.m_sQueueSample.m_bIs2D = false; + AudioManager.m_sQueueSample.m_bIs2D = FALSE; AudioManager.m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(AudioManager.m_sQueueSample.m_nSampleIndex) + AudioManager.RandomDisplacement(750); if (CTimer::GetIsSlowMotionActive()) @@ -6203,15 +6203,15 @@ cAudioManager::ProcessExplosions(int32 explosion) if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); } } @@ -6273,14 +6273,14 @@ cAudioManager::ProcessFires(int32) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nReleasingVolumeDivider = 10; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -6317,14 +6317,14 @@ cAudioManager::ProcessWaterCannon(int32) m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nReleasingVolumeDivider = 8; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nEmittingVolume = 50; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -6386,8 +6386,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = 9000; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVolume = RandomDisplacement(10) + 50; break; case SCRIPT_SOUND_BULLET_HIT_GROUND_1: @@ -6400,7 +6400,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 9; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; emittingVolume = m_anRandomTable[2] % 20 + 90; break; case SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_1: @@ -6414,7 +6414,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_STATION_ANNOUNCE); m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_PAYPHONE_RINGING: m_sQueueSample.m_fSoundIntensity = 80.0f; @@ -6424,8 +6424,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PHONE_RING); m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; break; case SCRIPT_SOUND_GLASS_BREAK_L: m_sQueueSample.m_fSoundIntensity = 60.0f; @@ -6435,7 +6435,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_GLASS_BREAK_S: m_sQueueSample.m_fSoundIntensity = 60.0f; @@ -6445,7 +6445,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_GLASS_CRACK: m_sQueueSample.m_fSoundIntensity = 60.0f; @@ -6455,8 +6455,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = TRUE; break; case SCRIPT_SOUND_GLASS_LIGHT_BREAK: m_sQueueSample.m_fSoundIntensity = 55.0f; @@ -6465,7 +6465,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 19000; m_sQueueSample.m_nReleasingVolumeModificator = 9; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; emittingVolume = RandomDisplacement(11) + 25; break; case SCRIPT_SOUND_BOX_DESTROYED_1: @@ -6475,8 +6475,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_BOX_DESTROYED_2: @@ -6486,8 +6486,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_METAL_COLLISION: @@ -6498,8 +6498,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVolume = m_anRandomTable[2] % 30 + 70; break; case SCRIPT_SOUND_TIRE_COLLISION: @@ -6510,8 +6510,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bRequireReflection = TRUE; emittingVolume = m_anRandomTable[2] % 30 + 60; break; case SCRIPT_SOUND_GUNSHELL_DROP: @@ -6546,7 +6546,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; emittingVolume = m_anRandomTable[2] % 20 + 30; break; case SCRIPT_SOUND_GUNSHELL_DROP_SOFT: @@ -6556,7 +6556,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; emittingVolume = m_anRandomTable[2] % 20 + 30; break; default: @@ -6570,11 +6570,11 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; AddSampleToRequestedQueue(); } } @@ -7175,14 +7175,14 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = 0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; - m_sQueueSample.m_bReverbFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_nEmittingVolume = emittingVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -7247,16 +7247,16 @@ cAudioManager::ProcessPornCinema(uint8 sound) if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -7270,15 +7270,15 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nCounter = rand + 1; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); gPornNextTime = time + 2000 + m_anRandomTable[3] % 6000; } @@ -7308,16 +7308,16 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_WORKSHOP; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_WORKSHOP_1); m_sQueueSample.m_nCounter = 0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -7347,16 +7347,16 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SAWMILL_LOOP); m_sQueueSample.m_nCounter = 0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); @@ -7367,15 +7367,15 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 1; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); gSawMillNextTime = time + 2000 + m_anRandomTable[3] % 4000; } @@ -7403,16 +7403,16 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_LOOP); m_sQueueSample.m_nCounter = 0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 45; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); @@ -7421,16 +7421,16 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_SONG_LOOP); m_sQueueSample.m_nCounter = 1; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 110; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -7460,16 +7460,16 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SHOP; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOP_LOOP); m_sQueueSample.m_nCounter = 0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 30; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); @@ -7481,16 +7481,16 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SHOP; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = rand + 1; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 70; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); gShopNextTime = time + 3000 + m_anRandomTable[3] % 7000; } @@ -7524,16 +7524,16 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_AIRPORT; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 110; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); gAirportNextTime = time + 10000 + m_anRandomTable[3] % 20000; } @@ -7571,16 +7571,16 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 4); m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); gCinemaNextTime = time + 1000 + m_anRandomTable[3] % 4000; } @@ -7620,16 +7620,16 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOCKS_FOGHORN); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); gDocksNextTime = time + 10000 + m_anRandomTable[3] % 40000; } @@ -7668,16 +7668,16 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nEmittingVolume = rand; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); gHomeNextTime = time + 1000 + m_anRandomTable[3] % 4000; } @@ -7720,19 +7720,19 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); cPedParams params; - params.m_bDistanceCalculated = true; + params.m_bDistanceCalculated = TRUE; params.m_fDistance = distSquared; SetupPedComments(params, SOUND_INJURED_PED_MALE_PRISON); } @@ -7768,14 +7768,14 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nOffset = (m_anRandomTable[2] & 15) + 55; - m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; - m_sQueueSample.m_bReverbFlag = false; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } if (CWeather::Rain > 0.0f && (!CCullZones::CamNoRain() || !CCullZones::PlayerNoRain())) { @@ -7786,15 +7786,15 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nOffset = 63; - m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 30; - m_sQueueSample.m_bReverbFlag = false; + m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -7802,10 +7802,10 @@ cAudioManager::ProcessWeather(int32 id) void cAudioManager::ProcessFrontEnd() { - bool stereo; - bool processedPickup; - bool processedMission; - bool frontendBank; + bool8 stereo; + bool8 processedPickup; + bool8 processedMission; + bool8 frontendBank; int16 sample; static uint8 iSound = 0; @@ -7813,10 +7813,10 @@ cAudioManager::ProcessFrontEnd() static uint32 cPartMisComNextFrame = 0; for (uint32 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { - processedPickup = false; - stereo = false; - processedMission = false; - frontendBank = false; + processedPickup = FALSE; + stereo = FALSE; + processedMission = FALSE; + frontendBank = FALSE; switch (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]) { case SOUND_WEAPON_SNIPER_SHOT_NO_ZOOM: m_sQueueSample.m_nSampleIndex = SFX_ERROR_FIRE_RIFLE; @@ -7828,7 +7828,7 @@ cAudioManager::ProcessFrontEnd() case SOUND_GARAGE_BAD_VEHICLE: case SOUND_GARAGE_BOMB_ALREADY_SET: m_sQueueSample.m_nSampleIndex = SFX_PICKUP_ERROR_LEFT; - stereo = true; + stereo = TRUE; break; case SOUND_GARAGE_OPENING: case SOUND_GARAGE_BOMB1_SET: @@ -7844,19 +7844,19 @@ cAudioManager::ProcessFrontEnd() case SOUND_EVIDENCE_PICKUP: case SOUND_UNLOAD_GOLD: m_sQueueSample.m_nSampleIndex = SFX_PICKUP_2_LEFT; - processedPickup = true; - stereo = true; + processedPickup = TRUE; + stereo = TRUE; break; case SOUND_PICKUP_WEAPON_BOUGHT: case SOUND_PICKUP_WEAPON: m_sQueueSample.m_nSampleIndex = SFX_PICKUP_1_LEFT; - processedPickup = true; - stereo = true; + processedPickup = TRUE; + stereo = TRUE; break; case SOUND_PICKUP_ERROR: m_sQueueSample.m_nSampleIndex = SFX_PICKUP_ERROR_LEFT; - processedPickup = true; - stereo = true; + processedPickup = TRUE; + stereo = TRUE; break; case SOUND_PICKUP_BONUS: case SOUND_PICKUP_MONEY: @@ -7865,8 +7865,8 @@ cAudioManager::ProcessFrontEnd() case SOUND_PICKUP_PACMAN_PACKAGE: case SOUND_PICKUP_FLOAT_PACKAGE: m_sQueueSample.m_nSampleIndex = SFX_PICKUP_3_LEFT; - processedPickup = true; - stereo = true; + processedPickup = TRUE; + stereo = TRUE; break; case SOUND_PAGER: // TODO: ps2 code @@ -7883,49 +7883,49 @@ cAudioManager::ProcessFrontEnd() break; case SOUND_PART_MISSION_COMPLETE: m_sQueueSample.m_nSampleIndex = SFX_PART_MISSION_COMPLETE; - processedMission = true; + processedMission = TRUE; break; case SOUND_FRONTEND_MENU_STARTING: m_sQueueSample.m_nSampleIndex = SFX_START_BUTTON_LEFT; - stereo = true; + stereo = TRUE; break; case SOUND_FRONTEND_MENU_NEW_PAGE: m_sQueueSample.m_nSampleIndex = SFX_PAGE_CHANGE_AND_BACK_LEFT; - stereo = true; - frontendBank = true; + stereo = TRUE; + frontendBank = TRUE; break; case SOUND_FRONTEND_MENU_NAVIGATION: m_sQueueSample.m_nSampleIndex = SFX_HIGHLIGHT_LEFT; - stereo = true; - frontendBank = true; + stereo = TRUE; + frontendBank = TRUE; break; case SOUND_FRONTEND_MENU_SETTING_CHANGE: m_sQueueSample.m_nSampleIndex = SFX_SELECT_LEFT; - stereo = true; - frontendBank = true; + stereo = TRUE; + frontendBank = TRUE; break; case SOUND_FRONTEND_MENU_BACK: m_sQueueSample.m_nSampleIndex = SFX_SUB_MENU_BACK_LEFT; - stereo = true; - frontendBank = true; + stereo = TRUE; + frontendBank = TRUE; break; case SOUND_FRONTEND_STEREO: m_sQueueSample.m_nSampleIndex = SFX_STEREO_LEFT; - stereo = true; - frontendBank = true; + stereo = TRUE; + frontendBank = TRUE; break; case SOUND_FRONTEND_MONO: m_sQueueSample.m_nSampleIndex = SFX_MONO; - frontendBank = true; + frontendBank = TRUE; break; case SOUND_FRONTEND_AUDIO_TEST: m_sQueueSample.m_nSampleIndex = m_anRandomTable[0] % 3 + SFX_NOISE_BURST_1; - frontendBank = true; + frontendBank = TRUE; break; case SOUND_FRONTEND_FAIL: m_sQueueSample.m_nSampleIndex = SFX_ERROR_LEFT; - frontendBank = true; - stereo = true; + frontendBank = TRUE; + stereo = TRUE; break; case SOUND_FRONTEND_RADIO_TURN_OFF: case SOUND_FRONTEND_RADIO_CHANGE: @@ -7962,10 +7962,10 @@ cAudioManager::ProcessFrontEnd() m_sQueueSample.m_nVolume = 110; m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nBankIndex = frontendBank ? SFX_BANK_FRONT_END_MENU : SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 0; - m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; @@ -7973,8 +7973,8 @@ cAudioManager::ProcessFrontEnd() m_sQueueSample.m_nOffset = m_anRandomTable[0] & 31; else m_sQueueSample.m_nOffset = 63; - m_sQueueSample.m_bReverbFlag = false; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); if (stereo) { ++m_sQueueSample.m_nSampleIndex; @@ -7990,7 +7990,7 @@ cAudioManager::ProcessCrane() { CCrane *crane = (CCrane *)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity; float distSquared; - bool distCalculated = false; + bool8 distCalculated = FALSE; static const int intensity = 80; if (crane) { @@ -8005,7 +8005,7 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = 6000; m_sQueueSample.m_nLoopCount = 0; @@ -8014,10 +8014,10 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } if (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents) { @@ -8025,9 +8025,9 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); } } @@ -8075,14 +8075,14 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = i; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_bReleasingSoundFlag = false; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -8100,7 +8100,7 @@ cAudioManager::ProcessGarages() uint32 sampleIndex; uint8 j; float distSquared; - bool distCalculated; + bool8 distCalculated; static uint8 iSound = 32; @@ -8111,7 +8111,7 @@ cAudioManager::ProcessGarages() if (entity == nil) continue; m_sQueueSample.m_vecPos = entity->GetPosition(); - distCalculated = false; + distCalculated = FALSE; distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); if (distSquared < SQR(SOUND_INTENSITY)) { state = CGarages::aGarages[i].m_eGarageState; @@ -8131,7 +8131,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) / 2; m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nCounter = iSound++; if (iSound < 32) iSound = 32; @@ -8143,7 +8143,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; } } else { m_sQueueSample.m_nSampleIndex = SFX_GARAGE_DOOR_LOOP; @@ -8152,19 +8152,19 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; } m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nEmittingVolume = 90; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } break; @@ -8193,16 +8193,16 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nEmittingVolume = 60; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bIs2D = false; - m_sQueueSample.m_bReleasingSoundFlag = true; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nLoopStart = 0; m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nCounter = iSound++; if (iSound < 32) iSound = 32; - m_sQueueSample.m_bRequireReflection = true; + m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); } } @@ -8218,7 +8218,7 @@ void cAudioManager::ProcessFireHydrant() { float distSquared; - bool distCalculated = false; + bool8 distCalculated = FALSE; static const int intensity = 35; m_sQueueSample.m_vecPos = ((CEntity *)m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_pEntity)->GetPosition(); @@ -8230,7 +8230,7 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 4; m_sQueueSample.m_nFrequency = 15591; m_sQueueSample.m_nLoopCount = 0; @@ -8239,10 +8239,10 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = true; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -8255,7 +8255,7 @@ void cAudioManager::ProcessBridge() { float dist; - bool distCalculated = false; + bool8 distCalculated = FALSE; if (CBridge::pLiftRoad) { m_sQueueSample.m_vecPos = CBridge::pLiftRoad->GetPosition(); @@ -8290,7 +8290,7 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING; m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); m_sQueueSample.m_nLoopCount = 0; @@ -8299,10 +8299,10 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 450.0f; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 8; - m_sQueueSample.m_bReverbFlag = false; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -8317,7 +8317,7 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = 5500; m_sQueueSample.m_nLoopCount = 0; @@ -8326,9 +8326,9 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; - m_sQueueSample.m_bReleasingSoundFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = false; + m_sQueueSample.m_bReverbFlag = FALSE; AddSampleToRequestedQueue(); } } @@ -8352,7 +8352,7 @@ cAudioManager::ProcessBridgeOneShots() if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = false; + m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 1; @@ -8361,9 +8361,9 @@ cAudioManager::ProcessBridgeOneShots() m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; - m_sQueueSample.m_bReleasingSoundFlag = true; - m_sQueueSample.m_bReverbFlag = false; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } } @@ -8371,7 +8371,7 @@ cAudioManager::ProcessBridgeOneShots() #pragma endregion #pragma region MISSION_AUDIO -bool g_bMissionAudioLoadFailed; +bool8 g_bMissionAudioLoadFailed; struct MissionAudioData { const char *m_pName; @@ -8425,7 +8425,7 @@ FindMissionAudioSfx(const char *name) return NO_SAMPLE; } -bool +bool8 cAudioManager::MissionScriptAudioUsesPoliceChannel(int32 soundMission) const { switch (soundMission) { @@ -8441,9 +8441,9 @@ cAudioManager::MissionScriptAudioUsesPoliceChannel(int32 soundMission) const case STREAMED_SOUND_MISSION_R5_A: case STREAMED_SOUND_MISSION_LO2_A: case STREAMED_SOUND_MISSION_LO6_A: - return true; + return TRUE; default: - return false; + return FALSE; } } @@ -8456,12 +8456,12 @@ cAudioManager::PreloadMissionAudio(Const char *name) m_sMissionAudio.m_nSampleIndex = missionAudioSfx; m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_NOT_LOADED; m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_STOPPED; - m_sMissionAudio.m_bIsPlaying = false; + m_sMissionAudio.m_bIsPlaying = FALSE; m_sMissionAudio.m_nMissionAudioCounter = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; m_sMissionAudio.m_nMissionAudioCounter *= 4; - m_sMissionAudio.m_bIsPlayed = false; - m_sMissionAudio.m_bPredefinedProperties = true; - g_bMissionAudioLoadFailed = false; + m_sMissionAudio.m_bIsPlayed = FALSE; + m_sMissionAudio.m_bPredefinedProperties = TRUE; + g_bMissionAudioLoadFailed = FALSE; } } } @@ -8479,7 +8479,7 @@ void cAudioManager::SetMissionAudioLocation(float x, float y, float z) { if (m_bIsInitialised) { - m_sMissionAudio.m_bPredefinedProperties = false; + m_sMissionAudio.m_bPredefinedProperties = FALSE; m_sMissionAudio.m_vecPos = CVector(x, y, z); } } @@ -8489,10 +8489,10 @@ cAudioManager::PlayLoadedMissionAudio() { if (m_bIsInitialised && m_sMissionAudio.m_nSampleIndex != NO_SAMPLE && m_sMissionAudio.m_nLoadingStatus == LOADING_STATUS_LOADED && m_sMissionAudio.m_nPlayStatus == PLAY_STATUS_STOPPED) - m_sMissionAudio.m_bIsPlayed = true; + m_sMissionAudio.m_bIsPlayed = TRUE; } -bool +bool8 cAudioManager::IsMissionAudioSampleFinished() { if (m_bIsInitialised) @@ -8510,9 +8510,9 @@ cAudioManager::ClearMissionAudio() m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_NOT_LOADED; m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_STOPPED; - m_sMissionAudio.m_bIsPlaying = false; - m_sMissionAudio.m_bIsPlayed = false; - m_sMissionAudio.m_bPredefinedProperties = true; + m_sMissionAudio.m_bIsPlaying = FALSE; + m_sMissionAudio.m_bIsPlayed = FALSE; + m_sMissionAudio.m_bPredefinedProperties = TRUE; m_sMissionAudio.m_nMissionAudioCounter = 0; } } @@ -8565,9 +8565,9 @@ cAudioManager::ProcessMissionAudio() SetMissionScriptPoliceAudio(m_sMissionAudio.m_nSampleIndex); } else { if (m_nUserPause) - SampleManager.PauseStream(1, 1); + SampleManager.PauseStream(TRUE, 1); if (m_sMissionAudio.m_bPredefinedProperties) { - SampleManager.SetStreamedVolumeAndPan(80, 63, 1, 1); + SampleManager.SetStreamedVolumeAndPan(80, 63, TRUE, 1); } else { distSquared = GetDistanceSquared(m_sMissionAudio.m_vecPos); if (distSquared >= SQR(50.0f)) { @@ -8579,7 +8579,7 @@ cAudioManager::ProcessMissionAudio() TranslateEntity(&m_sMissionAudio.m_vecPos, &vec); pan = ComputePan(50.f, &vec); } - SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, 1, 1); + SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, TRUE, 1); } SampleManager.StartPreloadedStreamedFile(1); } @@ -8606,9 +8606,9 @@ cAudioManager::ProcessMissionAudio() } else if (m_sMissionAudio.m_bIsPlaying) { if (SampleManager.IsStreamPlaying(1) || m_nUserPause || m_nPreviousUserPause) { if (m_nUserPause) - SampleManager.PauseStream(1, 1); + SampleManager.PauseStream(TRUE, 1); else - SampleManager.PauseStream(0, 1); + SampleManager.PauseStream(FALSE, 1); } else { m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_FINISHED; m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; @@ -8623,7 +8623,7 @@ cAudioManager::ProcessMissionAudio() break; nCheckPlayingDelay = 0; } - m_sMissionAudio.m_bIsPlaying = true; + m_sMissionAudio.m_bIsPlaying = TRUE; } break; default: @@ -8633,7 +8633,7 @@ cAudioManager::ProcessMissionAudio() case LOADING_STATUS_FAILED: if (++nFramesUntilFailedLoad >= 90) { nFramesForPretendPlaying = 0; - g_bMissionAudioLoadFailed = true; + g_bMissionAudioLoadFailed = TRUE; nFramesUntilFailedLoad = 0; m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_LOADED; } diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index f61350fb..c15d04bd 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -22,8 +22,8 @@ const int allChannels = channels + 2; cAudioManager::cAudioManager() { - m_bIsInitialised = false; - m_bReverb = true; + m_bIsInitialised = FALSE; + m_bReverb = TRUE; m_fSpeedOfSound = SPEED_OF_SOUND / TIME_SPENT; m_nTimeSpent = TIME_SPENT; m_nActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS; @@ -34,16 +34,16 @@ cAudioManager::cAudioManager() ClearActiveSamples(); GenerateIntegerRandomNumberTable(); field_4 = 0; - m_bDynamicAcousticModelingStatus = true; + m_bDynamicAcousticModelingStatus = TRUE; for (int i = 0; i < NUM_AUDIOENTITIES; i++) { - m_asAudioEntities[i].m_bIsUsed = false; + m_asAudioEntities[i].m_bIsUsed = FALSE; m_anAudioEntityIndices[i] = NUM_AUDIOENTITIES; } m_nAudioEntitiesTotal = 0; m_FrameCounter = 0; - m_bFifthFrameFlag = false; - m_bTimerJustReset = false; + m_bFifthFrameFlag = FALSE; + m_bTimerJustReset = FALSE; m_nTimer = 0; } @@ -81,7 +81,7 @@ cAudioManager::Terminate() MusicManager.Terminate(); for (uint32 i = 0; i < NUM_AUDIOENTITIES; i++) { - m_asAudioEntities[i].m_bIsUsed = false; + m_asAudioEntities[i].m_bIsUsed = FALSE; m_anAudioEntityIndices[i] = ARRAY_SIZE(m_anAudioEntityIndices); } @@ -96,7 +96,7 @@ cAudioManager::Terminate() SampleManager.Terminate(); - m_bIsInitialised = false; + m_bIsInitialised = FALSE; PostTerminateGameSpecificShutdown(); } } @@ -108,7 +108,7 @@ cAudioManager::Service() if (m_bTimerJustReset) { ResetAudioLogicTimers(m_nTimer); MusicManager.ResetTimers(m_nTimer); - m_bTimerJustReset = false; + m_bTimerJustReset = FALSE; } if (m_bIsInitialised) { m_nPreviousUserPause = m_nUserPause; @@ -130,8 +130,8 @@ cAudioManager::CreateEntity(eAudioType type, void *entity) return AEHANDLE_ERROR_BADAUDIOTYPE; for (uint32 i = 0; i < ARRAY_SIZE(m_asAudioEntities); i++) { if (!m_asAudioEntities[i].m_bIsUsed) { - m_asAudioEntities[i].m_bIsUsed = true; - m_asAudioEntities[i].m_bStatus = false; + m_asAudioEntities[i].m_bIsUsed = TRUE; + m_asAudioEntities[i].m_bStatus = FALSE; m_asAudioEntities[i].m_nType = type; m_asAudioEntities[i].m_pEntity = entity; m_asAudioEntities[i].m_awAudioEvent[0] = SOUND_NO_SOUND; @@ -150,7 +150,7 @@ void cAudioManager::DestroyEntity(int32 id) { if (m_bIsInitialised && id >= 0 && id < NUM_AUDIOENTITIES && m_asAudioEntities[id].m_bIsUsed) { - m_asAudioEntities[id].m_bIsUsed = false; + m_asAudioEntities[id].m_bIsUsed = FALSE; for (int32 i = 0; i < m_nAudioEntitiesTotal; ++i) { if (id == m_anAudioEntityIndices[i]) { if (i < NUM_AUDIOENTITIES - 1) @@ -163,7 +163,7 @@ cAudioManager::DestroyEntity(int32 id) } void -cAudioManager::SetEntityStatus(int32 id, uint8 status) +cAudioManager::SetEntityStatus(int32 id, bool8 status) { if (m_bIsInitialised && id >= 0 && id < NUM_AUDIOENTITIES && m_asAudioEntities[id].m_bIsUsed) m_asAudioEntities[id].m_bStatus = status; @@ -191,7 +191,7 @@ cAudioManager::PlayOneShot(int32 index, uint16 sound, float vol) } } else { int32 i = 0; - while (true) { + while (TRUE) { if (i >= entity.m_AudioEvents) { if (entity.m_AudioEvents < ARRAY_SIZE(entity.m_awAudioEvent)) { entity.m_awAudioEvent[i] = sound; @@ -238,7 +238,7 @@ cAudioManager::SetEffectsFadeVol(uint8 volume) const } void -cAudioManager::SetMonoMode(uint8 mono) +cAudioManager::SetMonoMode(bool8 mono) { SampleManager.SetMonoMode(mono); } @@ -253,7 +253,7 @@ void cAudioManager::ResetTimers(uint32 time) { if (m_bIsInitialised) { - m_bTimerJustReset = true; + m_bTimerJustReset = TRUE; m_nTimer = time; ClearRequestedQueue(); if (m_nActiveSampleQueue) { @@ -372,13 +372,13 @@ cAudioManager::SetSpeakerConfig(int32 conf) const SampleManager.SetSpeakerConfig(conf); } -bool +bool8 cAudioManager::IsMP3RadioChannelAvailable() const { if (m_bIsInitialised) return SampleManager.IsMP3RadioChannelAvailable(); - return false; + return FALSE; } void @@ -398,12 +398,12 @@ cAudioManager::ReacquireDigitalHandle() const } void -cAudioManager::SetDynamicAcousticModelingStatus(uint8 status) +cAudioManager::SetDynamicAcousticModelingStatus(bool8 status) { - m_bDynamicAcousticModelingStatus = status!=0; + m_bDynamicAcousticModelingStatus = status; } -bool +bool8 cAudioManager::CheckForAnAudioFileOnCD() const { return SampleManager.CheckForAnAudioFileOnCD(); @@ -418,7 +418,7 @@ cAudioManager::GetCDAudioDriveLetter() const return 0; } -bool +bool8 cAudioManager::IsAudioInitialised() const { return m_bIsInitialised; @@ -527,7 +527,7 @@ cAudioManager::RandomDisplacement(uint32 seed) const { int32 value; - static bool bPos = true; + static bool8 bPos = TRUE; static uint32 Adjustment = 0; if (!seed) @@ -558,7 +558,7 @@ cAudioManager::AddSampleToRequestedQueue() { int32 calculatedVolume; uint8 sampleIndex; - bool bReflections; + bool8 bReflections; if (m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) { calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (MAX_VOLUME - m_sQueueSample.m_nVolume); @@ -571,21 +571,21 @@ cAudioManager::AddSampleToRequestedQueue() ++m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; } m_sQueueSample.m_nCalculatedVolume = calculatedVolume; - m_sQueueSample.m_bLoopEnded = false; + m_sQueueSample.m_bLoopEnded = FALSE; if (m_sQueueSample.m_bIs2D) { - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bRequireReflection = FALSE; m_sQueueSample.m_nLoopsRemaining = 0; } if (m_bDynamicAcousticModelingStatus && m_sQueueSample.m_nLoopCount) { bReflections = m_sQueueSample.m_bRequireReflection; } else { - bReflections = false; + bReflections = FALSE; m_sQueueSample.m_nLoopsRemaining = 0; } - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bRequireReflection = FALSE; if (!m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bReverbFlag = false; + m_sQueueSample.m_bReverbFlag = FALSE; m_asSamples[m_nActiveSampleQueue][sampleIndex] = m_sQueueSample; @@ -692,7 +692,7 @@ cAudioManager::UpdateReflections() void cAudioManager::AddReleasingSounds() { - bool toProcess[44]; // why not 27? + bool8 toProcess[44]; // why not 27? because PS2? int8 queue = m_nActiveSampleQueue == 0 ? 1 : 0; @@ -701,11 +701,11 @@ cAudioManager::AddReleasingSounds() if (sample.m_bLoopEnded) continue; - toProcess[i] = false; + toProcess[i] = FALSE; for (int32 j = 0; j < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; j++) { if (sample.m_nEntityIndex == m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][j]].m_nEntityIndex && sample.m_nCounter == m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][j]].m_nCounter) { - toProcess[i] = true; + toProcess[i] = TRUE; break; } } @@ -741,7 +741,7 @@ cAudioManager::AddReleasingSounds() void cAudioManager::ProcessActiveQueues() { - bool flag; + bool8 flag; float position2; float position1; @@ -758,8 +758,8 @@ cAudioManager::ProcessActiveQueues() CVector position; for (int32 i = 0; i < m_nActiveSamples; i++) { - m_asSamples[m_nActiveSampleQueue][i].m_bIsProcessed = false; - m_asActiveSamples[i].m_bIsProcessed = false; + m_asSamples[m_nActiveSampleQueue][i].m_bIsProcessed = FALSE; + m_asActiveSamples[i].m_bIsProcessed = FALSE; } for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; ++i) { @@ -775,15 +775,15 @@ cAudioManager::ProcessActiveQueues() flag = !(j & 1); } if (flag && !SampleManager.GetChannelUsedFlag(j)) { - sample.m_bLoopEnded = true; - m_asActiveSamples[j].m_bLoopEnded = true; + sample.m_bLoopEnded = TRUE; + m_asActiveSamples[j].m_bLoopEnded = TRUE; m_asActiveSamples[j].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[j].m_nEntityIndex = AEHANDLE_NONE; continue; } } - sample.m_bIsProcessed = true; - m_asActiveSamples[j].m_bIsProcessed = true; + sample.m_bIsProcessed = TRUE; + m_asActiveSamples[j].m_bIsProcessed = TRUE; sample.m_nVolumeChange = -1; if (!sample.m_bReleasingSoundFlag) { if (sample.m_bIs2D) { @@ -837,8 +837,8 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelReverbFlag(j, sample.m_bReverbFlag); break; } - sample.m_bIsProcessed = false; - m_asActiveSamples[j].m_bIsProcessed = false; + sample.m_bIsProcessed = FALSE; + m_asActiveSamples[j].m_bIsProcessed = FALSE; } } } @@ -902,8 +902,8 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannel3DDistances(j, m_asActiveSamples[j].m_fSoundIntensity, 0.25f * m_asActiveSamples[j].m_fSoundIntensity); SampleManager.StartChannel(j); } - m_asActiveSamples[j].m_bIsProcessed = true; - sample.m_bIsProcessed = true; + m_asActiveSamples[j].m_bIsProcessed = TRUE; + sample.m_bIsProcessed = TRUE; sample.m_nVolumeChange = -1; break; } @@ -930,28 +930,28 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_nCounter = 0; m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[i].m_nBankIndex = INVALID_SFX_BANK; - m_asActiveSamples[i].m_bIs2D = false; + m_asActiveSamples[i].m_bIs2D = FALSE; m_asActiveSamples[i].m_nReleasingVolumeModificator = 5; m_asActiveSamples[i].m_nFrequency = 0; m_asActiveSamples[i].m_nVolume = 0; m_asActiveSamples[i].m_nEmittingVolume = 0; m_asActiveSamples[i].m_fDistance = 0.0f; - m_asActiveSamples[i].m_bIsProcessed = false; - m_asActiveSamples[i].m_bLoopEnded = false; + m_asActiveSamples[i].m_bIsProcessed = FALSE; + m_asActiveSamples[i].m_bLoopEnded = FALSE; m_asActiveSamples[i].m_nLoopCount = 1; m_asActiveSamples[i].m_nLoopStart = 0; m_asActiveSamples[i].m_nLoopEnd = -1; m_asActiveSamples[i].m_fSpeedMultiplier = 0.0f; m_asActiveSamples[i].m_fSoundIntensity = 200.0f; m_asActiveSamples[i].m_nOffset = 63; - m_asActiveSamples[i].m_bReleasingSoundFlag = false; + m_asActiveSamples[i].m_bReleasingSoundFlag = FALSE; m_asActiveSamples[i].m_nCalculatedVolume = 0; m_asActiveSamples[i].m_nReleasingVolumeDivider = 0; m_asActiveSamples[i].m_nVolumeChange = -1; m_asActiveSamples[i].m_vecPos = CVector(0.0f, 0.0f, 0.0f); - m_asActiveSamples[i].m_bReverbFlag = false; + m_asActiveSamples[i].m_bReverbFlag = FALSE; m_asActiveSamples[i].m_nLoopsRemaining = 0; - m_asActiveSamples[i].m_bRequireReflection = false; + m_asActiveSamples[i].m_bRequireReflection = FALSE; } } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 57fbc818..edf5eb63 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -11,7 +11,7 @@ public: int32 m_nCounter; int32 m_nSampleIndex; uint8 m_nBankIndex; - bool m_bIs2D; + bool8 m_bIs2D; int32 m_nReleasingVolumeModificator; uint32 m_nFrequency; uint8 m_nVolume; @@ -22,15 +22,15 @@ public: uint8 m_nEmittingVolume; float m_fSpeedMultiplier; float m_fSoundIntensity; - bool m_bReleasingSoundFlag; + bool8 m_bReleasingSoundFlag; CVector m_vecPos; - bool m_bReverbFlag; + bool8 m_bReverbFlag; uint8 m_nLoopsRemaining; - bool m_bRequireReflection; // Used for oneshots + bool8 m_bRequireReflection; // Used for oneshots uint8 m_nOffset; int32 m_nReleasingVolumeDivider; - bool m_bIsProcessed; - bool m_bLoopEnded; + bool8 m_bIsProcessed; + bool8 m_bLoopEnded; int32 m_nCalculatedVolume; int8 m_nVolumeChange; }; @@ -45,7 +45,7 @@ class tAudioEntity public: eAudioType m_nType; void *m_pEntity; - bool m_bIsUsed; + bool8 m_bIsUsed; uint8 m_bStatus; int16 m_awAudioEvent[NUM_AUDIOENTITY_EVENTS]; float m_afVolume[NUM_AUDIOENTITY_EVENTS]; @@ -99,13 +99,13 @@ class cMissionAudio { public: CVector m_vecPos; - bool m_bPredefinedProperties; + bool8 m_bPredefinedProperties; int32 m_nSampleIndex; uint8 m_nLoadingStatus; uint8 m_nPlayStatus; - bool m_bIsPlaying; + bool8 m_bIsPlaying; int32 m_nMissionAudioCounter; - bool m_bIsPlayed; + bool8 m_bIsPlayed; }; VALIDATE_SIZE(cMissionAudio, 32); @@ -129,7 +129,7 @@ class CPed; class cPedParams { public: - bool m_bDistanceCalculated; + bool8 m_bDistanceCalculated; float m_fDistance; CPed *m_pPed; @@ -144,7 +144,7 @@ public: class cVehicleParams { public: - bool m_bDistanceCalculated; + bool8 m_bDistanceCalculated; float m_fDistance; CVehicle *m_pVehicle; cTransmission *m_pTransmission; @@ -184,14 +184,14 @@ enum { class cAudioManager { public: - bool m_bIsInitialised; - bool m_bReverb; // unused - bool m_bFifthFrameFlag; + bool8 m_bIsInitialised; + bool8 m_bReverb; // unused + bool8 m_bFifthFrameFlag; uint8 m_nActiveSamples; uint8 field_4; // unused - bool m_bDynamicAcousticModelingStatus; + bool8 m_bDynamicAcousticModelingStatus; float m_fSpeedOfSound; - bool m_bTimerJustReset; + bool8 m_bTimerJustReset; int32 m_nTimer; tSound m_sQueueSample; uint8 m_nActiveSampleQueue; @@ -230,19 +230,19 @@ public: float GetReflectionsDistance(int32 idx) const { return m_afReflectionsDistances[idx]; } int32 GetRandomNumber(int32 idx) const { return m_anRandomTable[idx]; } int32 GetRandomNumberInRange(int32 idx, int32 low, int32 high) const { return (m_anRandomTable[idx] % (high - low + 1)) + low; } - bool ShouldDuckMissionAudio() const { return m_sMissionAudio.m_nPlayStatus == 1; } + bool8 ShouldDuckMissionAudio() const { return m_sMissionAudio.m_nPlayStatus == 1; } // "Should" be in alphabetic order, except "getXTalkSfx" void AddDetailsToRequestedOrderList(uint8 sample); void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, - uint8 counter, bool notLooping); + uint8 counter, bool8 notLooping); void AddReflectionsToRequestedQueue(); void AddReleasingSounds(); void AddSampleToRequestedQueue(); void AgeCrimes(); - void CalculateDistance(bool &condition, float dist); - bool CheckForAnAudioFileOnCD() const; + void CalculateDistance(bool8 &condition, float dist); + bool8 CheckForAnAudioFileOnCD() const; void ClearActiveSamples(); void ClearMissionAudio(); void ClearRequestedQueue(); @@ -355,17 +355,17 @@ public: float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); - bool HasAirBrakes(int32 model) const; + bool8 HasAirBrakes(int32 model) const; void Initialise(); void InitialisePoliceRadio(); void InitialisePoliceRadioZones(); void InterrogateAudioEntities(); - bool IsAudioInitialised() const; - bool IsMissionAudioSampleFinished(); - bool IsMP3RadioChannelAvailable() const; + bool8 IsAudioInitialised() const; + bool8 IsMissionAudioSampleFinished(); + bool8 IsMP3RadioChannelAvailable() const; - bool MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; + bool8 MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; void PlayLoadedMissionAudio(); void PlayOneShot(int32 index, uint16 sound, float vol); @@ -379,27 +379,27 @@ public: void PreTerminateGameSpecificShutdown(); /// processX - main logic of adding new sounds void ProcessActiveQueues(); - bool ProcessAirBrakes(cVehicleParams& params); + bool8 ProcessAirBrakes(cVehicleParams& params); void ProcessAirportScriptObject(uint8 sound); - bool ProcessBoatEngine(cVehicleParams& params); - bool ProcessBoatMovingOverWater(cVehicleParams& params); + bool8 ProcessBoatEngine(cVehicleParams& params); + bool8 ProcessBoatMovingOverWater(cVehicleParams& params); void ProcessBridge(); void ProcessBridgeMotor(); void ProcessBridgeOneShots(); void ProcessBridgeWarning(); - bool ProcessCarBombTick(cVehicleParams& params); + bool8 ProcessCarBombTick(cVehicleParams& params); void ProcessCesna(cVehicleParams& params); void ProcessCinemaScriptObject(uint8 sound); void ProcessCrane(); void ProcessDocksScriptObject(uint8 sound); - bool ProcessEngineDamage(cVehicleParams& params); + bool8 ProcessEngineDamage(cVehicleParams& params); void ProcessEntity(int32 sound); void ProcessExplosions(int32 explosion); void ProcessFireHydrant(); void ProcessFires(int32 entity); void ProcessFrontEnd(); void ProcessGarages(); - bool ProcessHelicopter(cVehicleParams& params); + bool8 ProcessHelicopter(cVehicleParams& params); void ProcessHomeScriptObject(uint8 sound); void ProcessJumbo(cVehicleParams& params); void ProcessJumboAccel(CPlane *plane); @@ -424,24 +424,24 @@ public: void ProcessProjectiles(); void ProcessRainOnVehicle(cVehicleParams& params); void ProcessReverb() const; - bool ProcessReverseGear(cVehicleParams& params); + bool8 ProcessReverseGear(cVehicleParams& params); void ProcessSawMillScriptObject(uint8 sound); void ProcessScriptObject(int32 id); void ProcessShopScriptObject(uint8 sound); void ProcessSpecial(); - bool ProcessTrainNoise(cVehicleParams& params); + bool8 ProcessTrainNoise(cVehicleParams& params); void ProcessVehicle(CVehicle *vehicle); - bool ProcessVehicleDoors(cVehicleParams& params); + bool8 ProcessVehicleDoors(cVehicleParams& params); void ProcessVehicleEngine(cVehicleParams& params); void ProcessVehicleHorn(cVehicleParams& params); void ProcessVehicleOneShots(cVehicleParams& params); - bool ProcessVehicleReverseWarning(cVehicleParams& params); - bool ProcessVehicleRoadNoise(cVehicleParams& params); - bool ProcessVehicleSirenOrAlarm(cVehicleParams& params); - bool ProcessVehicleSkidding(cVehicleParams& params); + bool8 ProcessVehicleReverseWarning(cVehicleParams& params); + bool8 ProcessVehicleRoadNoise(cVehicleParams& params); + bool8 ProcessVehicleSirenOrAlarm(cVehicleParams& params); + bool8 ProcessVehicleSkidding(cVehicleParams& params); void ProcessWaterCannon(int32); void ProcessWeather(int32 id); - bool ProcessWetRoadNoise(cVehicleParams& params); + bool8 ProcessWetRoadNoise(cVehicleParams& params); void ProcessWorkShopScriptObject(uint8 sound); int32 RandomDisplacement(uint32 seed) const; @@ -460,25 +460,25 @@ public: void ServicePoliceRadioChannel(uint8 wantedLevel); void ServiceSoundEffects(); int8 SetCurrent3DProvider(uint8 which); - void SetDynamicAcousticModelingStatus(uint8 status); + void SetDynamicAcousticModelingStatus(bool8 status); void SetEffectsFadeVol(uint8 volume) const; void SetEffectsMasterVolume(uint8 volume) const; - void SetEntityStatus(int32 id, uint8 status); + void SetEntityStatus(int32 id, bool8 status); uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision); void SetMissionAudioLocation(float x, float y, float z); void SetMissionScriptPoliceAudio(int32 sfx) const; - void SetMonoMode(uint8 mono); + void SetMonoMode(bool8 mono); void SetMusicFadeVol(uint8 volume) const; void SetMusicMasterVolume(uint8 volume) const; void SetSpeakerConfig(int32 conf) const; void SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter); void SetUpOneShotCollisionSound(const cAudioCollision &col); - bool SetupCrimeReport(); - bool SetupJumboEngineSound(uint8 vol, uint32 freq); - bool SetupJumboFlySound(uint8 emittingVol); - bool SetupJumboRumbleSound(uint8 emittingVol); - bool SetupJumboTaxiSound(uint8 vol); - bool SetupJumboWhineSound(uint8 emittingVol, uint32 freq); + bool8 SetupCrimeReport(); + bool8 SetupJumboEngineSound(uint8 vol, uint32 freq); + bool8 SetupJumboFlySound(uint8 emittingVol); + bool8 SetupJumboRumbleSound(uint8 emittingVol); + bool8 SetupJumboTaxiSound(uint8 vol); + bool8 SetupJumboWhineSound(uint8 emittingVol, uint32 freq); void SetupPedComments(cPedParams ¶ms, uint16 sound); void SetupSuspectLastSeenReport(); @@ -487,9 +487,9 @@ public: void UpdateGasPedalAudio(CAutomobile *automobile); void UpdateReflections(); - bool UsesReverseWarning(int32 model) const; - bool UsesSiren(int32 model) const; - bool UsesSirenSwitching(int32 model) const; + bool8 UsesReverseWarning(int32 model) const; + bool8 UsesSiren(int32 model) const; + bool8 UsesSirenSwitching(int32 model) const; #ifdef GTA_PC // only used in pc diff --git a/src/audio/DMAudio.cpp b/src/audio/DMAudio.cpp index 1027a084..eea91bd1 100644 --- a/src/audio/DMAudio.cpp +++ b/src/audio/DMAudio.cpp @@ -39,7 +39,7 @@ cDMAudio::DestroyEntity(int32 audioEntity) } void -cDMAudio::SetEntityStatus(int32 audioEntity, uint8 status) +cDMAudio::SetEntityStatus(int32 audioEntity, bool8 status) { AudioManager.SetEntityStatus(audioEntity, status); } @@ -57,7 +57,7 @@ cDMAudio::DestroyAllGameCreatedEntities(void) } void -cDMAudio::SetMonoMode(uint8 mono) +cDMAudio::SetMonoMode(bool8 mono) { AudioManager.SetMonoMode(mono); } @@ -128,7 +128,7 @@ cDMAudio::SetSpeakerConfig(int32 config) AudioManager.SetSpeakerConfig(config); } -bool +bool8 cDMAudio::IsMP3RadioChannelAvailable(void) { return AudioManager.IsMP3RadioChannelAvailable(); @@ -147,12 +147,12 @@ cDMAudio::ReacquireDigitalHandle(void) } void -cDMAudio::SetDynamicAcousticModelingStatus(uint8 status) +cDMAudio::SetDynamicAcousticModelingStatus(bool8 status) { AudioManager.SetDynamicAcousticModelingStatus(status); } -bool +bool8 cDMAudio::CheckForAnAudioFileOnCD(void) { return AudioManager.CheckForAnAudioFileOnCD(); @@ -164,7 +164,7 @@ cDMAudio::GetCDAudioDriveLetter(void) return AudioManager.GetCDAudioDriveLetter(); } -bool +bool8 cDMAudio::IsAudioInitialised(void) { return AudioManager.IsAudioInitialised(); @@ -182,7 +182,7 @@ cDMAudio::CreateLoopingScriptObject(cAudioScriptObject *scriptObject) int32 audioEntity = AudioManager.CreateEntity(AUDIOTYPE_SCRIPTOBJECT, scriptObject); if ( AEHANDLE_IS_OK(audioEntity) ) - AudioManager.SetEntityStatus(audioEntity, true); + AudioManager.SetEntityStatus(audioEntity, TRUE); return audioEntity; } @@ -200,7 +200,7 @@ cDMAudio::CreateOneShotScriptObject(cAudioScriptObject *scriptObject) if ( AEHANDLE_IS_OK(audioEntity) ) { - AudioManager.SetEntityStatus(audioEntity, true); + AudioManager.SetEntityStatus(audioEntity, TRUE); AudioManager.PlayOneShot(audioEntity, scriptObject->AudioId, 0.0f); } } @@ -230,7 +230,7 @@ cDMAudio::PlayRadioAnnouncement(uint8 announcement) } void -cDMAudio::PlayFrontEndTrack(uint8 track, uint8 frontendFlag) +cDMAudio::PlayFrontEndTrack(uint8 track, bool8 frontendFlag) { MusicManager.PlayFrontEndTrack(track, frontendFlag); } @@ -295,7 +295,7 @@ cDMAudio::PlayLoadedMissionAudio(void) AudioManager.PlayLoadedMissionAudio(); } -bool +bool8 cDMAudio::IsMissionAudioSampleFinished(void) { return AudioManager.IsMissionAudioSampleFinished(); diff --git a/src/audio/DMAudio.h b/src/audio/DMAudio.h index 3e6d5603..19689fab 100644 --- a/src/audio/DMAudio.h +++ b/src/audio/DMAudio.h @@ -22,11 +22,11 @@ public: int32 CreateEntity(eAudioType type, void *UID); void DestroyEntity(int32 audioEntity); - void SetEntityStatus(int32 audioEntity, uint8 status); + void SetEntityStatus(int32 audioEntity, bool8 status); void PlayOneShot(int32 audioEntity, uint16 oneShot, float volume); void DestroyAllGameCreatedEntities(void); - void SetMonoMode(uint8 mono); + void SetMonoMode(bool8 mono); void SetEffectsMasterVolume(uint8 volume); void SetMusicMasterVolume(uint8 volume); void SetEffectsFadeVol(uint8 volume); @@ -40,17 +40,17 @@ public: void SetSpeakerConfig(int32 config); - bool IsMP3RadioChannelAvailable(void); + bool8 IsMP3RadioChannelAvailable(void); void ReleaseDigitalHandle(void); void ReacquireDigitalHandle(void); - void SetDynamicAcousticModelingStatus(uint8 status); + void SetDynamicAcousticModelingStatus(bool8 status); - bool CheckForAnAudioFileOnCD(void); + bool8 CheckForAnAudioFileOnCD(void); char GetCDAudioDriveLetter(void); - bool IsAudioInitialised(void); + bool8 IsAudioInitialised(void); void ReportCrime(eCrimeType crime, CVector const &pos); @@ -64,7 +64,7 @@ public: void PlayFrontEndSound(uint16 frontend, uint32 volume); void PlayRadioAnnouncement(uint8 announcement); - void PlayFrontEndTrack(uint8 track, uint8 frontendFlag); + void PlayFrontEndTrack(uint8 track, bool8 frontendFlag); void StopFrontEndTrack(void); void ResetTimers(uint32 time); @@ -79,7 +79,7 @@ public: uint8 GetMissionAudioLoadingStatus(void); void SetMissionAudioLocation(float x, float y, float z); void PlayLoadedMissionAudio(void); - bool IsMissionAudioSampleFinished(void); + bool8 IsMissionAudioSampleFinished(void); void ClearMissionAudio(void); uint8 GetRadioInCar(void); diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 3e1a7384..88ef96fa 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -22,42 +22,42 @@ static_assert(false, "RADIO_SCROLL_TO_PREV_STATION and RADIO_OFF_TEXT won't work cMusicManager MusicManager; int32 gNumRetunePresses; int32 gRetuneCounter; -bool bHasStarted; +bool8 bHasStarted; cMusicManager::cMusicManager() { - m_bIsInitialised = false; - m_bDisabled = false; + m_bIsInitialised = FALSE; + m_bDisabled = FALSE; m_nMusicMode = MUSICMODE_DISABLED; m_nNextTrack = NO_TRACK; m_nPlayingTrack = NO_TRACK; - m_bFrontendTrackFinished = false; - m_bPlayInFrontend = false; - m_bSetNextStation = false; + m_bFrontendTrackFinished = FALSE; + m_bPlayInFrontend = FALSE; + m_bSetNextStation = FALSE; m_nAnnouncement = NO_TRACK; - m_bPreviousPlayerInCar = false; - m_bPlayerInCar = false; - m_bAnnouncementInProgress = false; - m_bVerifyAmbienceTrackStartedToPlay = false; - bHasStarted = false; + m_bPreviousPlayerInCar = FALSE; + m_bPlayerInCar = FALSE; + m_bAnnouncementInProgress = FALSE; + m_bVerifyAmbienceTrackStartedToPlay = FALSE; + bHasStarted = FALSE; } -bool +bool8 cMusicManager::PlayerInCar() { if(!FindPlayerVehicle()) - return false; + return FALSE; int32 State = FindPlayerPed()->m_nPedState; if(State == PED_DRAG_FROM_CAR || State == PED_EXIT_CAR || State == PED_ARRESTED) - return false; + return FALSE; if (!FindPlayerVehicle()) - return true; + return TRUE; if (FindPlayerVehicle()->GetStatus() == STATUS_WRECKED) - return false; + return FALSE; switch (FindPlayerVehicle()->GetModelIndex()) { case MI_FIRETRUCK: @@ -67,8 +67,8 @@ cMusicManager::PlayerInCar() case MI_TRAIN: case MI_SPEEDER: case MI_REEFER: - case MI_GHOST: return false; - default: return true; + case MI_GHOST: return FALSE; + default: return TRUE; } } @@ -224,7 +224,7 @@ cMusicManager::DisplayRadioStationName() } } -bool +bool8 cMusicManager::Initialise() { int pos; @@ -265,18 +265,18 @@ cMusicManager::Initialise() m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } - m_bResetTimers = false; + m_bResetTimers = FALSE; m_nResetTime = 0; m_nTimer = m_nLastTrackServiceTime = CTimer::GetTimeInMillisecondsPauseMode(); - m_bDoTrackService = false; - m_bIgnoreTimeDelay = false; - m_bRadioSetByScript = false; + m_bDoTrackService = FALSE; + m_bIgnoreTimeDelay = FALSE; + m_bRadioSetByScript = FALSE; m_nRadioStationScript = HEAD_RADIO; m_nRadioPosition = -1; m_nRadioInCar = NO_TRACK; gNumRetunePresses = 0; gRetuneCounter = 0; - m_bIsInitialised = true; + m_bIsInitialised = TRUE; } return m_bIsInitialised; } @@ -291,7 +291,7 @@ cMusicManager::Terminate() m_nNextTrack = NO_TRACK; m_nPlayingTrack = NO_TRACK; } - m_bIsInitialised = false; + m_bIsInitialised = FALSE; } void @@ -325,16 +325,16 @@ cMusicManager::ChangeMusicMode(uint8 mode) } m_nNextTrack = NO_TRACK; m_nPlayingTrack = NO_TRACK; - m_bFrontendTrackFinished = false; - m_bPlayInFrontend = false; - m_bSetNextStation = false; - m_bPreviousPlayerInCar = false; - m_bPlayerInCar = false; - m_bAnnouncementInProgress = false; + m_bFrontendTrackFinished = FALSE; + m_bPlayInFrontend = FALSE; + m_bSetNextStation = FALSE; + m_bPreviousPlayerInCar = FALSE; + m_bPlayerInCar = FALSE; + m_bAnnouncementInProgress = FALSE; m_nTimer = m_nLastTrackServiceTime = CTimer::GetTimeInMillisecondsPauseMode(); - m_bDoTrackService = false; - m_bIgnoreTimeDelay = true; - m_bVerifyAmbienceTrackStartedToPlay = false; + m_bDoTrackService = FALSE; + m_bIgnoreTimeDelay = TRUE; + m_bVerifyAmbienceTrackStartedToPlay = FALSE; m_nMusicMode = mode2; break; default: return; @@ -383,7 +383,7 @@ void cMusicManager::SetRadioChannelByScript(uint8 station, int32 pos) { if (m_bIsInitialised && station < RADIO_OFF) { - m_bRadioSetByScript = true; + m_bRadioSetByScript = TRUE; m_nRadioStationScript = station; m_nRadioPosition = pos == -1 ? -1 : pos % m_aTracks[station].m_nLength; } @@ -393,12 +393,12 @@ cMusicManager::SetRadioChannelByScript(uint8 station, int32 pos) void cMusicManager::ResetMusicAfterReload() { - m_bRadioSetByScript = false; + m_bRadioSetByScript = FALSE; m_nRadioStationScript = 0; m_nRadioPosition = -1; m_nAnnouncement = NO_TRACK; - m_bAnnouncementInProgress = false; - m_bSetNextStation = false; + m_bAnnouncementInProgress = FALSE; + m_bSetNextStation = FALSE; gRetuneCounter = 0; gNumRetunePresses = 0; } @@ -407,7 +407,7 @@ cMusicManager::ResetMusicAfterReload() void cMusicManager::ResetTimers(int32 time) { - m_bResetTimers = true; + m_bResetTimers = TRUE; m_nResetTime = time; } @@ -415,23 +415,23 @@ void cMusicManager::Service() { if (m_bResetTimers) { - m_bResetTimers = false; + m_bResetTimers = FALSE; m_nLastTrackServiceTime = m_nResetTime; } if (!m_bIsInitialised || m_bDisabled) return; if (m_nMusicMode == MUSICMODE_CUTSCENE) { - SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 0); + SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 0); return; } m_nTimer = CTimer::GetTimeInMillisecondsPauseMode(); if (m_nTimer > (m_nLastTrackServiceTime + 2000) || m_bIgnoreTimeDelay) { - m_bIgnoreTimeDelay = false; - m_bDoTrackService = true; + m_bIgnoreTimeDelay = FALSE; + m_bDoTrackService = TRUE; m_nLastTrackServiceTime = m_nTimer; - } else m_bDoTrackService = false; + } else m_bDoTrackService = FALSE; if (m_nNextTrack == NO_TRACK && SampleManager.IsStreamPlaying(0)) SampleManager.StopStreamedFile(0); @@ -466,22 +466,22 @@ cMusicManager::ServiceFrontEndMode() if (!SampleManager.IsStreamPlaying(0)) SampleManager.StartStreamedFile(m_nNextTrack, 0, 0); } else { - SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); if (!SampleManager.StartStreamedFile(m_nNextTrack, m_nNextTrack < NUM_RADIOS ? GetTrackStartPos(m_nNextTrack) : 0, 0)) return; - SampleManager.SetStreamedVolumeAndPan(100, 63, 0, 0); - if (m_bPlayInFrontend) bHasStarted = true; - else m_bFrontendTrackFinished = true; + SampleManager.SetStreamedVolumeAndPan(100, 63, FALSE, 0); + if (m_bPlayInFrontend) bHasStarted = TRUE; + else m_bFrontendTrackFinished = TRUE; } } if (SampleManager.IsStreamPlaying(0)) - SampleManager.SetStreamedVolumeAndPan((CPad::GetPad(0)->bDisplayNoControllerMessage || CPad::GetPad(0)->bObsoleteControllerMessage) ? 0 : 100, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan((CPad::GetPad(0)->bDisplayNoControllerMessage || CPad::GetPad(0)->bObsoleteControllerMessage) ? 0 : 100, 63, FALSE, 0); } void cMusicManager::ServiceGameMode() { - bool bRadioOff = false; + bool8 bRadioOff = FALSE; static int8 nFramesSinceCutsceneEnded = -1; uint8 volume; @@ -525,7 +525,7 @@ cMusicManager::ServiceGameMode() } if (AudioManager.m_nPreviousUserPause) - m_bPreviousPlayerInCar = false; + m_bPreviousPlayerInCar = FALSE; if (!m_bPlayerInCar) { if (m_bPreviousPlayerInCar) { if (m_nNextTrack != STREAMED_SOUND_RADIO_POLICE) @@ -541,7 +541,7 @@ cMusicManager::ServiceGameMode() && ServiceAnnouncement()) { if (m_bAnnouncementInProgress) { - m_bSetNextStation = false; + m_bSetNextStation = FALSE; return; } m_nPlayingTrack = m_nNextTrack; @@ -558,7 +558,7 @@ cMusicManager::ServiceGameMode() AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 1.0f); gRetuneCounter = 0; gNumRetunePresses = 0; - m_bSetNextStation = false; + m_bSetNextStation = FALSE; } // Because when you switch radio back and forth, gNumRetunePresses will be 0 but gRetuneCounter won't. #ifdef RADIO_SCROLL_TO_PREV_STATION @@ -566,24 +566,24 @@ cMusicManager::ServiceGameMode() if (gRetuneCounter > 1) gRetuneCounter--; else if (gRetuneCounter == 1) gRetuneCounter = -1; else if (gRetuneCounter == -1) { - m_bSetNextStation = true; + m_bSetNextStation = TRUE; gRetuneCounter = 0; } } #else if (gNumRetunePresses) { if (gRetuneCounter != 0) gRetuneCounter--; - else m_bSetNextStation = true; + else m_bSetNextStation = TRUE; } #endif if (gRetuneCounter) AudioManager.DoPoliceRadioCrackle(); if (m_bSetNextStation) { - m_bSetNextStation = false; + m_bSetNextStation = FALSE; m_nPlayingTrack = m_nNextTrack; m_nNextTrack = GetNextCarTuning(); if (m_nNextTrack == STREAMED_SOUND_CITY_AMBIENT || m_nNextTrack == STREAMED_SOUND_WATER_AMBIENT) - bRadioOff = true; + bRadioOff = TRUE; if (m_nPlayingTrack == STREAMED_SOUND_CITY_AMBIENT || m_nPlayingTrack == STREAMED_SOUND_WATER_AMBIENT) AudioManager.PlayOneShot(AudioManager.m_nFrontEndEntity, SOUND_FRONTEND_RADIO_CHANGE, 0.0f); @@ -592,7 +592,7 @@ cMusicManager::ServiceGameMode() if (ChangeRadioChannel()) { ServiceTrack(); } else { - m_bPlayerInCar = false; + m_bPlayerInCar = FALSE; if (FindPlayerVehicle()) FindPlayerVehicle()->m_nRadioStation = m_nNextTrack; m_nNextTrack = NO_TRACK; @@ -601,7 +601,7 @@ cMusicManager::ServiceGameMode() if (TheCamera.pTargetEntity != nil) { float DistToTargetSq = (TheCamera.pTargetEntity->GetPosition() - TheCamera.GetPosition()).MagnitudeSqr(); if (DistToTargetSq >= SQR(55.0f)) { - SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); } else if (DistToTargetSq >= SQR(10.0f)) { volume = ((45.0f - (Sqrt(DistToTargetSq) - 10.0f)) / 45.0f * 100.0f); uint8 pan; @@ -616,17 +616,17 @@ cMusicManager::ServiceGameMode() } if (gRetuneCounter) volume /= 4; - SampleManager.SetStreamedVolumeAndPan(volume, pan, 0, 0); + SampleManager.SetStreamedVolumeAndPan(volume, pan, FALSE, 0); } else if (AudioManager.ShouldDuckMissionAudio()) { - SampleManager.SetStreamedVolumeAndPan(25, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE, 0); } else if (gRetuneCounter) { - SampleManager.SetStreamedVolumeAndPan(25, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE, 0); } else { - SampleManager.SetStreamedVolumeAndPan(100, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(100, 63, FALSE, 0); } } } else if (AudioManager.ShouldDuckMissionAudio()) { - SampleManager.SetStreamedVolumeAndPan(25, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE, 0); nFramesSinceCutsceneEnded = 0; } else { if (nFramesSinceCutsceneEnded == -1) { @@ -643,7 +643,7 @@ cMusicManager::ServiceGameMode() } if (gRetuneCounter != 0) volume /= 4; - SampleManager.SetStreamedVolumeAndPan(volume, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(volume, 63, FALSE, 0); } return; } @@ -663,7 +663,7 @@ cMusicManager::ServiceGameMode() m_nNextTrack = m_nRadioStationScript; if (FindPlayerVehicle()->m_nRadioStation == m_nNextTrack) { m_nPlayingTrack = NO_TRACK; - SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); SampleManager.StopStreamedFile(0); } if (m_nRadioPosition != -1) { @@ -680,11 +680,11 @@ cMusicManager::ServiceGameMode() } if (ChangeRadioChannel()) { if (m_bRadioSetByScript) { - m_bRadioSetByScript = false; + m_bRadioSetByScript = FALSE; FindPlayerVehicle()->m_nRadioStation = m_nNextTrack; } } else { - m_bPlayerInCar = false; + m_bPlayerInCar = FALSE; m_nNextTrack = NO_TRACK; } } @@ -709,14 +709,14 @@ cMusicManager::PlayAnnouncement(uint8 announcement) } void -cMusicManager::PlayFrontEndTrack(uint8 track, uint8 bPlayInFrontend) +cMusicManager::PlayFrontEndTrack(uint8 track, bool8 bPlayInFrontend) { if (IsInitialised() && !m_bDisabled && track < TOTAL_STREAMED_SOUNDS) { if (m_nMusicMode == MUSICMODE_GAME) { if (m_nNextTrack != NO_TRACK) { if (m_bAnnouncementInProgress) { m_nAnnouncement = NO_TRACK; - m_bAnnouncementInProgress = false; + m_bAnnouncementInProgress = FALSE; } m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); @@ -732,10 +732,10 @@ cMusicManager::PlayFrontEndTrack(uint8 track, uint8 bPlayInFrontend) m_nPlayingTrack = m_nNextTrack; m_nNextTrack = track; - m_bPlayInFrontend = !!bPlayInFrontend; - m_bFrontendTrackFinished = false; - m_bDoTrackService = true; - bHasStarted = false; + m_bPlayInFrontend = bPlayInFrontend; + m_bFrontendTrackFinished = FALSE; + m_bDoTrackService = TRUE; + bHasStarted = FALSE; if (m_nNextTrack < NUM_RADIOS) { gRetuneCounter = 0; gNumRetunePresses = 0; @@ -751,7 +751,7 @@ cMusicManager::PreloadCutSceneMusic(uint8 track) while (SampleManager.IsStreamPlaying(0)) SampleManager.StopStreamedFile(0); SampleManager.PreloadStreamedFile(track, 0); - SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 0); + SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 0); m_nNextTrack = track; } } @@ -787,7 +787,7 @@ cMusicManager::GetTrackStartPos(uint8 track) } -bool +bool8 cMusicManager::UsesPoliceRadio(CVehicle *veh) { switch (veh->GetModelIndex()) @@ -798,9 +798,9 @@ cMusicManager::UsesPoliceRadio(CVehicle *veh) case MI_PREDATOR: case MI_RHINO: case MI_BARRACKS: - return true; + return TRUE; } - return false; + return FALSE; } void @@ -810,7 +810,7 @@ cMusicManager::ServiceAmbience() if (m_bAnnouncementInProgress) { m_nAnnouncement = NO_TRACK; - m_bAnnouncementInProgress = false; + m_bAnnouncementInProgress = FALSE; } if (m_nNextTrack < RADIO_OFF) { if (SampleManager.IsStreamPlaying(0)) { @@ -831,11 +831,11 @@ cMusicManager::ServiceAmbience() m_nNextTrack = TheCamera.DistanceToWater <= 45.0f ? STREAMED_SOUND_WATER_AMBIENT : STREAMED_SOUND_CITY_AMBIENT; if (m_nNextTrack == m_nPlayingTrack) { - ComputeAmbienceVol(false, volume); - SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0); + ComputeAmbienceVol(FALSE, volume); + SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE, 0); if (m_bVerifyAmbienceTrackStartedToPlay) { if (SampleManager.IsStreamPlaying(0)) - m_bVerifyAmbienceTrackStartedToPlay = false; + m_bVerifyAmbienceTrackStartedToPlay = FALSE; } else ServiceTrack(); } else { if (m_nPlayingTrack < TOTAL_STREAMED_SOUNDS) { @@ -844,18 +844,18 @@ cMusicManager::ServiceAmbience() SampleManager.StopStreamedFile(0); } uint32 pos = GetTrackStartPos(m_nNextTrack); - SampleManager.SetStreamedVolumeAndPan(0, 63, 1, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, TRUE, 0); if (SampleManager.StartStreamedFile(m_nNextTrack, pos, 0)) { - ComputeAmbienceVol(true, volume); - SampleManager.SetStreamedVolumeAndPan(volume, 63, 1, 0); - m_bVerifyAmbienceTrackStartedToPlay = true; + ComputeAmbienceVol(TRUE, volume); + SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE, 0); + m_bVerifyAmbienceTrackStartedToPlay = TRUE; } else m_nNextTrack = NO_TRACK; } } void -cMusicManager::ComputeAmbienceVol(uint8 reset, uint8 &outVolume) +cMusicManager::ComputeAmbienceVol(bool8 reset, uint8 &outVolume) { static float fVol = 0.0f; @@ -883,16 +883,16 @@ cMusicManager::ServiceTrack() } } -bool +bool8 cMusicManager::ServiceAnnouncement() { static int8 cCheck = 0; if (m_bAnnouncementInProgress) { if (!SampleManager.IsStreamPlaying(0)) { m_nAnnouncement = NO_TRACK; - m_bAnnouncementInProgress = false; + m_bAnnouncementInProgress = FALSE; } - return true; + return TRUE; } if (++cCheck >= 30) { @@ -906,21 +906,21 @@ cMusicManager::ServiceAnnouncement() } } - SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); if (SampleManager.StartStreamedFile(m_nAnnouncement, 0, 0)) { - SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, 0, 0); - m_bAnnouncementInProgress = true; + SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, FALSE, 0); + m_bAnnouncementInProgress = TRUE; m_nPlayingTrack = m_nNextTrack; m_nNextTrack = m_nAnnouncement; - return true; + return TRUE; } if (cCheck != 0) cCheck--; else cCheck = 30; - return false; + return FALSE; } - return false; + return FALSE; } uint8 @@ -987,21 +987,21 @@ cMusicManager::GetNextCarTuning() return veh->m_nRadioStation; } -bool +bool8 cMusicManager::ChangeRadioChannel() { if (m_nNextTrack != m_nPlayingTrack) { if (m_nPlayingTrack < TOTAL_STREAMED_SOUNDS) { m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); - SampleManager.SetStreamedVolumeAndPan(0, 63, 0, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); SampleManager.StopStreamedFile(0); } if (SampleManager.IsStreamPlaying(0)) - return false; + return FALSE; if (!SampleManager.StartStreamedFile(m_nNextTrack, GetTrackStartPos(m_nNextTrack), 0)) - return false; - SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, 0, 0); + return FALSE; + SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, FALSE, 0); } - return true; + return TRUE; } diff --git a/src/audio/MusicManager.h b/src/audio/MusicManager.h index 5d277f0e..4c4447fe 100644 --- a/src/audio/MusicManager.h +++ b/src/audio/MusicManager.h @@ -15,48 +15,48 @@ class CVehicle; class cMusicManager { public: - bool m_bIsInitialised; - bool m_bDisabled; + bool8 m_bIsInitialised; + bool8 m_bDisabled; uint8 m_nMusicMode; uint8 m_nNextTrack; uint8 m_nPlayingTrack; - bool m_bFrontendTrackFinished; - bool m_bPlayInFrontend; - bool m_bSetNextStation; + bool8 m_bFrontendTrackFinished; + bool8 m_bPlayInFrontend; + bool8 m_bSetNextStation; uint8 m_nAnnouncement; - bool m_bPreviousPlayerInCar; - bool m_bPlayerInCar; - bool m_bAnnouncementInProgress; + bool8 m_bPreviousPlayerInCar; + bool8 m_bPlayerInCar; + bool8 m_bAnnouncementInProgress; tStreamedSample m_aTracks[TOTAL_STREAMED_SOUNDS]; - bool m_bResetTimers; + bool8 m_bResetTimers; uint32 m_nResetTime; uint32 m_nLastTrackServiceTime; uint32 m_nTimer; - bool m_bDoTrackService; - bool m_bIgnoreTimeDelay; - bool m_bVerifyAmbienceTrackStartedToPlay; - bool m_bRadioSetByScript; + bool8 m_bDoTrackService; + bool8 m_bIgnoreTimeDelay; + bool8 m_bVerifyAmbienceTrackStartedToPlay; + bool8 m_bRadioSetByScript; uint8 m_nRadioStationScript; int32 m_nRadioPosition; uint8 m_nRadioInCar; public: cMusicManager(); - bool IsInitialised() { return m_bIsInitialised; } + bool8 IsInitialised() { return m_bIsInitialised; } uint32 GetMusicMode() { return m_nMusicMode; } uint8 GetNextTrack() { return m_nNextTrack; } - bool Initialise(); + bool8 Initialise(); void Terminate(); void ChangeMusicMode(uint8 mode); void StopFrontEndTrack(); - bool PlayerInCar(); + bool8 PlayerInCar(); void DisplayRadioStationName(); void PlayAnnouncement(uint8); - void PlayFrontEndTrack(uint8, uint8); + void PlayFrontEndTrack(uint8, bool8); void PreloadCutSceneMusic(uint8); void PlayPreloadedCutSceneMusic(void); void StopCutSceneMusic(void); @@ -73,15 +73,15 @@ public: void ServiceAmbience(); void ServiceTrack(); - bool UsesPoliceRadio(CVehicle *veh); + bool8 UsesPoliceRadio(CVehicle *veh); uint32 GetTrackStartPos(uint8); - void ComputeAmbienceVol(uint8 reset, uint8& outVolume); - bool ServiceAnnouncement(); + void ComputeAmbienceVol(bool8 reset, uint8& outVolume); + bool8 ServiceAnnouncement(); uint8 GetCarTuning(); uint8 GetNextCarTuning(); - bool ChangeRadioChannel(); + bool8 ChangeRadioChannel(); }; VALIDATE_SIZE(cMusicManager, 0x95C); diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index cb12a2fe..3664796b 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -94,8 +94,8 @@ cAudioManager::InitialisePoliceRadio() for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; - SampleManager.SetChannelReverbFlag(policeChannel, false); - gSpecialSuspectLastSeenReport = false; + SampleManager.SetChannelReverbFlag(policeChannel, FALSE); + gSpecialSuspectLastSeenReport = FALSE; for (int32 i = 0; i < ARRAY_SIZE(gMinTimeToNextReport); i++) gMinTimeToNextReport[i] = m_FrameCounter; } @@ -131,7 +131,7 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = true; + m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_nVolume = m_anRandomTable[2] % 20 + 15; @@ -139,11 +139,11 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.m_bReleasingSoundFlag = false; - m_sQueueSample.m_bReverbFlag = false; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_nOffset = 63; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bRequireReflection = false; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } @@ -156,7 +156,7 @@ cAudioManager::ServicePoliceRadio() if(!m_bIsInitialised) return; if(m_nUserPause == 0) { - bool crimeReport = SetupCrimeReport(); + bool8 crimeReport = SetupCrimeReport(); #ifdef FIX_BUGS // Crash at 0x5fe6ef if(CReplay::IsPlayingBack() || !FindPlayerPed() || !FindPlayerPed()->m_pWanted) return; @@ -179,12 +179,12 @@ cAudioManager::ServicePoliceRadio() void cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) { - bool processed = false; + bool8 processed = FALSE; uint32 sample; int32 freq; static int cWait = 0; - static bool bChannelOpen = false; + static bool8 bChannelOpen = FALSE; static uint8 bMissionAudioPhysicalPlayingStatus = 0; static int32 PoliceChannelFreq = 5500; @@ -194,14 +194,14 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == 1 && SampleManager.IsStreamPlaying(1)) { - SampleManager.PauseStream(1, 1); + SampleManager.PauseStream(TRUE, 1); } } else { if (m_nPreviousUserPause && g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == 1) { - SampleManager.PauseStream(0, 1); + SampleManager.PauseStream(FALSE, 1); } - if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = false; + if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = FALSE; if (cWait) { --cWait; return; @@ -225,7 +225,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } } else if (!SampleManager.GetChannelUsedFlag(policeChannel)) { SampleManager.PreloadStreamedFile(g_nMissionAudioSfx, 1); - SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, 1, 1); + SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 1); SampleManager.StartPreloadedStreamedFile(1); g_nMissionAudioPlayingStatus = 1; bMissionAudioPhysicalPlayingStatus = 0; @@ -246,8 +246,8 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) if (gSpecialSuspectLastSeenReport) { gSpecialSuspectLastSeenReport = 0; } else if (((sample >= SFX_POLICE_RADIO_MESSAGE_NOISE_1) && (sample <= SFX_POLICE_RADIO_MESSAGE_NOISE_3)) || sample == TOTAL_AUDIO_SAMPLES) { - bChannelOpen = false; - processed = true; + bChannelOpen = FALSE; + processed = TRUE; } } if (sample == TOTAL_AUDIO_SAMPLES) { @@ -259,7 +259,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) case SFX_POLICE_RADIO_MESSAGE_NOISE_2: case SFX_POLICE_RADIO_MESSAGE_NOISE_3: freq = m_anRandomTable[4] % 2000 + 10025; - bChannelOpen = bChannelOpen == false; + bChannelOpen = bChannelOpen == FALSE; break; default: freq = SampleManager.GetSampleBaseFrequency(sample); break; } @@ -276,7 +276,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } } -bool +bool8 cAudioManager::SetupCrimeReport() { int16 audioZoneId; @@ -289,13 +289,13 @@ cAudioManager::SetupCrimeReport() float quarterY; int i; int32 sampleIndex; - bool processed = false; + bool8 processed = FALSE; - if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return false; + if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return FALSE; if (60 - m_sPoliceRadioQueue.policeChannelTimer <= 9) { AgeCrimes(); - return true; + return TRUE; } for (i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { @@ -303,7 +303,7 @@ cAudioManager::SetupCrimeReport() break; } - if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return false; + if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return FALSE; audioZoneId = CTheZones::FindAudioZone(&m_sPoliceRadioQueue.crimes[i].position); if (audioZoneId >= 0 && audioZoneId < NUMAUDIOZONES) { zone = CTheZones::GetAudioZone(audioZoneId); @@ -336,10 +336,10 @@ cAudioManager::SetupCrimeReport() if (m_sPoliceRadioQueue.crimes[i].position.y > halfY + quarterY) { m_sPoliceRadioQueue.Add(SFX_NORTH); - processed = true; + processed = TRUE; } else if (m_sPoliceRadioQueue.crimes[i].position.y < halfY - quarterY) { m_sPoliceRadioQueue.Add(SFX_SOUTH); - processed = true; + processed = TRUE; } if (m_sPoliceRadioQueue.crimes[i].position.x > halfX + quarterX) @@ -359,7 +359,7 @@ cAudioManager::SetupCrimeReport() } m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; AgeCrimes(); - return true; + return TRUE; } void @@ -714,7 +714,7 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z) float quarterX; float quarterY; int32 sample; - bool processed = false; + bool8 processed = false; CVector vec = CVector(x, y, z); if (!m_bIsInitialised) return; @@ -745,10 +745,10 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z) if (vec.y > halfY + quarterY) { m_sPoliceRadioQueue.Add(SFX_NORTH); - processed = true; + processed = TRUE; } else if (vec.y < halfY - quarterY) { m_sPoliceRadioQueue.Add(SFX_SOUTH); - processed = true; + processed = TRUE; } if (vec.x > halfX + quarterX) @@ -761,7 +761,7 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z) m_sPoliceRadioQueue.Add(sample); m_sPoliceRadioQueue.Add(m_anRandomTable[2] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); - gSpecialSuspectLastSeenReport = true; + gSpecialSuspectLastSeenReport = TRUE; break; } } diff --git a/src/audio/sampman.h b/src/audio/sampman.h index a5f6c7e2..765c75d3 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -118,10 +118,10 @@ class cSampleManager uint8 m_nMusicVolume; uint8 m_nEffectsFadeVolume; uint8 m_nMusicFadeVolume; - uint8 m_nMonoMode; + bool8 m_nMonoMode; char unk; char m_szCDRomRootPath[80]; - bool m_bInitialised; + bool8 m_bInitialised; uint8 m_nNumberOfProviders; char *m_aAudioProviders[MAXPROVIDERS]; tSample m_aSamples[TOTAL_AUDIO_SAMPLES]; @@ -145,16 +145,16 @@ public: int8 GetCurrent3DProviderIndex(void); int8 SetCurrent3DProvider(uint8 which); - bool IsMP3RadioChannelAvailable(void); + bool8 IsMP3RadioChannelAvailable(void); void ReleaseDigitalHandle (void); void ReacquireDigitalHandle(void); - bool Initialise(void); - void Terminate (void); + bool8 Initialise(void); + void Terminate (void); - bool CheckForAnAudioFileOnCD(void); - char GetCDAudioDriveLetter (void); + bool8 CheckForAnAudioFileOnCD(void); + char GetCDAudioDriveLetter (void); void UpdateEffectsVolume(void); @@ -162,14 +162,14 @@ public: void SetMusicMasterVolume (uint8 nVolume); void SetEffectsFadeVolume (uint8 nVolume); void SetMusicFadeVolume (uint8 nVolume); - void SetMonoMode (uint8 nMode); + void SetMonoMode (bool8 nMode); - bool LoadSampleBank (uint8 nBank); - void UnloadSampleBank (uint8 nBank); - bool IsSampleBankLoaded(uint8 nBank); + bool8 LoadSampleBank (uint8 nBank); + void UnloadSampleBank (uint8 nBank); + bool8 IsSampleBankLoaded(uint8 nBank); - bool IsPedCommentLoaded(uint32 nComment); - bool LoadPedComment (uint32 nComment); + bool8 IsPedCommentLoaded(uint32 nComment); + bool8 LoadPedComment (uint32 nComment); int32 GetBankContainingSound(uint32 offset); int32 _GetPedCommentSlot(uint32 nComment); @@ -179,10 +179,10 @@ public: int32 GetSampleLoopEndOffset (uint32 nSample); uint32 GetSampleLength (uint32 nSample); - bool UpdateReverb(void); + bool8 UpdateReverb(void); - void SetChannelReverbFlag (uint32 nChannel, uint8 nReverbFlag); - bool InitialiseChannel (uint32 nChannel, uint32 nSfx, uint8 nBank); + void SetChannelReverbFlag (uint32 nChannel, bool8 nReverbFlag); + bool8 InitialiseChannel (uint32 nChannel, uint32 nSfx, uint8 nBank); void SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume); void SetChannel3DPosition (uint32 nChannel, float fX, float fY, float fZ); void SetChannel3DDistances (uint32 nChannel, float fMax, float fMin); @@ -191,23 +191,23 @@ public: void SetChannelFrequency (uint32 nChannel, uint32 nFreq); void SetChannelLoopPoints (uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd); void SetChannelLoopCount (uint32 nChannel, uint32 nLoopCount); - bool GetChannelUsedFlag (uint32 nChannel); + bool8 GetChannelUsedFlag (uint32 nChannel); void StartChannel (uint32 nChannel); void StopChannel (uint32 nChannel); void PreloadStreamedFile (uint8 nFile, uint8 nStream); - void PauseStream (uint8 nPauseFlag, uint8 nStream); + void PauseStream (bool8 nPauseFlag, uint8 nStream); void StartPreloadedStreamedFile (uint8 nStream); - bool StartStreamedFile (uint8 nFile, uint32 nPos, uint8 nStream); + bool8 StartStreamedFile (uint8 nFile, uint32 nPos, uint8 nStream); void StopStreamedFile (uint8 nStream); int32 GetStreamedFilePosition (uint8 nStream); - void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream); + void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream); int32 GetStreamedFileLength (uint8 nStream); - bool IsStreamPlaying (uint8 nStream); + bool8 IsStreamPlaying (uint8 nStream); #ifdef AUDIO_OAL void Service(void); #endif - bool InitialiseSampleBanks(void); + bool8 InitialiseSampleBanks(void); }; extern cSampleManager SampleManager; diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 351c4958..4237c6a3 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -28,7 +28,7 @@ char SampleBankDataFilename[] = "AUDIO\\SFX.RAW"; FILE *fpSampleDescHandle; FILE *fpSampleDataHandle; -bool bSampleBankLoaded [MAX_SFX_BANKS]; +bool8 bSampleBankLoaded [MAX_SFX_BANKS]; int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; int32 nSampleBankSize [MAX_SFX_BANKS]; int32 nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; @@ -62,16 +62,16 @@ int8 nStreamPan [MAX_STREAMS]; int8 nStreamVolume[MAX_STREAMS]; uint32 _CurMP3Index; int32 _CurMP3Pos; -bool _bIsMp3Active; +bool8 _bIsMp3Active; #if GTA_VERSION >= GTA3_PC_11 || defined(NO_CDCHECK) -bool _bUseHDDAudio; +bool8 _bUseHDDAudio; char _aHDDPath[MAX_PATH]; #endif /////////////////////////////////////////////////////////////// -bool _bSampmanInitialised = false; +bool8 _bSampmanInitialised = FALSE; // // Miscellaneous globals / defines @@ -98,7 +98,7 @@ S32 speaker_type=0; U32 _maxSamples; float _fPrevEaxRatioDestination; -bool _usingMilesFast2D; +bool8 _usingMilesFast2D; float _fEffectsLevel; @@ -170,17 +170,17 @@ release_existing() } _fPrevEaxRatioDestination = 0.0f; - _usingMilesFast2D = false; + _usingMilesFast2D = FALSE; _fEffectsLevel = 0.0f; } -static bool +static bool8 set_new_provider(S32 index) { DWORD result; if ( curprovider == index ) - return true; + return TRUE; //close the already opened provider curprovider = index; @@ -207,7 +207,7 @@ set_new_provider(S32 index) release_existing(); - return false; + return FALSE; } else { @@ -238,7 +238,7 @@ set_new_provider(S32 index) AIL_set_3D_room_type(opened_provider, ENVIRONMENT_CAVE); if ( !strcmp(providers[index].name, "Miles Fast 2D Positional Audio") ) - _usingMilesFast2D = true; + _usingMilesFast2D = TRUE; } AIL_3D_provider_attribute(opened_provider, "Maximum supported samples", &_maxSamples); @@ -256,11 +256,11 @@ set_new_provider(S32 index) AIL_set_3D_sample_effects_level(opened_samples[i], 0.0f); } - return true; + return TRUE; } } - return false; + return FALSE; } cSampleManager::cSampleManager(void) : @@ -353,7 +353,7 @@ cSampleManager::SetCurrent3DProvider(uint8 nProvider) return curprovider; } -static bool +static bool8 _ResolveLink(char const *path, char *out) { IShellLink* psl; @@ -389,7 +389,7 @@ _ResolveLink(char const *path, char *out) ppf->Release(); psl->Release(); #endif - return true; + return TRUE; } } } @@ -399,15 +399,15 @@ _ResolveLink(char const *path, char *out) psl->Release(); } - return false; + return FALSE; } static void _FindMP3s(void) { tMP3Entry *pList; - bool bShortcut; - bool bInitFirstEntry; + bool8 bShortcut; + bool8 bInitFirstEntry; HANDLE hFind; char path[MAX_PATH]; char filepath[MAX_PATH*2]; @@ -474,10 +474,10 @@ _FindMP3s(void) if ( f ) fprintf(f, " - couldn't resolve shortcut"); } - bShortcut = true; + bShortcut = TRUE; } else - bShortcut = false; + bShortcut = FALSE; } mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); @@ -524,7 +524,7 @@ _FindMP3s(void) if ( f ) fprintf(f, " - OK\n"); - bInitFirstEntry = false; + bInitFirstEntry = FALSE; } else { @@ -534,10 +534,10 @@ _FindMP3s(void) if ( f ) fprintf(f, " - not an MP3 or supported MP3 type\n"); - bInitFirstEntry = true; + bInitFirstEntry = TRUE; } - while ( true ) + while ( TRUE ) { if ( !FindNextFile(hFind, &fd) ) break; @@ -569,11 +569,11 @@ _FindMP3s(void) if ( f ) fprintf(f, " - couldn't resolve shortcut"); } - bShortcut = true; + bShortcut = TRUE; } else { - bShortcut = false; + bShortcut = FALSE; if ( filepathlen > MAX_PATH ) { @@ -620,7 +620,7 @@ _FindMP3s(void) if ( f ) fprintf(f, " - OK\n"); - bInitFirstEntry = false; + bInitFirstEntry = FALSE; } else { @@ -658,11 +658,11 @@ _FindMP3s(void) if ( f ) fprintf(f, " - couldn't resolve shortcut"); } - bShortcut = true; + bShortcut = TRUE; } else { - bShortcut = false; + bShortcut = FALSE; } } @@ -784,7 +784,7 @@ _GetMP3EntryByIndex(uint32 idx) return NULL; } -static inline bool +static inline bool8 _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) { _CurMP3Index = 0; @@ -797,7 +797,7 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) *pPosition -= (*pEntry)->nTrackStreamPos; _CurMP3Pos = *pPosition; - return true; + return TRUE; } _CurMP3Index++; @@ -808,10 +808,10 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) _CurMP3Pos = 0; _CurMP3Index = 0; - return false; + return FALSE; } -bool +bool8 cSampleManager::IsMP3RadioChannelAvailable(void) { return nNumMP3s != 0; @@ -840,13 +840,13 @@ cSampleManager::ReacquireDigitalHandle(void) } } -bool +bool8 cSampleManager::Initialise(void) { TRACE("start"); if ( _bSampmanInitialised ) - return true; + return TRUE; { for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) @@ -872,7 +872,7 @@ cSampleManager::Initialise(void) curprovider = -1; prevprovider = -1; - _usingMilesFast2D = false; + _usingMilesFast2D = FALSE; usingEAX=0; usingEAX3=0; @@ -897,7 +897,7 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - bSampleBankLoaded[i] = false; + bSampleBankLoaded[i] = FALSE; nSampleBankDiscStartOffset[i] = 0; nSampleBankSize[i] = 0; nSampleBankMemoryStartAddress[i] = 0; @@ -936,7 +936,7 @@ cSampleManager::Initialise(void) { OutputDebugString(AIL_last_error()); Terminate(); - return false; + return FALSE; } add_providers(); @@ -944,14 +944,14 @@ cSampleManager::Initialise(void) if ( !InitialiseSampleBanks() ) { Terminate(); - return false; + return FALSE; } nSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(nSampleBankSize[SFX_BANK_0]); if ( !nSampleBankMemoryStartAddress[SFX_BANK_0] ) { Terminate(); - return false; + return FALSE; } nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX); @@ -964,7 +964,7 @@ cSampleManager::Initialise(void) if (cacheFile) { fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); - m_bInitialised = true; + m_bInitialised = TRUE; }else { #endif TRACE("cdrom"); @@ -973,9 +973,9 @@ cSampleManager::Initialise(void) char filepath[MAX_PATH]; { - m_bInitialised = false; + m_bInitialised = FALSE; - while (true) + while (TRUE) { int32 drive = 'C'; @@ -1000,7 +1000,7 @@ cSampleManager::Initialise(void) { fclose(f); - bool bFileNotFound = false; + bool8 bFileNotFound = FALSE; for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { @@ -1020,19 +1020,19 @@ cSampleManager::Initialise(void) } else { - bFileNotFound = true; + bFileNotFound = TRUE; break; } } if ( !bFileNotFound ) { - m_bInitialised = true; + m_bInitialised = TRUE; break; } else { - m_bInitialised = false; + m_bInitialised = FALSE; continue; } } @@ -1047,11 +1047,11 @@ cSampleManager::Initialise(void) if ( FrontEndMenuManager.m_bQuitGameNoCD ) { Terminate(); - return false; + return FALSE; } continue; #else - m_bInitialised = true; + m_bInitialised = TRUE; #endif } @@ -1071,7 +1071,7 @@ cSampleManager::Initialise(void) { int32 streamLength[TOTAL_STREAMED_SOUNDS]; - bool bFileNotFound = false; + bool8 bFileNotFound = FALSE; char rootpath[MAX_PATH]; strcpy(_aHDDPath, m_szCDRomRootPath); @@ -1101,14 +1101,14 @@ cSampleManager::Initialise(void) } else { - bFileNotFound = true; + bFileNotFound = TRUE; break; } } } else - bFileNotFound = true; + bFileNotFound = TRUE; if ( !bFileNotFound ) { @@ -1117,10 +1117,10 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) nStreamLength[i] = streamLength[i]; - _bUseHDDAudio = true; + _bUseHDDAudio = TRUE; } else - _bUseHDDAudio = false; + _bUseHDDAudio = FALSE; } #endif #ifdef AUDIO_CACHE @@ -1152,7 +1152,7 @@ cSampleManager::Initialise(void) TRACE("providerset"); { - _bSampmanInitialised = true; + _bSampmanInitialised = TRUE; U32 n = 0; @@ -1169,7 +1169,7 @@ cSampleManager::Initialise(void) if ( n == m_nNumberOfProviders ) { Terminate(); - return false; + return FALSE; } } @@ -1198,13 +1198,13 @@ cSampleManager::Initialise(void) time_t t = time(NULL); tm *localtm; - bool bUseRandomTable; + bool8 bUseRandomTable; if ( t == -1 ) - bUseRandomTable = true; + bUseRandomTable = TRUE; else { - bUseRandomTable = false; + bUseRandomTable = FALSE; localtm = localtime(&t); } @@ -1236,12 +1236,12 @@ cSampleManager::Initialise(void) else _CurMP3Pos = 0; - _bIsMp3Active = false; + _bIsMp3Active = FALSE; } TRACE("end"); - return true; + return TRUE; } void @@ -1290,10 +1290,10 @@ cSampleManager::Terminate(void) AIL_shutdown(); - _bSampmanInitialised = false; + _bSampmanInitialised = FALSE; } -bool +bool8 cSampleManager::CheckForAnAudioFileOnCD(void) { #if GTA_VERSION < GTA3_PC_STEAM && !defined(NO_CDCHECK) @@ -1316,13 +1316,13 @@ cSampleManager::CheckForAnAudioFileOnCD(void) { fclose(f); - return true; + return TRUE; } - return false; + return FALSE; #else - return true; + return TRUE; #endif // #if GTA_VERSION < GTA3_PC_STEAM && !defined(NO_CDCHECK) } @@ -1415,48 +1415,48 @@ cSampleManager::SetMusicFadeVolume(uint8 nVolume) } void -cSampleManager::SetMonoMode(uint8 nMode) +cSampleManager::SetMonoMode(bool8 nMode) { m_nMonoMode = nMode; } -bool +bool8 cSampleManager::LoadSampleBank(uint8 nBank) { if ( CTimer::GetIsCodePaused() ) - return false; + return FALSE; if ( MusicManager.IsInitialised() && MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && nBank != SFX_BANK_0 ) { - return false; + return FALSE; } if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) - return false; + return FALSE; if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank],fpSampleDataHandle) != nSampleBankSize[nBank] ) - return false; + return FALSE; - bSampleBankLoaded[nBank] = true; + bSampleBankLoaded[nBank] = TRUE; - return true; + return TRUE; } void cSampleManager::UnloadSampleBank(uint8 nBank) { - bSampleBankLoaded[nBank] = false; + bSampleBankLoaded[nBank] = FALSE; } -bool +bool8 cSampleManager::IsSampleBankLoaded(uint8 nBank) { return bSampleBankLoaded[nBank]; } -bool +bool8 cSampleManager::IsPedCommentLoaded(uint32 nComment) { int8 slot; @@ -1469,10 +1469,10 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) slot += ARRAY_SIZE(nPedSlotSfx); #endif if ( nComment == nPedSlotSfx[slot] ) - return true; + return TRUE; } - return false; + return FALSE; } int32 @@ -1494,11 +1494,11 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) return -1; } -bool +bool8 cSampleManager::LoadPedComment(uint32 nComment) { if ( CTimer::GetIsCodePaused() ) - return false; + return FALSE; // no talking peds during cutsenes or the game end if ( MusicManager.IsInitialised() ) @@ -1507,7 +1507,7 @@ cSampleManager::LoadPedComment(uint32 nComment) { case MUSICMODE_CUTSCENE: { - return false; + return FALSE; break; } @@ -1515,7 +1515,7 @@ cSampleManager::LoadPedComment(uint32 nComment) case MUSICMODE_FRONTEND: { if ( MusicManager.GetNextTrack() == STREAMED_SOUND_GAME_COMPLETED ) - return false; + return FALSE; break; } @@ -1523,10 +1523,10 @@ cSampleManager::LoadPedComment(uint32 nComment) } if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) - return false; + return FALSE; if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) - return false; + return FALSE; nPedSlotSfxAddr[nCurrentPedSlot] = nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot; nPedSlotSfx [nCurrentPedSlot] = nComment; @@ -1534,7 +1534,7 @@ cSampleManager::LoadPedComment(uint32 nComment) if ( ++nCurrentPedSlot >= MAX_PEDSFX ) nCurrentPedSlot = 0; - return true; + return TRUE; } int32 @@ -1573,14 +1573,14 @@ cSampleManager::GetSampleLength(uint32 nSample) return m_aSamples[nSample].nSize >> 1; } -bool +bool8 cSampleManager::UpdateReverb(void) { if ( !usingEAX ) - return false; + return FALSE; if ( AudioManager.GetFrameCounter() & 15 ) - return false; + return FALSE; float y = AudioManager.GetReflectionsDistance(REFLECTION_TOP) + AudioManager.GetReflectionsDistance(REFLECTION_BOTTOM); float x = AudioManager.GetReflectionsDistance(REFLECTION_LEFT) + AudioManager.GetReflectionsDistance(REFLECTION_RIGHT); @@ -1627,7 +1627,7 @@ cSampleManager::UpdateReverb(void) fRatio = clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); if ( fRatio == _fPrevEaxRatioDestination ) - return false; + return FALSE; if ( usingEAX3 ) { @@ -1647,26 +1647,26 @@ cSampleManager::UpdateReverb(void) _fPrevEaxRatioDestination = fRatio; - return true; + return TRUE; } void -cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) +cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } if ( usingEAX ) { - if ( nReverbFlag != 0 ) + if ( nReverbFlag != FALSE ) { if ( !b2d ) AIL_set_3D_sample_effects_level(opened_samples[nChannel], _fEffectsLevel); @@ -1679,16 +1679,16 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) } } -bool +bool8 cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -1698,14 +1698,14 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( nSfx < SAMPLEBANK_MAX ) { if ( !IsSampleBankLoaded(nBank) ) - return false; + return FALSE; addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; } else { if ( !IsPedCommentLoaded(nSfx) ) - return false; + return FALSE; int32 slot = _GetPedCommentSlot(nSfx); @@ -1717,10 +1717,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( opened_2dsamples[nChannel - MAXCHANNELS] ) { AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSamples[nSfx].nSize); - return true; + return TRUE; } else - return false; + return FALSE; } else { @@ -1736,10 +1736,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( AIL_set_3D_sample_info(opened_samples[nChannel], &info) == 0 ) { OutputDebugString(AIL_last_error()); - return false; + return FALSE; } - return true; + return TRUE; } } @@ -1831,13 +1831,13 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) void cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -1857,13 +1857,13 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) void cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -1883,13 +1883,13 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n void cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -1906,16 +1906,16 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) } } -bool +bool8 cSampleManager::GetChannelUsedFlag(uint32 nChannel) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -1925,14 +1925,14 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) if ( opened_2dsamples[nChannel - MAXCHANNELS] ) return AIL_sample_status(opened_2dsamples[nChannel - MAXCHANNELS]) == SMP_PLAYING; else - return false; + return FALSE; } else { if ( opened_samples[nChannel] ) return AIL_3D_sample_status(opened_samples[nChannel]) == SMP_PLAYING; else - return false; + return FALSE; } } @@ -1940,13 +1940,13 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) void cSampleManager::StartChannel(uint32 nChannel) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -1966,13 +1966,13 @@ cSampleManager::StartChannel(uint32 nChannel) void cSampleManager::StopChannel(uint32 nChannel) { - bool b2d = false; + bool8 b2d = FALSE; switch ( nChannel ) { case CHANNEL2D: { - b2d = true; + b2d = TRUE; break; } } @@ -2024,12 +2024,12 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) } void -cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream) +cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream) { if ( m_bInitialised ) { if ( mp3Stream[nStream] ) - AIL_pause_stream(mp3Stream[nStream], nPauseFlag != 0); + AIL_pause_stream(mp3Stream[nStream], nPauseFlag != FALSE); } } @@ -2043,7 +2043,7 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) } } -bool +bool8 cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { int i = 0; @@ -2051,7 +2051,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) char filename[MAX_PATH]; if ( !m_bInitialised || nFile >= TOTAL_STREAMED_SOUNDS ) - return false; + return FALSE; if ( mp3Stream[nStream] ) { @@ -2081,9 +2081,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) AIL_set_stream_loop_count(mp3Stream[nStream], 1); AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); - return true; + return TRUE; } - return false; + return FALSE; } else { if ( e->pLinkPath != NULL ) @@ -2100,9 +2100,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); - _bIsMp3Active = true; + _bIsMp3Active = TRUE; - return true; + return TRUE; } // fall through, start playing from another song } @@ -2128,9 +2128,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) AIL_set_stream_loop_count(mp3Stream[nStream], 1); AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); - return true; + return TRUE; } - return false; + return FALSE; } } if(mp3->pLinkPath != NULL) @@ -2148,9 +2148,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) AIL_set_stream_ms_position(mp3Stream[nStream], 0); AIL_pause_stream(mp3Stream[nStream], 0); #ifdef FIX_BUGS - _bIsMp3Active = true; + _bIsMp3Active = TRUE; #endif - return true; + return TRUE; } } @@ -2169,9 +2169,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) AIL_set_stream_loop_count(mp3Stream[nStream], 1); AIL_set_stream_ms_position(mp3Stream[nStream], position); AIL_pause_stream(mp3Stream[nStream], 0); - return true; + return TRUE; } - return false; + return FALSE; } void @@ -2187,7 +2187,7 @@ cSampleManager::StopStreamedFile(uint8 nStream) mp3Stream[nStream] = NULL; if ( nStream == 0 ) - _bIsMp3Active = false; + _bIsMp3Active = FALSE; } } } @@ -2225,7 +2225,7 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream) } void -cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream) +cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream) { uint8 vol = nVolume; @@ -2258,7 +2258,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream) return 0; } -bool +bool8 cSampleManager::IsStreamPlaying(uint8 nStream) { if ( m_bInitialised ) @@ -2266,23 +2266,23 @@ cSampleManager::IsStreamPlaying(uint8 nStream) if ( mp3Stream[nStream] ) { if ( AIL_stream_status(mp3Stream[nStream]) == SMP_PLAYING ) - return true; + return TRUE; else - return false; + return FALSE; } } - return false; + return FALSE; } -bool +bool8 cSampleManager::InitialiseSampleBanks(void) { int32 nBank = SFX_BANK_0; fpSampleDescHandle = fopen(SampleBankDescFilename, "rb"); if ( fpSampleDescHandle == NULL ) - return false; + return FALSE; fpSampleDataHandle = fopen(SampleBankDataFilename, "rb"); if ( fpSampleDataHandle == NULL ) @@ -2290,7 +2290,7 @@ cSampleManager::InitialiseSampleBanks(void) fclose(fpSampleDescHandle); fpSampleDescHandle = NULL; - return false; + return FALSE; } fseek(fpSampleDataHandle, 0, SEEK_END); @@ -2317,7 +2317,7 @@ cSampleManager::InitialiseSampleBanks(void) nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; - return true; + return TRUE; } #endif diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp index e44e5b57..95603c72 100644 --- a/src/audio/sampman_null.cpp +++ b/src/audio/sampman_null.cpp @@ -4,7 +4,7 @@ #include "AudioManager.h" cSampleManager SampleManager; -bool _bSampmanInitialised = false; +bool8 _bSampmanInitialised = FALSE; uint32 BankStartOffset[MAX_SFX_BANKS]; uint32 nNumMP3s; @@ -60,7 +60,7 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider) return 0; } -bool +bool8 cSampleManager::IsMP3RadioChannelAvailable(void) { return nNumMP3s != 0; @@ -75,10 +75,10 @@ void cSampleManager::ReacquireDigitalHandle(void) { } -bool +bool8 cSampleManager::Initialise(void) { - return true; + return TRUE; } void @@ -87,9 +87,9 @@ cSampleManager::Terminate(void) } -bool cSampleManager::CheckForAnAudioFileOnCD(void) +bool8 cSampleManager::CheckForAnAudioFileOnCD(void) { - return true; + return TRUE; } char cSampleManager::GetCDAudioDriveLetter(void) @@ -128,11 +128,11 @@ cSampleManager::SetMonoMode(uint8 nMode) { } -bool +bool8 cSampleManager::LoadSampleBank(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS ); - return false; + return FALSE; } void @@ -141,20 +141,20 @@ cSampleManager::UnloadSampleBank(uint8 nBank) ASSERT( nBank < MAX_SFX_BANKS ); } -bool +bool8 cSampleManager::IsSampleBankLoaded(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS ); - return false; + return FALSE; } -bool +bool8 cSampleManager::IsPedCommentLoaded(uint32 nComment) { ASSERT( nComment < TOTAL_AUDIO_SAMPLES ); - return false; + return FALSE; } @@ -164,11 +164,11 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) return -1; } -bool +bool8 cSampleManager::LoadPedComment(uint32 nComment) { ASSERT( nComment < TOTAL_AUDIO_SAMPLES ); - return false; + return FALSE; } int32 @@ -205,22 +205,22 @@ cSampleManager::GetSampleLength(uint32 nSample) return 0; } -bool cSampleManager::UpdateReverb(void) +bool8 cSampleManager::UpdateReverb(void) { - return false; + return FALSE; } void -cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) +cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) { ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } -bool +bool8 cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) { ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); - return false; + return FALSE; } void @@ -276,12 +276,12 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } -bool +bool8 cSampleManager::GetChannelUsedFlag(uint32 nChannel) { ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); - return false; + return FALSE; } void @@ -303,7 +303,7 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) } void -cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream) +cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream) { ASSERT( nStream < MAX_STREAMS ); } @@ -314,12 +314,12 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) ASSERT( nStream < MAX_STREAMS ); } -bool +bool8 cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { ASSERT( nStream < MAX_STREAMS ); - return false; + return FALSE; } void @@ -350,19 +350,19 @@ cSampleManager::GetStreamedFileLength(uint8 nStream) return 1; } -bool +bool8 cSampleManager::IsStreamPlaying(uint8 nStream) { ASSERT( nStream < MAX_STREAMS ); - return false; + return FALSE; } -bool +bool8 cSampleManager::InitialiseSampleBanks(void) { - return true; + return TRUE; } #endif diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 3d4b8dbd..15add7cb 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -48,7 +48,7 @@ //TODO: max channels cSampleManager SampleManager; -bool _bSampmanInitialised = false; +bool8 _bSampmanInitialised = FALSE; uint32 BankStartOffset[MAX_SFX_BANKS]; @@ -84,7 +84,7 @@ OggOpusFile *fpSampleDataHandle; #else FILE *fpSampleDataHandle; #endif -bool bSampleBankLoaded [MAX_SFX_BANKS]; +bool8 bSampleBankLoaded [MAX_SFX_BANKS]; int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; int32 nSampleBankSize [MAX_SFX_BANKS]; uintptr nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; @@ -120,7 +120,7 @@ uint8 nStreamPan [MAX_STREAMS]; uint8 nStreamVolume[MAX_STREAMS]; uint32 _CurMP3Index; int32 _CurMP3Pos; -bool _bIsMp3Active; +bool8 _bIsMp3Active; /////////////////////////////////////////////////////////////// // Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS EAXLISTENERPROPERTIES StartEAX3 = @@ -265,11 +265,11 @@ release_existing() DEV("release_existing()\n"); } -static bool +static bool8 set_new_provider(int index) { if ( curprovider == index ) - return true; + return TRUE; curprovider = index; @@ -301,7 +301,7 @@ set_new_provider(int index) { curprovider=-1; release_existing(); - return false; + return FALSE; } alListenerf (AL_GAIN, 1.0f); @@ -382,13 +382,13 @@ set_new_provider(int index) aChannel[i].SetReverbMix(ALEffectSlot, 0.0f); } - return true; + return TRUE; } - return false; + return FALSE; } -static bool +static bool8 IsThisTrackAt16KHz(uint32 track) { return track == STREAMED_SOUND_RADIO_CHAT; @@ -456,13 +456,13 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider) return curprovider; } -static bool +static bool8 _ResolveLink(char const *path, char *out) { #ifdef _WIN32 size_t len = strlen(path); if (len < 4 || strcmp(&path[len - 4], ".lnk") != 0) - return false; + return FALSE; IShellLink* psl; WIN32_FIND_DATA fd; @@ -497,7 +497,7 @@ _ResolveLink(char const *path, char *out) ppf->Release(); psl->Release(); #endif - return true; + return TRUE; } } } @@ -507,31 +507,31 @@ _ResolveLink(char const *path, char *out) psl->Release(); } - return false; + return FALSE; #else struct stat sb; if (lstat(path, &sb) == -1) { perror("lstat: "); - return false; + return FALSE; } if (S_ISLNK(sb.st_mode)) { char* linkname = (char*)alloca(sb.st_size + 1); if (linkname == NULL) { fprintf(stderr, "insufficient memory\n"); - return false; + return FALSE; } if (readlink(path, linkname, sb.st_size + 1) < 0) { perror("readlink: "); - return false; + return FALSE; } linkname[sb.st_size] = '\0'; strcpy(out, linkname); - return true; + return TRUE; } else { - return false; + return FALSE; } #endif } @@ -540,8 +540,8 @@ static void _FindMP3s(void) { tMP3Entry *pList; - bool bShortcut; - bool bInitFirstEntry; + bool8 bShortcut; + bool8 bInitFirstEntry; HANDLE hFind; char path[MAX_PATH]; char filepath[MAX_PATH*2]; @@ -584,9 +584,9 @@ _FindMP3s(void) { OutputDebugString("Resolving Link"); OutputDebugString(filepath); - bShortcut = true; + bShortcut = TRUE; } else - bShortcut = false; + bShortcut = FALSE; aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]); @@ -626,7 +626,7 @@ _FindMP3s(void) _pMP3List->pLinkPath = NULL; } - bInitFirstEntry = false; + bInitFirstEntry = FALSE; } else { @@ -634,10 +634,10 @@ _FindMP3s(void) OutputDebugString(filepath); - bInitFirstEntry = true; + bInitFirstEntry = TRUE; } - while ( true ) + while ( TRUE ) { if ( !FindNextFile(hFind, &fd) ) break; @@ -655,9 +655,9 @@ _FindMP3s(void) { OutputDebugString("Resolving Link"); OutputDebugString(filepath); - bShortcut = true; + bShortcut = TRUE; } else { - bShortcut = false; + bShortcut = FALSE; if (filepathlen > MAX_PATH) { continue; } @@ -696,7 +696,7 @@ _FindMP3s(void) pList = _pMP3List; - bInitFirstEntry = false; + bInitFirstEntry = FALSE; } else { @@ -718,9 +718,9 @@ _FindMP3s(void) { OutputDebugString("Resolving Link"); OutputDebugString(filepath); - bShortcut = true; + bShortcut = TRUE; } else - bShortcut = false; + bShortcut = FALSE; aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]); @@ -830,7 +830,7 @@ _GetMP3EntryByIndex(uint32 idx) return NULL; } -static inline bool +static inline bool8 _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) { _CurMP3Index = 0; @@ -843,7 +843,7 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) *pPosition -= (*pEntry)->nTrackStreamPos; _CurMP3Pos = *pPosition; - return true; + return TRUE; } _CurMP3Index++; @@ -854,10 +854,10 @@ _GetMP3PosFromStreamPos(uint32 *pPosition, tMP3Entry **pEntry) _CurMP3Pos = 0; _CurMP3Index = 0; - return false; + return FALSE; } -bool +bool8 cSampleManager::IsMP3RadioChannelAvailable(void) { return nNumMP3s != 0; @@ -883,11 +883,11 @@ void cSampleManager::ReacquireDigitalHandle(void) } } -bool +bool8 cSampleManager::Initialise(void) { if ( _bSampmanInitialised ) - return true; + return TRUE; EFXInit(); CStream::Initialise(); @@ -932,7 +932,7 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - bSampleBankLoaded[i] = false; + bSampleBankLoaded[i] = FALSE; nSampleBankDiscStartOffset[i] = 0; nSampleBankSize[i] = 0; nSampleBankMemoryStartAddress[i] = 0; @@ -1000,7 +1000,7 @@ cSampleManager::Initialise(void) if ( !InitialiseSampleBanks() ) { Terminate(); - return false; + return FALSE; } nSampleBankMemoryStartAddress[SFX_BANK_0] = (uintptr)malloc(nSampleBankSize[SFX_BANK_0]); @@ -1009,7 +1009,7 @@ cSampleManager::Initialise(void) if ( nSampleBankMemoryStartAddress[SFX_BANK_0] == 0 ) { Terminate(); - return false; + return FALSE; } nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BLOCKSIZE*MAX_PEDSFX); @@ -1028,7 +1028,7 @@ cSampleManager::Initialise(void) } { - _bSampmanInitialised = true; + _bSampmanInitialised = TRUE; if ( defaultProvider >= 0 && defaultProvider < m_nNumberOfProviders ) { @@ -1037,7 +1037,7 @@ cSampleManager::Initialise(void) else { Terminate(); - return false; + return FALSE; } } @@ -1060,13 +1060,13 @@ cSampleManager::Initialise(void) time_t t = time(NULL); tm *localtm; - bool bUseRandomTable; + bool8 bUseRandomTable; if ( t == -1 ) - bUseRandomTable = true; + bUseRandomTable = TRUE; else { - bUseRandomTable = false; + bUseRandomTable = FALSE; localtm = localtime(&t); } @@ -1098,10 +1098,10 @@ cSampleManager::Initialise(void) else _CurMP3Pos = 0; - _bIsMp3Active = false; + _bIsMp3Active = FALSE; } - return true; + return TRUE; } void @@ -1135,12 +1135,12 @@ cSampleManager::Terminate(void) nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; } - _bSampmanInitialised = false; + _bSampmanInitialised = FALSE; } -bool cSampleManager::CheckForAnAudioFileOnCD(void) +bool8 cSampleManager::CheckForAnAudioFileOnCD(void) { - return true; + return TRUE; } char cSampleManager::GetCDAudioDriveLetter(void) @@ -1196,19 +1196,19 @@ cSampleManager::SetMonoMode(uint8 nMode) m_nMonoMode = nMode; } -bool +bool8 cSampleManager::LoadSampleBank(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); if ( CTimer::GetIsCodePaused() ) - return false; + return FALSE; if ( MusicManager.IsInitialised() && MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && nBank != SFX_BANK_0 ) { - return false; + return FALSE; } #ifdef OPUS_SFX @@ -1227,14 +1227,14 @@ cSampleManager::LoadSampleBank(uint8 nBank) } #else if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) - return false; + return FALSE; if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank], fpSampleDataHandle) != nSampleBankSize[nBank] ) - return false; + return FALSE; #endif - bSampleBankLoaded[nBank] = true; + bSampleBankLoaded[nBank] = TRUE; - return true; + return TRUE; } void @@ -1242,10 +1242,10 @@ cSampleManager::UnloadSampleBank(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); - bSampleBankLoaded[nBank] = false; + bSampleBankLoaded[nBank] = FALSE; } -bool +bool8 cSampleManager::IsSampleBankLoaded(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); @@ -1253,7 +1253,7 @@ cSampleManager::IsSampleBankLoaded(uint8 nBank) return bSampleBankLoaded[nBank]; } -bool +bool8 cSampleManager::IsPedCommentLoaded(uint32 nComment) { ASSERT( nComment < TOTAL_AUDIO_SAMPLES ); @@ -1268,10 +1268,10 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) slot += ARRAY_SIZE(nPedSlotSfx); #endif if ( nComment == nPedSlotSfx[slot] ) - return true; + return TRUE; } - return false; + return FALSE; } @@ -1294,13 +1294,13 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) return -1; } -bool +bool8 cSampleManager::LoadPedComment(uint32 nComment) { ASSERT( nComment < TOTAL_AUDIO_SAMPLES ); if ( CTimer::GetIsCodePaused() ) - return false; + return FALSE; // no talking peds during cutsenes or the game end if ( MusicManager.IsInitialised() ) @@ -1309,7 +1309,7 @@ cSampleManager::LoadPedComment(uint32 nComment) { case MUSICMODE_CUTSCENE: { - return false; + return FALSE; break; } @@ -1317,7 +1317,7 @@ cSampleManager::LoadPedComment(uint32 nComment) case MUSICMODE_FRONTEND: { if ( MusicManager.GetNextTrack() == STREAMED_SOUND_GAME_COMPLETED ) - return false; + return FALSE; break; } @@ -1332,17 +1332,17 @@ cSampleManager::LoadPedComment(uint32 nComment) int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * nCurrentPedSlot + samplesRead), samplesSize, NULL); if (size <= 0) { - return false; + return FALSE; } samplesRead += size * 2; samplesSize -= size; } #else if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) - return false; + return FALSE; if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) - return false; + return FALSE; #endif nPedSlotSfx[nCurrentPedSlot] = nComment; @@ -1350,7 +1350,7 @@ cSampleManager::LoadPedComment(uint32 nComment) if ( ++nCurrentPedSlot >= MAX_PEDSFX ) nCurrentPedSlot = 0; - return true; + return TRUE; } int32 @@ -1393,13 +1393,13 @@ cSampleManager::GetSampleLength(uint32 nSample) return m_aSamples[nSample].nSize / sizeof(uint16); } -bool cSampleManager::UpdateReverb(void) +bool8 cSampleManager::UpdateReverb(void) { if ( !usingEAX && !_usingEFX ) - return false; + return FALSE; if ( AudioManager.GetFrameCounter() & 15 ) - return false; + return FALSE; float y = AudioManager.GetReflectionsDistance(REFLECTION_TOP) + AudioManager.GetReflectionsDistance(REFLECTION_BOTTOM); float x = AudioManager.GetReflectionsDistance(REFLECTION_LEFT) + AudioManager.GetReflectionsDistance(REFLECTION_RIGHT); @@ -1420,7 +1420,7 @@ bool cSampleManager::UpdateReverb(void) fRatio = clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); if ( fRatio == _fPrevEaxRatioDestination ) - return false; + return FALSE; #ifdef JUICY_OAL if ( usingEAX3 || _usingEFX ) @@ -1455,11 +1455,11 @@ bool cSampleManager::UpdateReverb(void) _fPrevEaxRatioDestination = fRatio; - return true; + return TRUE; } void -cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) +cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) { ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); @@ -1469,7 +1469,7 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) { alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect); - if ( nReverbFlag != 0 ) + if ( nReverbFlag != FALSE ) aChannel[nChannel].SetReverbMix(ALEffectSlot, _fEffectsLevel); else aChannel[nChannel].SetReverbMix(ALEffectSlot, 0.0f); @@ -1477,7 +1477,7 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, uint8 nReverbFlag) } } -bool +bool8 cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) { ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); @@ -1487,14 +1487,14 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( nSfx < SAMPLEBANK_MAX ) { if ( !IsSampleBankLoaded(nBank) ) - return false; + return FALSE; addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; } else { if ( !IsPedCommentLoaded(nSfx) ) - return false; + return FALSE; int32 slot = _GetPedCommentSlot(nSfx); addr = (nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * slot); @@ -1512,10 +1512,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) aChannel[nChannel].SetSampleData ((void*)addr, m_aSamples[nSfx].nSize, m_aSamples[nSfx].nFrequency); aChannel[nChannel].SetLoopPoints (0, -1); aChannel[nChannel].SetPitch (1.0f); - return true; + return TRUE; } - return false; + return FALSE; } void @@ -1619,7 +1619,7 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) aChannel[nChannel].SetLoopCount(nLoopCount); } -bool +bool8 cSampleManager::GetChannelUsedFlag(uint32 nChannel) { ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); @@ -1673,7 +1673,7 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) } void -cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream) +cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream) { ASSERT( nStream < MAX_STREAMS ); @@ -1681,7 +1681,7 @@ cSampleManager::PauseStream(uint8 nPauseFlag, uint8 nStream) if ( stream ) { - stream->SetPause(nPauseFlag != 0); + stream->SetPause(nPauseFlag != FALSE); } } @@ -1701,7 +1701,7 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) } } -bool +bool8 cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { int i = 0; @@ -1709,7 +1709,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) char filename[MAX_PATH]; if ( nFile >= TOTAL_STREAMED_SOUNDS ) - return false; + return FALSE; if ( aStream[nStream] ) { @@ -1742,12 +1742,12 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) stream->Start(); - return true; + return TRUE; } else { delete stream; aStream[nStream] = NULL; } - return false; + return FALSE; } else { if ( e->pLinkPath != NULL ) @@ -1765,8 +1765,8 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) aStream[nStream]->Start(); - _bIsMp3Active = true; - return true; + _bIsMp3Active = TRUE; + return TRUE; } else { delete aStream[nStream]; aStream[nStream] = NULL; @@ -1798,12 +1798,12 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) stream->Start(); - return true; + return TRUE; } else { delete stream; aStream[nStream] = NULL; } - return false; + return FALSE; } } if(mp3->pLinkPath != NULL) @@ -1818,9 +1818,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) if (aStream[nStream]->Setup()) { aStream[nStream]->Start(); #ifdef FIX_BUGS - _bIsMp3Active = true; + _bIsMp3Active = TRUE; #endif - return true; + return TRUE; } else { delete aStream[nStream]; aStream[nStream] = NULL; @@ -1845,12 +1845,12 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) stream->Start(); - return true; + return TRUE; } else { delete stream; aStream[nStream] = NULL; } - return false; + return FALSE; } void @@ -1866,7 +1866,7 @@ cSampleManager::StopStreamedFile(uint8 nStream) aStream[nStream] = NULL; if ( nStream == 0 ) - _bIsMp3Active = false; + _bIsMp3Active = FALSE; } } @@ -1934,7 +1934,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream) return nStreamLength[nStream]; } -bool +bool8 cSampleManager::IsStreamPlaying(uint8 nStream) { ASSERT( nStream < MAX_STREAMS ); @@ -1944,10 +1944,10 @@ cSampleManager::IsStreamPlaying(uint8 nStream) if ( stream ) { if ( stream->IsPlaying() ) - return true; + return TRUE; } - return false; + return FALSE; } void @@ -1968,14 +1968,14 @@ cSampleManager::Service(void) } } -bool +bool8 cSampleManager::InitialiseSampleBanks(void) { int32 nBank = SFX_BANK_0; fpSampleDescHandle = fcaseopen(SampleBankDescFilename, "rb"); if ( fpSampleDescHandle == NULL ) - return false; + return FALSE; #ifndef OPUS_SFX fpSampleDataHandle = fcaseopen(SampleBankDataFilename, "rb"); if ( fpSampleDataHandle == NULL ) @@ -1983,7 +1983,7 @@ cSampleManager::InitialiseSampleBanks(void) fclose(fpSampleDescHandle); fpSampleDescHandle = NULL; - return false; + return FALSE; } fseek(fpSampleDataHandle, 0, SEEK_END); @@ -2015,6 +2015,6 @@ cSampleManager::InitialiseSampleBanks(void) nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; - return true; + return TRUE; } #endif diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index d6e36875..792d3bda 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -160,7 +160,7 @@ void CGarages::Init(void) aCarsInSafeHouse3[i].Init(); hGarages = DMAudio.CreateEntity(AUDIOTYPE_GARAGE, (void*)1); if (hGarages >= 0) - DMAudio.SetEntityStatus(hGarages, true); + DMAudio.SetEntityStatus(hGarages, TRUE); AddOne( CVector(CRUSHER_GARAGE_X1, CRUSHER_GARAGE_Y1, CRUSHER_GARAGE_Z1), CVector(CRUSHER_GARAGE_X2, CRUSHER_GARAGE_Y2, CRUSHER_GARAGE_Z2), diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp index d8b15385..20a38cc0 100644 --- a/src/control/Replay.cpp +++ b/src/control/Replay.cpp @@ -1232,7 +1232,7 @@ void CReplay::RestoreStuffFromMem(void) ped->SetModelIndex(mi); ped->m_pVehicleAnim = nil; ped->m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, ped); - DMAudio.SetEntityStatus(ped->m_audioEntityId, true); + DMAudio.SetEntityStatus(ped->m_audioEntityId, TRUE); CPopulation::UpdatePedCount((ePedType)ped->m_nPedType, false); if (ped->m_wepModelID >= 0) ped->AddWeaponModel(ped->m_wepModelID); @@ -1270,7 +1270,7 @@ void CReplay::RestoreStuffFromMem(void) car->SetDoorDamage(CAR_DOOR_RR, DOOR_REAR_RIGHT, true); } vehicle->m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, vehicle); - DMAudio.SetEntityStatus(vehicle->m_audioEntityId, true); + DMAudio.SetEntityStatus(vehicle->m_audioEntityId, TRUE); CCarCtrl::UpdateCarCount(vehicle, false); if ((mi == MI_AIRTRAIN || mi == MI_DEADDODO) && vehicle->m_rwObject){ CVehicleModelInfo* info = (CVehicleModelInfo*)CModelInfo::GetModelInfo(mi); diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp index 93956ea2..65459c9e 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -1327,7 +1327,7 @@ int8 CRunningScript::ProcessCommands900To999(int32 command) { CollectParameters(&m_nIp, 1); DMAudio.ChangeMusicMode(MUSICMODE_FRONTEND); - DMAudio.PlayFrontEndTrack(ScriptParams[0] + STREAMED_SOUND_MISSION_COMPLETED - 1, 0); + DMAudio.PlayFrontEndTrack(ScriptParams[0] + STREAMED_SOUND_MISSION_COMPLETED - 1, FALSE); return 0; } case COMMAND_CLEAR_AREA: diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 4f3f31a4..4677e4c9 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -4422,7 +4422,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = m_nHoverOption - HOVEROPTION_RADIO_0; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); } else if (m_nHoverOption == HOVEROPTION_RANDOM_ITEM && aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action != MENUACTION_RESUME) { @@ -4436,7 +4436,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = HEAD_RADIO; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_1: @@ -4444,7 +4444,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = DOUBLE_CLEF; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_2: @@ -4452,7 +4452,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = JAH_RADIO; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_3: @@ -4460,7 +4460,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = RISE_FM; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_4: @@ -4468,7 +4468,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = LIPS_106; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_5: @@ -4476,7 +4476,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = GAME_FM; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_6: @@ -4484,7 +4484,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = MSX_FM; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_7: @@ -4492,7 +4492,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = FLASHBACK; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_8: @@ -4500,7 +4500,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = CHATTERBOX; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RADIO_9: @@ -4508,7 +4508,7 @@ CMenuManager::ProcessButtonPresses(void) m_PrefsRadioStation = USERTRACK; SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; case HOVEROPTION_RANDOM_ITEM: @@ -4731,7 +4731,7 @@ CMenuManager::ProcessButtonPresses(void) curBottomBarOption = hoveredBottomBarOption; ChangeScreen(bbNames[curBottomBarOption].screenId, 0, true, false); if (bbNames[curBottomBarOption].screenId == MENUPAGE_SOUND_SETTINGS) - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); return; } else if (bottomBarActive) { if (CPad::GetPad(0)->GetEnterJustDown() || CPad::GetPad(0)->GetCrossJustDown()) { @@ -4739,7 +4739,7 @@ CMenuManager::ProcessButtonPresses(void) bottomBarActive = false; if (bbNames[curBottomBarOption].screenId == MENUPAGE_SOUND_SETTINGS) - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); return; } else if (CPad::GetPad(0)->GetLeftJustDown() || CPad::GetPad(0)->GetAnaloguePadLeft() || CPad::GetPad(0)->GetDPadLeftJustDown() @@ -4890,7 +4890,7 @@ CMenuManager::ProcessButtonPresses(void) } SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); #endif break; @@ -5100,7 +5100,7 @@ CMenuManager::ProcessButtonPresses(void) DMAudio.SetMusicMasterVolume(102); DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); SaveSettings(); } else if (m_nCurrScreen == MENUPAGE_DISPLAY_SETTINGS) { m_PrefsFrameLimiter = true; @@ -5186,7 +5186,7 @@ CMenuManager::ProcessButtonPresses(void) break; case MENUACTION_LOADRADIO: ChangeScreen(MENUPAGE_SOUND_SETTINGS, 0, true, true); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("STARTED PLAYING FRONTEND AUDIO TRACK"); break; #ifdef MISSION_REPLAY @@ -5381,7 +5381,7 @@ CMenuManager::ProcessButtonPresses(void) } SaveSettings(); DMAudio.SetRadioInCar(m_PrefsRadioStation); - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); OutputDebugString("FRONTEND RADIO STATION CHANGED"); break; #ifdef ASPECT_RATIO_SCALE diff --git a/src/core/FrontendTriggers.h b/src/core/FrontendTriggers.h index b2bde09c..44bae54f 100644 --- a/src/core/FrontendTriggers.h +++ b/src/core/FrontendTriggers.h @@ -779,7 +779,7 @@ TriggerAudio_RadioStation(CMenuMultiChoicePicturedTriggered *widget) if ( CMenuManager::m_PrefsRadioStation != widget->GetMenuSelection() ) { CMenuManager::m_PrefsRadioStation = widget->GetMenuSelection(); - DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(CMenuManager::m_PrefsRadioStation, TRUE); DMAudio.SetRadioInCar(CMenuManager::m_PrefsRadioStation); } } @@ -792,12 +792,12 @@ TriggerAudio_StereoMono(CMenuMultiChoiceTriggered *widget) { if (widget->GetMenuSelection() == 1) { - DMAudio.SetMonoMode(true); + DMAudio.SetMonoMode(TRUE); DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MONO, 0); } else { - DMAudio.SetMonoMode(false); + DMAudio.SetMonoMode(FALSE); DMAudio.PlayFrontEndSound(SOUND_FRONTEND_STEREO, 0); } } diff --git a/src/core/Frontend_PS2.cpp b/src/core/Frontend_PS2.cpp index 1cb944d1..457a5ff8 100644 --- a/src/core/Frontend_PS2.cpp +++ b/src/core/Frontend_PS2.cpp @@ -2871,7 +2871,7 @@ CMenuManager::ProcessDPadCrossJustDown(void) { if ( !gMusicPlaying ) { - DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, 1); + DMAudio.PlayFrontEndTrack(m_PrefsRadioStation, TRUE); gMusicPlaying = true; } } diff --git a/src/core/World.cpp b/src/core/World.cpp index 768ed7f9..6e8314f4 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -64,7 +64,7 @@ CWorld::Initialise() void CWorld::Add(CEntity *ent) { - if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, true); + if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, TRUE); if(ent->bIsBIGBuilding) ms_bigBuildingsList[ent->m_level].InsertItem(ent); @@ -79,7 +79,7 @@ CWorld::Add(CEntity *ent) void CWorld::Remove(CEntity *ent) { - if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, false); + if(ent->IsVehicle() || ent->IsPed()) DMAudio.SetEntityStatus(((CPhysical *)ent)->m_audioEntityId, FALSE); if(ent->bIsBIGBuilding) ms_bigBuildingsList[ent->m_level].RemoveItem(ent); diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp index 71f223d7..211a568c 100644 --- a/src/objects/ParticleObject.cpp +++ b/src/objects/ParticleObject.cpp @@ -33,7 +33,7 @@ CAudioHydrant::Add(CParticleObject *particleobject) if ( AEHANDLE_IS_FAILED(List[i].AudioEntity) ) return false; - DMAudio.SetEntityStatus(List[i].AudioEntity, true); + DMAudio.SetEntityStatus(List[i].AudioEntity, TRUE); List[i].pParticleObject = particleobject; diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 936e039f..a564c9e5 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -244,7 +244,7 @@ CPed::CPed(uint32 pedType) : m_pedIK(this) bHasACamera = true; m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, this); - DMAudio.SetEntityStatus(m_audioEntityId, true); + DMAudio.SetEntityStatus(m_audioEntityId, TRUE); m_fearFlags = CPedType::GetThreats(m_nPedType); m_threatEntity = nil; m_eventOrThreat = CVector2D(0.0f, 0.0f); diff --git a/src/render/Weather.cpp b/src/render/Weather.cpp index 771f85de..e57d57d6 100644 --- a/src/render/Weather.cpp +++ b/src/render/Weather.cpp @@ -114,7 +114,7 @@ void CWeather::Init(void) ForcedWeatherType = WEATHER_RANDOM; SoundHandle = DMAudio.CreateEntity(AUDIOTYPE_WEATHER, (void*)1); if (SoundHandle >= 0) - DMAudio.SetEntityStatus(SoundHandle, true); + DMAudio.SetEntityStatus(SoundHandle, TRUE); } void CWeather::Update(void) diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index 1191465a..0c7913af 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -85,7 +85,7 @@ void CCranes::AddThisOneCrane(CEntity* pEntity) pCrane->m_bWasMilitaryCrane = false; pCrane->m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[NumCranes]); if (pCrane->m_nAudioEntity >= 0) - DMAudio.SetEntityStatus(pCrane->m_nAudioEntity, true); + DMAudio.SetEntityStatus(pCrane->m_nAudioEntity, TRUE); pCrane->m_bIsTop = (MODELID_CRANE_1 != pEntity->GetModelIndex()); // Is this used to avoid military crane? if (pCrane->m_bIsTop || pEntity->GetPosition().y > 0.0f) { @@ -669,7 +669,7 @@ void CCranes::Load(uint8* buf, uint32 size) for (int i = 0; i < NUM_CRANES; i++) { aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[i]); if (aCranes[i].m_nAudioEntity != 0) - DMAudio.SetEntityStatus(aCranes[i].m_nAudioEntity, true); + DMAudio.SetEntityStatus(aCranes[i].m_nAudioEntity, TRUE); } VALIDATESAVEBUF(size); diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 6696f4a6..8885485d 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -108,7 +108,7 @@ CVehicle::CVehicle(uint8 CreatedBy) m_fMapObjectHeightAhead = m_fMapObjectHeightBehind = 0.0f; m_audioEntityId = DMAudio.CreateEntity(AUDIOTYPE_PHYSICAL, this); if(m_audioEntityId >= 0) - DMAudio.SetEntityStatus(m_audioEntityId, true); + DMAudio.SetEntityStatus(m_audioEntityId, TRUE); m_nRadioStation = CGeneral::GetRandomNumber() % USERTRACK; m_pCurGroundEntity = nil; m_bRainAudioCounter = 0; diff --git a/src/weapons/Explosion.cpp b/src/weapons/Explosion.cpp index 8ab81748..f79c0278 100644 --- a/src/weapons/Explosion.cpp +++ b/src/weapons/Explosion.cpp @@ -46,7 +46,7 @@ CExplosion::Initialise() } AudioHandle = DMAudio.CreateEntity(AUDIOTYPE_EXPLOSION, (void*)1); if (AudioHandle >= 0) - DMAudio.SetEntityStatus(AudioHandle, true); + DMAudio.SetEntityStatus(AudioHandle, TRUE); debug("CExplosion ready\n"); } From 319bf9d8d218d79d31f8fc0dfac2908b6c869c54 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 22 May 2021 12:16:10 +0300 Subject: [PATCH 134/314] Fix return type --- src/audio/AudioManager.cpp | 4 ++-- src/audio/AudioManager.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index c15d04bd..8d9d867d 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -409,13 +409,13 @@ cAudioManager::CheckForAnAudioFileOnCD() const return SampleManager.CheckForAnAudioFileOnCD(); } -uint8 +char cAudioManager::GetCDAudioDriveLetter() const { if (m_bIsInitialised) return SampleManager.GetCDAudioDriveLetter(); - return 0; + return '\0'; } bool8 diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index edf5eb63..4a888788 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -338,7 +338,7 @@ public: void GenerateIntegerRandomNumberTable(); char *Get3DProviderName(uint8 id) const; - uint8 GetCDAudioDriveLetter() const; + char GetCDAudioDriveLetter() const; int8 GetCurrent3DProviderIndex() const; float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used float GetCollisionOneShotRatio(int32 a, float b) const; From c37f4c3c1aab1ae9e531294c89b95f1cd571ebd8 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 22 May 2021 13:34:13 +0300 Subject: [PATCH 135/314] Fix cAudioManager::SetupJumboFlySound --- src/audio/AudioLogic.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 2f173d5e..75d7d6a3 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -2879,21 +2879,22 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) int32 vol = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); m_sQueueSample.m_nVolume = vol; if (m_sQueueSample.m_nVolume != 0) { - m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; m_sQueueSample.m_nCounter = 0; + m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; - m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); + m_sQueueSample.m_nLoopCount = 0; + m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } return TRUE; From c9804510d1c29662b33a1fa51b8ccdc6de614f5c Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 22 May 2021 13:43:38 +0300 Subject: [PATCH 136/314] This means sound should be panned right, not volume --- src/audio/AudioLogic.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 75d7d6a3..f63ea4b3 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -2931,7 +2931,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nCounter = 6; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_nFrequency += 200; - m_sQueueSample.m_nOffset = MAX_VOLUME; + m_sQueueSample.m_nOffset = 127; AddSampleToRequestedQueue(); } return TRUE; @@ -7980,7 +7980,7 @@ cAudioManager::ProcessFrontEnd() if (stereo) { ++m_sQueueSample.m_nSampleIndex; m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_nOffset = MAX_VOLUME - m_sQueueSample.m_nOffset; + m_sQueueSample.m_nOffset = 127 - m_sQueueSample.m_nOffset; AddSampleToRequestedQueue(); } } From 7a2dbd9112d9537453bb51a503858b769af32204 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 23 May 2021 16:14:30 +0300 Subject: [PATCH 137/314] Increase the number of audio channels to PS2 count and some small audio fixes --- src/audio/AudioLogic.cpp | 44 +++++++++++++++-------------- src/audio/AudioManager.cpp | 17 ++++++------ src/audio/AudioManager.h | 8 +++--- src/audio/audio_enums.h | 22 +++++++++++++++ src/audio/oal/channel.cpp | 18 ++++++------ src/audio/sampman.h | 14 +++++++--- src/audio/sampman_miles.cpp | 20 +++++++------- src/audio/sampman_oal.cpp | 55 ++++++++++++++++++------------------- src/core/config.h | 2 +- 9 files changed, 114 insertions(+), 86 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index f63ea4b3..17d31330 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -38,9 +38,9 @@ #include "ZoneCull.h" #include "sampman.h" -const int channels = ARRAY_SIZE(AudioManager.m_asActiveSamples); -const int policeChannel = channels + 1; -const int allChannels = channels + 2; +#ifndef GTA_PS2 +#define CHANNEL_PLAYER_VEHICLE_ENGINE m_nActiveSamples +#endif uint32 gPornNextTime; uint32 gSawMillNextTime; @@ -224,24 +224,26 @@ cAudioManager::ResetAudioLogicTimers(uint32 timer) } } ClearMissionAudio(); - SampleManager.StopChannel(policeChannel); + SampleManager.StopChannel(CHANNEL_POLICE_RADIO); } void cAudioManager::ProcessReverb() const { if (SampleManager.UpdateReverb() && m_bDynamicAcousticModelingStatus) { +#ifndef GTA_PS2 for (uint32 i = 0; i < #ifdef FIX_BUGS - channels + NUM_CHANNELS_GENERIC #else - 28 + NUM_CHANNELS_GENERIC+1 #endif ; i++) { if (m_asActiveSamples[i].m_bReverbFlag) SampleManager.SetChannelReverbFlag(i, TRUE); } +#endif } } @@ -278,7 +280,7 @@ cAudioManager::ProcessSpecial() CPlayerPed *playerPed = FindPlayerPed(); if (playerPed) { if(playerPed->EnteringCar() && !playerPed->bInVehicle) - SampleManager.StopChannel(m_nActiveSamples); + SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); } } } @@ -931,7 +933,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) playerVeh = FindPlayerVehicle(); veh = params.m_pVehicle; if (playerVeh == veh && veh->GetStatus() == STATUS_WRECKED) { - SampleManager.StopChannel(m_nActiveSamples); + SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); return; } if (veh->bEngineOn) { @@ -1231,7 +1233,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * else accelerateState = Pads[0].GetAccelerate(); - channelUsed = SampleManager.GetChannelUsedFlag(m_nActiveSamples); + channelUsed = SampleManager.GetChannelUsedFlag(CHANNEL_PLAYER_VEHICLE_ENGINE); transmission = params.m_pTransmission; velocityChange = params.m_fVelocityChange; relativeVelocityChange = 2.0f * velocityChange / transmission->fMaxVelocity; @@ -1278,7 +1280,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * if (accelerateState <= 0) { if (params.m_fVelocityChange < -0.001f) { if (channelUsed) { - SampleManager.StopChannel(m_nActiveSamples); + SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); bAccelSampleStopped = TRUE; } if (automobile->m_nWheelsOnGround == 0 || automobile->bIsHandbrakeOn || lostTraction) @@ -1290,7 +1292,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * automobile->m_fGasPedalAudio = gasPedalAudio; } else if (LastAccel > 0) { if (channelUsed) { - SampleManager.StopChannel(m_nActiveSamples); + SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); bAccelSampleStopped = TRUE; } nCruising = 0; @@ -1334,7 +1336,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * if (engineSoundType == SFX_BANK_TRUCK) freq /= 2; if (channelUsed) { - SampleManager.StopChannel(m_nActiveSamples); + SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); bAccelSampleStopped = TRUE; } AddPlayerCarSample(vol, freq, (engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_REV_1), SFX_BANK_0, 2, TRUE); @@ -1361,22 +1363,22 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * } } - if (!SampleManager.InitialiseChannel(m_nActiveSamples, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0)) + if (!SampleManager.InitialiseChannel(CHANNEL_PLAYER_VEHICLE_ENGINE, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0)) return; - SampleManager.SetChannelLoopCount(m_nActiveSamples, 1); - SampleManager.SetChannelLoopPoints(m_nActiveSamples, 0, -1); + SampleManager.SetChannelLoopCount(CHANNEL_PLAYER_VEHICLE_ENGINE, 1); + SampleManager.SetChannelLoopPoints(CHANNEL_PLAYER_VEHICLE_ENGINE, 0, -1); } - SampleManager.SetChannelEmittingVolume(m_nActiveSamples, 85); - SampleManager.SetChannel3DPosition(m_nActiveSamples, pos.x, pos.y, pos.z); - SampleManager.SetChannel3DDistances(m_nActiveSamples, 50.f, 12.5f); + SampleManager.SetChannelEmittingVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, 85); + SampleManager.SetChannel3DPosition(CHANNEL_PLAYER_VEHICLE_ENGINE, pos.x, pos.y, pos.z); + SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.f, 12.5f); freq = GearFreqAdj[CurrentPretendGear] + freqModifier + 22050; if (engineSoundType == SFX_BANK_TRUCK) freq /= 2; - SampleManager.SetChannelFrequency(m_nActiveSamples, freq); + SampleManager.SetChannelFrequency(CHANNEL_PLAYER_VEHICLE_ENGINE, freq); if (!channelUsed) { - SampleManager.SetChannelReverbFlag(m_nActiveSamples, m_bDynamicAcousticModelingStatus != FALSE); - SampleManager.StartChannel(m_nActiveSamples); + SampleManager.SetChannelReverbFlag(CHANNEL_PLAYER_VEHICLE_ENGINE, m_bDynamicAcousticModelingStatus != FALSE); + SampleManager.StartChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); } } break; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 8d9d867d..1f758dd2 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -13,10 +13,6 @@ cAudioManager AudioManager; -const int channels = ARRAY_SIZE(AudioManager.m_asActiveSamples); -const int policeChannel = channels + 1; -const int allChannels = channels + 2; - #define SPEED_OF_SOUND 343.f #define TIME_SPENT 50 @@ -26,7 +22,7 @@ cAudioManager::cAudioManager() m_bReverb = TRUE; m_fSpeedOfSound = SPEED_OF_SOUND / TIME_SPENT; m_nTimeSpent = TIME_SPENT; - m_nActiveSamples = NUM_SOUNDS_SAMPLES_SLOTS; + m_nActiveSamples = NUM_CHANNELS_GENERIC; m_nActiveSampleQueue = 1; ClearRequestedQueue(); m_nActiveSampleQueue = 0; @@ -267,7 +263,7 @@ cAudioManager::ResetTimers(uint32 time) } ClearActiveSamples(); ClearMissionAudio(); - SampleManager.StopChannel(policeChannel); + SampleManager.StopChannel(CHANNEL_POLICE_RADIO); SampleManager.SetEffectsFadeVolume(0); SampleManager.SetMusicFadeVolume(0); MusicManager.ResetMusicAfterReload(); @@ -429,7 +425,7 @@ cAudioManager::ServiceSoundEffects() { m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0; if (m_nUserPause && !m_nPreviousUserPause) { - for (int32 i = 0; i < allChannels; i++) + for (int32 i = 0; i < NUM_CHANNELS; i++) SampleManager.StopChannel(i); ClearRequestedQueue(); @@ -692,7 +688,12 @@ cAudioManager::UpdateReflections() void cAudioManager::AddReleasingSounds() { - bool8 toProcess[44]; // why not 27? because PS2? + // in case someone would want to increase it +#ifdef FIX_BUGS + bool8 toProcess[NUM_CHANNELS_GENERIC]; +#else + bool8 toProcess[44]; +#endif int8 queue = m_nActiveSampleQueue == 0 ? 1 : 0; diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 4a888788..a3ae4cfb 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -195,10 +195,10 @@ public: int32 m_nTimer; tSound m_sQueueSample; uint8 m_nActiveSampleQueue; - tSound m_asSamples[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS]; - uint8 m_abSampleQueueIndexTable[NUM_SOUNDS_SAMPLES_BANKS][NUM_SOUNDS_SAMPLES_SLOTS]; + tSound m_asSamples[NUM_SOUNDS_SAMPLES_BANKS][NUM_CHANNELS_GENERIC]; + uint8 m_abSampleQueueIndexTable[NUM_SOUNDS_SAMPLES_BANKS][NUM_CHANNELS_GENERIC]; uint8 m_SampleRequestQueuesStatus[NUM_SOUNDS_SAMPLES_BANKS]; - tSound m_asActiveSamples[NUM_SOUNDS_SAMPLES_SLOTS]; + tSound m_asActiveSamples[NUM_CHANNELS_GENERIC]; tAudioEntity m_asAudioEntities[NUM_AUDIOENTITIES]; int32 m_anAudioEntityIndices[NUM_AUDIOENTITIES]; int32 m_nAudioEntitiesTotal; @@ -498,7 +498,7 @@ public: #endif }; -#ifdef AUDIO_MSS +#if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS) static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); #endif diff --git a/src/audio/audio_enums.h b/src/audio/audio_enums.h index 027042cb..69d37a64 100644 --- a/src/audio/audio_enums.h +++ b/src/audio/audio_enums.h @@ -254,3 +254,25 @@ enum eAudioType AUDIOTYPE_POLICERADIO, TOTAL_AUDIO_TYPES, }; + +#ifdef GTA_PS2 +enum +{ + NUM_CHANNELS_GENERIC = 43, + CHANNEL_POLICE_RADIO = NUM_CHANNELS_GENERIC, + CHANNEL_MISSION_AUDIO, + CHANNEL_PLAYER_VEHICLE_ENGINE, + NUM_CHANNELS +}; +#else +enum +{ +#ifdef PS2_AUDIO_CHANNELS + NUM_CHANNELS_GENERIC = 43, +#else + NUM_CHANNELS_GENERIC = 27, +#endif + CHANNEL_POLICE_RADIO, + NUM_CHANNELS +}; +#endif diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index 1bb4c4a8..04e7e529 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -10,9 +10,9 @@ extern bool IsFXSupported(); -ALuint alSources[MAXCHANNELS+MAX2DCHANNELS]; -ALuint alFilters[MAXCHANNELS+MAX2DCHANNELS]; -ALuint alBuffers[MAXCHANNELS+MAX2DCHANNELS]; +ALuint alSources[NUM_CHANNELS]; +ALuint alFilters[NUM_CHANNELS]; +ALuint alBuffers[NUM_CHANNELS]; bool bChannelsCreated = false; int32 CChannel::channelsThatNeedService = 0; @@ -22,10 +22,10 @@ uint8 tempStereoBuffer[PED_BLOCKSIZE * 2]; void CChannel::InitChannels() { - alGenSources(MAXCHANNELS+MAX2DCHANNELS, alSources); - alGenBuffers(MAXCHANNELS+MAX2DCHANNELS, alBuffers); + alGenSources(NUM_CHANNELS, alSources); + alGenBuffers(NUM_CHANNELS, alBuffers); if (IsFXSupported()) - alGenFilters(MAXCHANNELS + MAX2DCHANNELS, alFilters); + alGenFilters(NUM_CHANNELS, alFilters); bChannelsCreated = true; } @@ -34,13 +34,13 @@ CChannel::DestroyChannels() { if (bChannelsCreated) { - alDeleteSources(MAXCHANNELS + MAX2DCHANNELS, alSources); + alDeleteSources(NUM_CHANNELS, alSources); memset(alSources, 0, sizeof(alSources)); - alDeleteBuffers(MAXCHANNELS + MAX2DCHANNELS, alBuffers); + alDeleteBuffers(NUM_CHANNELS, alBuffers); memset(alBuffers, 0, sizeof(alBuffers)); if (IsFXSupported()) { - alDeleteFilters(MAXCHANNELS + MAX2DCHANNELS, alFilters); + alDeleteFilters(NUM_CHANNELS, alFilters); memset(alFilters, 0, sizeof(alFilters)); } bChannelsCreated = false; diff --git a/src/audio/sampman.h b/src/audio/sampman.h index 765c75d3..b5f72d5c 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -1,5 +1,6 @@ #pragma once #include "AudioSamples.h" +#include "audio_enums.h" #define MAX_VOLUME 127 #define MAX_FREQ DIGITALRATE @@ -99,10 +100,9 @@ enum #define MAXPROVIDERS 64 -#define MAXCHANNELS 28 -#define MAXCHANNELS_SURROUND 24 +#define MAXCHANNELS (NUM_CHANNELS_GENERIC+1) +#define MAXCHANNELS_SURROUND (MAXCHANNELS-4) #define MAX2DCHANNELS 1 -#define CHANNEL2D MAXCHANNELS #define MAX_STREAMS 2 @@ -110,7 +110,13 @@ enum #define DIGITALBITS 16 #define DIGITALCHANNELS 2 -#define MAX_DIGITAL_MIXER_CHANNELS 32 +#ifdef FIX_BUGS +#define MAX_DIGITAL_MIXER_CHANNELS (MAXCHANNELS+MAX_STREAMS*2+MAX2DCHANNELS) +#else +#define MAX_DIGITAL_MIXER_CHANNELS (MAXCHANNELS+MAX_STREAMS*2) +#endif + +static_assert( NUM_CHANNELS == MAXCHANNELS + MAX2DCHANNELS, "The number of channels doesn't match with an enum" ); class cSampleManager { diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 4237c6a3..ddfaaa5f 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -1657,7 +1657,7 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1686,7 +1686,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1786,7 +1786,7 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { nChannelVolume[nChannel] = vol; @@ -1814,7 +1814,7 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) { switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { #ifndef FIX_BUGS if ( opened_samples[nChannel - MAXCHANNELS] ) // BUG @@ -1835,7 +1835,7 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1861,7 +1861,7 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1887,7 +1887,7 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1913,7 +1913,7 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1944,7 +1944,7 @@ cSampleManager::StartChannel(uint32 nChannel) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; @@ -1970,7 +1970,7 @@ cSampleManager::StopChannel(uint32 nChannel) switch ( nChannel ) { - case CHANNEL2D: + case CHANNEL_POLICE_RADIO: { b2d = TRUE; break; diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 15add7cb..18d1ca37 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -94,8 +94,8 @@ int32 nPedSlotSfx [MAX_PEDSFX]; int32 nPedSlotSfxAddr[MAX_PEDSFX]; uint8 nCurrentPedSlot; -CChannel aChannel[MAXCHANNELS+MAX2DCHANNELS]; -uint8 nChannelVolume[MAXCHANNELS+MAX2DCHANNELS]; +CChannel aChannel[NUM_CHANNELS]; +uint8 nChannelVolume[NUM_CHANNELS]; uint32 nStreamLength[TOTAL_STREAMED_SOUNDS]; ALuint ALStreamSources[MAX_STREAMS][2]; @@ -212,9 +212,8 @@ add_providers() static void release_existing() { - for ( int32 i = 0; i < MAXCHANNELS; i++ ) + for ( int32 i = 0; i < NUM_CHANNELS; i++ ) aChannel[i].Term(); - aChannel[CHANNEL2D].Term(); if ( IsFXSupported() ) { @@ -283,7 +282,7 @@ set_new_provider(int index) _maxSamples = MAXCHANNELS; ALCint attr[] = {ALC_FREQUENCY,MAX_FREQ, - ALC_MONO_SOURCES, MAX_STREAMS * 2 + MAXCHANNELS, + ALC_MONO_SOURCES, MAX_DIGITAL_MIXER_CHANNELS, 0, }; @@ -370,7 +369,8 @@ set_new_provider(int index) for ( int32 i = 0; i < MAXCHANNELS; i++ ) aChannel[i].Init(i); - aChannel[CHANNEL2D].Init(CHANNEL2D, true); + for ( int32 i = 0; i < MAX2DCHANNELS; i++ ) + aChannel[MAXCHANNELS+i].Init(MAXCHANNELS+i, true); if ( IsFXSupported() ) { @@ -950,7 +950,7 @@ cSampleManager::Initialise(void) } { - for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ ) + for ( int32 i = 0; i < NUM_CHANNELS; i++ ) nChannelVolume[i] = 0; } @@ -1153,7 +1153,7 @@ cSampleManager::UpdateEffectsVolume(void) { if ( _bSampmanInitialised ) { - for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ ) + for ( int32 i = 0; i < NUM_CHANNELS; i++ ) { if ( GetChannelUsedFlag(i) ) { @@ -1461,7 +1461,7 @@ bool8 cSampleManager::UpdateReverb(void) void cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); if ( usingEAX || _usingEFX ) { @@ -1480,7 +1480,7 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) bool8 cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); uintptr addr; @@ -1521,8 +1521,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) void cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) { - ASSERT( nChannel != CHANNEL2D ); - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < MAXCHANNELS ); uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; @@ -1544,8 +1543,7 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) void cSampleManager::SetChannel3DPosition(uint32 nChannel, float fX, float fY, float fZ) { - ASSERT( nChannel != CHANNEL2D ); - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < MAXCHANNELS ); aChannel[nChannel].SetPosition(-fX, fY, fZ); } @@ -1553,18 +1551,17 @@ cSampleManager::SetChannel3DPosition(uint32 nChannel, float fX, float fY, float void cSampleManager::SetChannel3DDistances(uint32 nChannel, float fMax, float fMin) { - ASSERT( nChannel != CHANNEL2D ); - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < MAXCHANNELS ); aChannel[nChannel].SetDistances(fMax, fMin); } void cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) { - ASSERT( nChannel == CHANNEL2D ); - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel >= MAXCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); - if ( nChannel == CHANNEL2D ) + if ( nChannel == CHANNEL_POLICE_RADIO ) { uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; @@ -1586,10 +1583,10 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) void cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) { - ASSERT(nChannel == CHANNEL2D); - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel >= MAXCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); - if ( nChannel == CHANNEL2D ) + if ( nChannel == CHANNEL_POLICE_RADIO ) { aChannel[nChannel].SetPan(nPan); } @@ -1598,7 +1595,7 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) void cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); aChannel[nChannel].SetCurrentFreq(nFreq); } @@ -1606,7 +1603,7 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) void cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); aChannel[nChannel].SetLoopPoints(nLoopStart / (DIGITALBITS / 8), nLoopEnd / (DIGITALBITS / 8)); } @@ -1614,7 +1611,7 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n void cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); aChannel[nChannel].SetLoopCount(nLoopCount); } @@ -1622,7 +1619,7 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) bool8 cSampleManager::GetChannelUsedFlag(uint32 nChannel) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); return aChannel[nChannel].IsUsed(); } @@ -1630,7 +1627,7 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) void cSampleManager::StartChannel(uint32 nChannel) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); aChannel[nChannel].Start(); } @@ -1638,7 +1635,7 @@ cSampleManager::StartChannel(uint32 nChannel) void cSampleManager::StopChannel(uint32 nChannel) { - ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); + ASSERT( nChannel < NUM_CHANNELS ); aChannel[nChannel].Stop(); } @@ -1961,7 +1958,7 @@ cSampleManager::Service(void) stream->Update(); } int refCount = CChannel::channelsThatNeedService; - for ( int32 i = 0; refCount && i < MAXCHANNELS+MAX2DCHANNELS; i++ ) + for ( int32 i = 0; refCount && i < NUM_CHANNELS; i++ ) { if ( aChannel[i].Update() ) refCount--; diff --git a/src/core/config.h b/src/core/config.h index ebb26b39..6355c1a5 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -128,7 +128,6 @@ enum Config { NUM_PED_COMMENTS_SLOTS = 20, NUM_SOUNDS_SAMPLES_BANKS = 2, - NUM_SOUNDS_SAMPLES_SLOTS = 27, NUM_AUDIOENTITIES = 200, NUM_AUDIO_REFLECTIONS = 5, @@ -395,6 +394,7 @@ enum Config { // Audio #define RADIO_SCROLL_TO_PREV_STATION #define AUDIO_CACHE +#define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 44 (PC has 28 originally) //#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) //#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder #define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files From 5a55d3a949038662a6a0ff8860dbe41e243b45bf Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 23 May 2021 16:24:05 +0300 Subject: [PATCH 138/314] Patch PolRadio --- src/audio/PolRadio.cpp | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 3664796b..36eb8824 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -15,9 +15,6 @@ #include "sampman.h" #include "Wanted.h" -const int channels = ARRAY_SIZE(AudioManager.m_asActiveSamples); -const int policeChannel = channels + 1; - struct tPoliceRadioZone { char m_aName[8]; uint32 m_nSampleIndex; @@ -94,7 +91,7 @@ cAudioManager::InitialisePoliceRadio() for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; - SampleManager.SetChannelReverbFlag(policeChannel, FALSE); + SampleManager.SetChannelReverbFlag(CHANNEL_POLICE_RADIO, FALSE); gSpecialSuspectLastSeenReport = FALSE; for (int32 i = 0; i < ARRAY_SIZE(gMinTimeToNextReport); i++) gMinTimeToNextReport[i] = m_FrameCounter; @@ -104,7 +101,7 @@ void cAudioManager::ResetPoliceRadio() { if (!m_bIsInitialised) return; - if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); + if (SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) SampleManager.StopChannel(CHANNEL_POLICE_RADIO); InitialisePoliceRadio(); } @@ -191,7 +188,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) if (!m_bIsInitialised) return; if (m_nUserPause != 0) { - if (SampleManager.GetChannelUsedFlag(policeChannel)) SampleManager.StopChannel(policeChannel); + if (SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) SampleManager.StopChannel(CHANNEL_POLICE_RADIO); if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == 1 && SampleManager.IsStreamPlaying(1)) { SampleManager.PauseStream(TRUE, 1); @@ -223,7 +220,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } return; } - } else if (!SampleManager.GetChannelUsedFlag(policeChannel)) { + } else if (!SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) { SampleManager.PreloadStreamedFile(g_nMissionAudioSfx, 1); SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 1); SampleManager.StartPreloadedStreamedFile(1); @@ -234,7 +231,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } if (bChannelOpen) DoPoliceRadioCrackle(); if ((g_nMissionAudioSfx == TOTAL_AUDIO_SAMPLES || g_nMissionAudioPlayingStatus != 1) && - !SampleManager.GetChannelUsedFlag(policeChannel) && m_sPoliceRadioQueue.policeChannelTimer) { + !SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO) && m_sPoliceRadioQueue.policeChannelTimer) { if (m_sPoliceRadioQueue.policeChannelTimer) { sample = m_sPoliceRadioQueue.crimesSamples[m_sPoliceRadioQueue.policeChannelCounterSeconds]; m_sPoliceRadioQueue.policeChannelTimer--; @@ -253,7 +250,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) if (sample == TOTAL_AUDIO_SAMPLES) { if (!processed) cWait = 30; } else { - SampleManager.InitialiseChannel(policeChannel, sample, 0); + SampleManager.InitialiseChannel(CHANNEL_POLICE_RADIO, sample, 0); switch (sample) { case SFX_POLICE_RADIO_MESSAGE_NOISE_1: case SFX_POLICE_RADIO_MESSAGE_NOISE_2: @@ -264,12 +261,12 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) default: freq = SampleManager.GetSampleBaseFrequency(sample); break; } PoliceChannelFreq = freq; - SampleManager.SetChannelFrequency(policeChannel, freq); - SampleManager.SetChannelVolume(policeChannel, 100); - SampleManager.SetChannelPan(policeChannel, 63); - SampleManager.SetChannelLoopCount(policeChannel, 1); - SampleManager.SetChannelLoopPoints(policeChannel, 0, -1); - SampleManager.StartChannel(policeChannel); + SampleManager.SetChannelFrequency(CHANNEL_POLICE_RADIO, freq); + SampleManager.SetChannelVolume(CHANNEL_POLICE_RADIO, 100); + SampleManager.SetChannelPan(CHANNEL_POLICE_RADIO, 63); + SampleManager.SetChannelLoopCount(CHANNEL_POLICE_RADIO, 1); + SampleManager.SetChannelLoopPoints(CHANNEL_POLICE_RADIO, 0, -1); + SampleManager.StartChannel(CHANNEL_POLICE_RADIO); } if (processed) ResetPoliceRadio(); } From 1e084dfab7136f991975be28f7e5e50c483e7452 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 23 May 2021 16:48:20 +0300 Subject: [PATCH 139/314] Set number of stereo sources --- src/audio/sampman_oal.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 18d1ca37..fae010ed 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -282,7 +282,8 @@ set_new_provider(int index) _maxSamples = MAXCHANNELS; ALCint attr[] = {ALC_FREQUENCY,MAX_FREQ, - ALC_MONO_SOURCES, MAX_DIGITAL_MIXER_CHANNELS, + ALC_MONO_SOURCES, MAX_DIGITAL_MIXER_CHANNELS - MAX2DCHANNELS, + ALC_STEREO_SOURCES, MAX2DCHANNELS, 0, }; From ce0a097392c5c6349ec9b5f83120dbc6a5c02230 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 23 May 2021 17:14:12 +0300 Subject: [PATCH 140/314] Undef PS2_AUDIO_CHANNELS for SQUEEZE_PERFORMANCE and VANILLA_DEFINES --- src/core/config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/config.h b/src/core/config.h index 6355c1a5..1677b1a4 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -422,6 +422,7 @@ enum Config { #ifdef SQUEEZE_PERFORMANCE #undef PS2_ALPHA_TEST #undef NO_ISLAND_LOADING + #undef PS2_AUDIO_CHANNELS #define PC_PARTICLE #define VC_PED_PORTS // To not process collisions always. But should be tested if that's really beneficial #define VC_RAIN_NERF // Reduces number of rain particles @@ -514,4 +515,5 @@ enum Config { #undef FREE_CAM #undef RADIO_SCROLL_TO_PREV_STATION #undef BIG_IMG +#undef PS2_AUDIO_CHANNELS #endif From 50058371efaf4c5713b7a608db0c7990ec3d78a6 Mon Sep 17 00:00:00 2001 From: aap Date: Sun, 23 May 2021 17:45:07 +0200 Subject: [PATCH 141/314] CEntity and C(Vu)Vector fixes and cleanup --- src/core/Camera.cpp | 14 ++++++++------ src/core/Camera.h | 6 +----- src/core/References.cpp | 2 -- src/core/common.h | 6 ++++++ src/entities/Entity.cpp | 32 ++++++++++++++++++++------------ src/entities/Entity.h | 4 ++-- src/entities/Physical.cpp | 8 ++++---- src/math/VuVector.h | 2 ++ src/modelinfo/ModelInfo.h | 3 +++ src/peds/Population.cpp | 15 +++++++++------ src/rw/VisibilityPlugins.h | 1 - 11 files changed, 55 insertions(+), 38 deletions(-) diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index fd2d5eed..5c86ca99 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -3675,16 +3675,18 @@ CCamera::IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat bool CCamera::IsSphereVisible(const CVector ¢er, float radius) { - CMatrix mat = m_cameraMatrix; +#if GTA_VERSION < GTA3_PC_10 // not sure this condition is the right one + // Maybe this was a copy of the other function with m_cameraMatrix + return IsSphereVisible(center, radius, &m_cameraMatrix); +#else + // ...and on PC they decided to call the other one with a default matrix. + CMatrix mat(m_cameraMatrix); // this matrix construction is stupid and gone in VC return IsSphereVisible(center, radius, &mat); +#endif } bool -#ifdef GTA_PS2 -CCamera::IsBoxVisible(CVuVector *box, const CMatrix *mat) -#else -CCamera::IsBoxVisible(CVector *box, const CMatrix *mat) -#endif +CCamera::IsBoxVisible(CVUVECTOR *box, const CMatrix *mat) { int i; int frustumTests[6] = { 0 }; diff --git a/src/core/Camera.h b/src/core/Camera.h index d7293e20..5e9d33b3 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -641,11 +641,7 @@ public: bool IsPointVisible(const CVector ¢er, const CMatrix *mat); bool IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat); bool IsSphereVisible(const CVector ¢er, float radius); -#ifdef GTA_PS2 - bool IsBoxVisible(CVuVector *box, const CMatrix *mat); -#else - bool IsBoxVisible(CVector *box, const CMatrix *mat); -#endif + bool IsBoxVisible(CVUVECTOR *box, const CMatrix *mat); }; VALIDATE_SIZE(CCamera, 0xE9D8); diff --git a/src/core/References.cpp b/src/core/References.cpp index 6b0c868c..b7782099 100644 --- a/src/core/References.cpp +++ b/src/core/References.cpp @@ -39,9 +39,7 @@ CEntity::RegisterReference(CEntity **pent) ref->pentity = pent; ref->next = m_pFirstReference; m_pFirstReference = ref; - return; } - return; } // Clear all references to this entity diff --git a/src/core/common.h b/src/core/common.h index a8f19158..e5077611 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -216,6 +216,12 @@ inline uint32 ldb(uint32 p, uint32 s, uint32 w) #include "maths.h" #include "Vector.h" +#ifdef GTA_PS2 +#include "VuVector.h" +#define CVUVECTOR CVuVector +#else +#define CVUVECTOR CVector +#endif #include "Vector2D.h" #include "Matrix.h" #include "Rect.h" diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 208e6deb..9d5bf73c 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -191,7 +191,7 @@ CEntity::GetBoundRect(void) { CRect rect; CVector v; - CColModel *col = CModelInfo::GetModelInfo(m_modelIndex)->GetColModel(); + CColModel *col = CModelInfo::GetColModel(m_modelIndex); rect.ContainPoint(GetMatrix() * col->boundingBox.min); rect.ContainPoint(GetMatrix() * col->boundingBox.max); @@ -210,21 +210,27 @@ CEntity::GetBoundRect(void) CVector CEntity::GetBoundCentre(void) { - CVector v; - GetBoundCentre(v); - return v; + return GetMatrix() * CModelInfo::GetColModel(m_modelIndex)->boundingSphere.center; } +#ifdef GTA_PS2 +void +CEntity::GetBoundCentre(CVuVector &out) +{ + TransformPoint(out, GetMatrix(), CModelInfo::GetColModel(m_modelIndex)->boundingSphere.center); +} +#else void CEntity::GetBoundCentre(CVector &out) { - out = GetMatrix() * CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.center; + out = GetMatrix() * CModelInfo::GetColModel(m_modelIndex)->boundingSphere.center; } +#endif float CEntity::GetBoundRadius(void) { - return CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingSphere.radius; + return CModelInfo::GetColModel(m_modelIndex)->boundingSphere.radius; } void @@ -379,10 +385,13 @@ CEntity::Render(void) } } + bool -CEntity::GetIsTouching(CVector const ¢er, float radius) +CEntity::GetIsTouching(CVUVECTOR const ¢er, float radius) { - return sq(GetBoundRadius()+radius) > (GetBoundCentre()-center).MagnitudeSqr(); + CVUVECTOR boundCenter; + GetBoundCentre(boundCenter); + return sq(GetBoundRadius()+radius) > (boundCenter-center).MagnitudeSqr(); } bool @@ -400,8 +409,7 @@ CEntity::IsVisibleComplex(void) bool CEntity::GetIsOnScreen(void) { - return TheCamera.IsSphereVisible(GetBoundCentre(), GetBoundRadius(), - &TheCamera.GetCameraMatrix()); + return TheCamera.IsSphereVisible(GetBoundCentre(), GetBoundRadius()); } bool @@ -417,7 +425,7 @@ CEntity::GetIsOnScreenComplex(void) return true; CRect rect = GetBoundRect(); - CColModel *colmodel = CModelInfo::GetModelInfo(m_modelIndex)->GetColModel(); + CColModel *colmodel = CModelInfo::GetColModel(m_modelIndex); float z = GetPosition().z; float minz = z + colmodel->boundingBox.min.z; float maxz = z + colmodel->boundingBox.max.z; @@ -572,7 +580,7 @@ CEntity::Remove(void) float CEntity::GetDistanceFromCentreOfMassToBaseOfModel(void) { - return -CModelInfo::GetModelInfo(m_modelIndex)->GetColModel()->boundingBox.min.z; + return -CModelInfo::GetColModel(m_modelIndex)->boundingBox.min.z; } void diff --git a/src/entities/Entity.h b/src/entities/Entity.h index 7ee638d7..6174b61d 100644 --- a/src/entities/Entity.h +++ b/src/entities/Entity.h @@ -141,11 +141,11 @@ public: return (RpClump*)m_rwObject; } - void GetBoundCentre(CVector &out); + void GetBoundCentre(CVUVECTOR &out); CVector GetBoundCentre(void); float GetBoundRadius(void); float GetDistanceFromCentreOfMassToBaseOfModel(void); - bool GetIsTouching(CVector const ¢er, float r); + bool GetIsTouching(CVUVECTOR const ¢er, float r); bool GetIsOnScreen(void); bool GetIsOnScreenComplex(void); bool IsVisible(void); diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp index a7e8beec..182ff46b 100644 --- a/src/entities/Physical.cpp +++ b/src/entities/Physical.cpp @@ -216,7 +216,7 @@ CPhysical::RemoveAndAdd(void) CRect CPhysical::GetBoundRect(void) { - CVector center; + CVUVECTOR center; float radius; GetBoundCentre(center); radius = GetBoundRadius(); @@ -1086,7 +1086,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists) CPhysical *A, *B; CObject *Bobj; bool canshift; - CVector center; + CVUVECTOR center; float radius; int numCollisions; @@ -1244,7 +1244,7 @@ CPhysical::ProcessCollisionSectorList_SimpleCar(CPtrList *lists) { static CColPoint aColPoints[MAX_COLLISION_POINTS]; float radius; - CVector center; + CVUVECTOR center; int listtype; CPhysical *A, *B; int numCollisions; @@ -1406,7 +1406,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists) { static CColPoint aColPoints[MAX_COLLISION_POINTS]; float radius; - CVector center; + CVUVECTOR center; CPtrList *list; CPhysical *A, *B; CObject *Aobj, *Bobj; diff --git a/src/math/VuVector.h b/src/math/VuVector.h index 30d62cfc..41584095 100644 --- a/src/math/VuVector.h +++ b/src/math/VuVector.h @@ -22,6 +22,8 @@ public: x = 1.0f; } */ + + // TODO: operator- }; void TransformPoint(CVuVector &out, const CMatrix &mat, const CVuVector &in); diff --git a/src/modelinfo/ModelInfo.h b/src/modelinfo/ModelInfo.h index 4fe1ebb0..4d24e78f 100644 --- a/src/modelinfo/ModelInfo.h +++ b/src/modelinfo/ModelInfo.h @@ -43,6 +43,9 @@ public: static CBaseModelInfo *GetModelInfo(int id){ return ms_modelInfoPtrs[id]; } + static CColModel *GetColModel(int id){ + return ms_modelInfoPtrs[id]->GetColModel(); + } static bool IsBoatModel(int32 id); static bool IsBikeModel(int32 id); diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 5bbb7c4b..906ee6e9 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -1011,27 +1011,30 @@ CPopulation::TestSafeForRealObject(CDummyObject *dummy) { CPtrNode *ptrNode; CColModel *dummyCol = dummy->GetColModel(); - float colRadius = dummy->GetBoundRadius(); - CVector colCentre = dummy->GetBoundCentre(); - int minX = CWorld::GetSectorIndexX(dummy->GetPosition().x - colRadius); + float radius = dummyCol->boundingSphere.radius; + int minX = CWorld::GetSectorIndexX(dummy->GetPosition().x - radius); if (minX < 0) minX = 0; - int minY = CWorld::GetSectorIndexY(dummy->GetPosition().y - colRadius); + int minY = CWorld::GetSectorIndexY(dummy->GetPosition().y - radius); if (minY < 0) minY = 0; - int maxX = CWorld::GetSectorIndexX(dummy->GetPosition().x + colRadius); + int maxX = CWorld::GetSectorIndexX(dummy->GetPosition().x + radius); #ifdef FIX_BUGS if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X - 1; #else if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X; #endif - int maxY = CWorld::GetSectorIndexY(dummy->GetPosition().y + colRadius); + int maxY = CWorld::GetSectorIndexY(dummy->GetPosition().y + radius); #ifdef FIX_BUGS if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y - 1; #else if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y; #endif + float colRadius = dummy->GetBoundRadius(); + CVUVECTOR colCentre; + dummy->GetBoundCentre(colCentre); + static CColPoint aTempColPoints[MAX_COLLISION_POINTS]; for (int curY = minY; curY <= maxY; curY++) { diff --git a/src/rw/VisibilityPlugins.h b/src/rw/VisibilityPlugins.h index f092de5a..5fb87765 100644 --- a/src/rw/VisibilityPlugins.h +++ b/src/rw/VisibilityPlugins.h @@ -117,7 +117,6 @@ public: int32 offset, int32 len); static int32 ms_framePluginOffset; - // Not actually used struct ClumpExt { ClumpVisibilityCB visibilityCB; From 2ad3a75be5ba34d1376ad7c3fa7fc94adeaa32ac Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 27 May 2021 16:50:15 +0300 Subject: [PATCH 142/314] Fix IsSphereVisible calls --- src/core/Camera.cpp | 4 ++-- src/core/Camera.h | 2 +- src/peds/PedAI.cpp | 4 ++-- src/peds/Population.cpp | 3 +-- src/render/WaterLevel.cpp | 15 +++++---------- 5 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 5c86ca99..5881dacd 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -3650,7 +3650,7 @@ CCamera::IsPointVisible(const CVector ¢er, const CMatrix *mat) } bool -CCamera::IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat) +CCamera::IsSphereVisible(const CVector ¢er, float radius, Const CMatrix *mat) { #ifdef GTA_PS2 CVuVector c; @@ -3680,7 +3680,7 @@ CCamera::IsSphereVisible(const CVector ¢er, float radius) return IsSphereVisible(center, radius, &m_cameraMatrix); #else // ...and on PC they decided to call the other one with a default matrix. - CMatrix mat(m_cameraMatrix); // this matrix construction is stupid and gone in VC + CMatrix mat(GetCameraMatrix()); // this matrix construction is stupid and gone in VC return IsSphereVisible(center, radius, &mat); #endif } diff --git a/src/core/Camera.h b/src/core/Camera.h index 5e9d33b3..07a05cb4 100644 --- a/src/core/Camera.h +++ b/src/core/Camera.h @@ -639,7 +639,7 @@ public: CVector &GetGameCamPosition(void) { return m_vecGameCamPos; } void CalculateDerivedValues(void); bool IsPointVisible(const CVector ¢er, const CMatrix *mat); - bool IsSphereVisible(const CVector ¢er, float radius, const CMatrix *mat); + bool IsSphereVisible(const CVector ¢er, float radius, Const CMatrix *mat); bool IsSphereVisible(const CVector ¢er, float radius); bool IsBoxVisible(CVUVECTOR *box, const CMatrix *mat); }; diff --git a/src/peds/PedAI.cpp b/src/peds/PedAI.cpp index 7f7120af..f1c753ec 100644 --- a/src/peds/PedAI.cpp +++ b/src/peds/PedAI.cpp @@ -5362,7 +5362,7 @@ CPed::WarpPedToNearLeaderOffScreen(void) continue; appropriatePos.z = zCorrectedPos.z; - if (!TheCamera.IsSphereVisible(appropriatePos, 0.6f, &TheCamera.GetCameraMatrix()) + if (!TheCamera.IsSphereVisible(appropriatePos, 0.6f) && CWorld::GetIsLineOfSightClear(appropriatePos, warpToPos, true, true, false, true, false, false, false) && !CWorld::TestSphereAgainstWorld(appropriatePos, 0.6f, this, true, true, false, true, false, false)) { teleported = true; @@ -5396,7 +5396,7 @@ CPed::WarpPedToNearEntityOffScreen(CEntity *warpTo) continue; appropriatePos.z = zCorrectedPos.z; - if (!TheCamera.IsSphereVisible(appropriatePos, 0.6f, &TheCamera.GetCameraMatrix()) + if (!TheCamera.IsSphereVisible(appropriatePos, 0.6f) && CWorld::GetIsLineOfSightClear(appropriatePos, warpToPos, true, true, false, true, false, false, false) && !CWorld::TestSphereAgainstWorld(appropriatePos, 0.6f, this, true, true, false, true, false, false)) { teleported = true; diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 906ee6e9..edb5958d 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -706,8 +706,7 @@ CPopulation::AddToPopulation(float minDist, float maxDist, float minDistOffScree generatedCoors.z = Max(generatedCoors.z, groundZ); } bool farEnoughToAdd = true; - CMatrix mat(TheCamera.GetCameraMatrix()); - if (TheCamera.IsSphereVisible(generatedCoors, 2.0f, &mat)) { + if (TheCamera.IsSphereVisible(generatedCoors, 2.0f)) { if (PedCreationDistMultiplier() * MIN_CREATION_DIST > (generatedCoors - playerCentreOfWorld).Magnitude2D()) farEnoughToAdd = false; } diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index e1014e86..e41af17a 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -740,8 +740,7 @@ CWaterLevel::RenderWater() if ( fHugeSectorMaxRenderDistSqr > fHugeSectorDistToCamSqr ) { - if ( TheCamera.IsSphereVisible(CVector(vecHugeSectorCentre.x, vecHugeSectorCentre.y, 0.0f), SectorRadius(HUGE_SECTOR_SIZE), - &TheCamera.GetCameraMatrix()) ) + if ( TheCamera.IsSphereVisible(CVector(vecHugeSectorCentre.x, vecHugeSectorCentre.y, 0.0f), SectorRadius(HUGE_SECTOR_SIZE)) ) { if ( fHugeSectorDistToCamSqr >= SQR(500.0f) /*fHugeSectorNearDist*/ ) { @@ -782,8 +781,7 @@ CWaterLevel::RenderWater() if ( fLargeSectorDistToCamSqr < fHugeSectorMaxRenderDistSqr ) { - if ( TheCamera.IsSphereVisible(CVector(vecLargeSectorCentre.x, vecLargeSectorCentre.y, 0.0f), SectorRadius(LARGE_SECTOR_SIZE), //90.879997f, - &TheCamera.GetCameraMatrix()) ) + if ( TheCamera.IsSphereVisible(CVector(vecLargeSectorCentre.x, vecLargeSectorCentre.y, 0.0f), SectorRadius(LARGE_SECTOR_SIZE)) ) //90.879997f, { // Render four small(32x32) sectors, or one large(64x64). @@ -945,8 +943,7 @@ CWaterLevel::RenderWater() if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr ) { - if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), - &TheCamera.GetCameraMatrix()) ) + if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) ) { RenderOneFlatExtraHugeWaterPoly( vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2, @@ -979,8 +976,7 @@ CWaterLevel::RenderWater() if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr ) { - if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), - &TheCamera.GetCameraMatrix()) ) + if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) ) { RenderOneFlatExtraHugeWaterPoly( vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2, @@ -1003,8 +999,7 @@ CWaterLevel::RenderWater() if ( fCamDistToSector < fHugeSectorMaxRenderDistSqr ) { - if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE), - &TheCamera.GetCameraMatrix()) ) + if ( TheCamera.IsSphereVisible(CVector(vecExtraHugeSectorCentre.x, vecExtraHugeSectorCentre.y, 0.0f), SectorRadius(EXTRAHUGE_SECTOR_SIZE)) ) { RenderOneFlatExtraHugeWaterPoly( vecExtraHugeSectorCentre.x - EXTRAHUGE_SECTOR_SIZE/2, From a11bf19b9341a77ce57ba8bd00eb0bf5d2dcc7a8 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 27 May 2021 16:53:50 +0300 Subject: [PATCH 143/314] Fix sin & cos calls --- src/control/CarCtrl.cpp | 4 ++-- src/control/Script2.cpp | 4 ++-- src/control/Script5.cpp | 8 ++++---- src/core/Cam.cpp | 18 +++++++++--------- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index 2e9752a7..0516e214 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -1330,8 +1330,8 @@ void CCarCtrl::WeaveForOtherCar(CEntity* pOtherEntity, CVehicle* pVehicle, float forward.NormaliseSafe(); float forwardAngle = CGeneral::GetATanOfXY(forward.x, forward.y); float angleDiff = angleBetweenVehicles - forwardAngle; - float lenProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.y * sin(angleDiff)); - float widthProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.x * cos(angleDiff)); + float lenProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.y * Sin(angleDiff)); + float widthProjection = ABS(pOtherCar->GetColModel()->boundingBox.max.x * Cos(angleDiff)); float lengthToEvade = (2 * (lenProjection + widthProjection) + WIDTH_COEF_TO_WEAVE_SAFELY * 2 * pVehicle->GetColModel()->boundingBox.max.x) / distance; float diffToLeftAngle = LimitRadianAngle(angleBetweenVehicles - *pAngleToWeaveLeft); diffToLeftAngle = ABS(diffToLeftAngle); diff --git a/src/control/Script2.cpp b/src/control/Script2.cpp index 5c953011..d3ab2af7 100644 --- a/src/control/Script2.cpp +++ b/src/control/Script2.cpp @@ -437,8 +437,8 @@ int8 CRunningScript::ProcessCommands300To399(int32 command) float length = *(float*)&ScriptParams[5]; float x, y; if (angle != 0.0f){ - y = cos(angle) * length; - x = sin(angle) * length; + y = Cos(angle) * length; + x = Sin(angle) * length; }else{ y = length; x = 0.0f; diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index 464a77d8..c83c3edc 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -948,10 +948,10 @@ void CRunningScript::PlayerInAngledAreaCheckCommand(int32 command, uint32* pIp) initAngle -= TWOPI; // it looks like the idea is to use a rectangle using the diagonal of the rectangle as // the side of new rectangle, with "length" being the length of second side - float rotatedSupX = supX + side2length * sin(initAngle); - float rotatedSupY = supY - side2length * cos(initAngle); - float rotatedInfX = infX + side2length * sin(initAngle); - float rotatedInfY = infY - side2length * cos(initAngle); + float rotatedSupX = supX + side2length * Sin(initAngle); + float rotatedSupY = supY - side2length * Cos(initAngle); + float rotatedInfX = infX + side2length * Sin(initAngle); + float rotatedInfY = infY - side2length * Cos(initAngle); float side1X = supX - infX; float side1Y = supY - infY; float side1Length = CVector2D(side1X, side1Y).Magnitude(); diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index e0497fe2..b6e4f967 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -4933,9 +4933,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, AlphaSpeed = 0.0; Distance = 1000.0; - Front.x = -(cos(Beta) * cos(Alpha)); - Front.y = -(sin(Beta) * cos(Alpha)); - Front.z = sin(Alpha); + Front.x = -(Cos(Beta) * Cos(Alpha)); + Front.y = -(Sin(Beta) * Cos(Alpha)); + Front.z = Sin(Alpha); m_aTargetHistoryPosOne = TargetCoors - nextDistance * Front; @@ -5210,9 +5210,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, lastBeta = Beta; - Front.x = -(cos(Beta) * cos(Alpha)); - Front.y = -(sin(Beta) * cos(Alpha)); - Front.z = sin(Alpha); + Front.x = -(Cos(Beta) * Cos(Alpha)); + Front.y = -(Sin(Beta) * Cos(Alpha)); + Front.z = Sin(Alpha); GetVectorsReadyForRW(); TheCamera.m_bCamDirectlyBehind = false; TheCamera.m_bCamDirectlyInFront = false; @@ -5222,9 +5222,9 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, m_cvecTargetCoorsForFudgeInter = TargetCoors; m_aTargetHistoryPosThree = m_aTargetHistoryPosOne; float nextAlpha = alphaWithSpeedAccounted + zoomModeAlphaOffset; - float nextFrontX = -(cos(Beta) * cos(nextAlpha)); - float nextFrontY = -(sin(Beta) * cos(nextAlpha)); - float nextFrontZ = sin(nextAlpha); + float nextFrontX = -(Cos(Beta) * Cos(nextAlpha)); + float nextFrontY = -(Sin(Beta) * Cos(nextAlpha)); + float nextFrontZ = Sin(nextAlpha); m_aTargetHistoryPosOne.x = TargetCoors.x - nextFrontX * nextDistance; m_aTargetHistoryPosOne.y = TargetCoors.y - nextFrontY * nextDistance; From 68b5270fe459ad86d9cb8a449c0d9b7efe57d2d9 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 28 May 2021 09:44:09 +0300 Subject: [PATCH 144/314] Fix some timer calls --- src/control/OnscreenTimer.cpp | 2 +- src/core/main.cpp | 2 +- src/peds/Ped.cpp | 2 +- src/peds/PlayerPed.cpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/control/OnscreenTimer.cpp b/src/control/OnscreenTimer.cpp index d128efeb..8cc1ae69 100644 --- a/src/control/OnscreenTimer.cpp +++ b/src/control/OnscreenTimer.cpp @@ -108,7 +108,7 @@ void COnscreenTimerEntry::Process() { int32* timerPtr = CTheScripts::GetPointerToScriptVariable(m_nTimerOffset); int32 oldTime = *timerPtr; - int32 newTime = oldTime - int32(CTimer::GetTimeStepInSeconds() * 1000); + int32 newTime = oldTime - int32(CTimer::GetTimeStepInMilliseconds()); if(newTime < 0) { *timerPtr = 0; m_bTimerProcessed = 0; diff --git a/src/core/main.cpp b/src/core/main.cpp index 58db2d34..492f481e 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1180,7 +1180,7 @@ DisplayGameDebugText() FramesPerSecondCounter += frameTime / 1000.f; // convert to seconds FramesPerSecond = FrameSamples / FramesPerSecondCounter; #else - FramesPerSecondCounter += 1000.0f / (CTimer::GetTimeStepNonClippedInSeconds() * 1000.0f); + FramesPerSecondCounter += 1000.0f / CTimer::GetTimeStepNonClippedInMilliseconds(); FramesPerSecond = FramesPerSecondCounter / FrameSamples; #endif diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index a564c9e5..5e1fb842 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2501,7 +2501,7 @@ CPed::ProcessControl(void) if (m_nPedState == PED_JUMP) { if (m_nWaitTimer <= 2000) { if (m_nWaitTimer < 1000) - m_nWaitTimer += CTimer::GetTimeStep() * 0.02f * 1000.0f; + m_nWaitTimer += CTimer::GetTimeStepInMilliseconds(); } else { m_nWaitTimer = 0; } diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 53187d0b..46578486 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -714,7 +714,7 @@ CPlayerPed::PlayerControl1stPersonRunAround(CPad *padUsed) if (m_nPedState == PED_JUMP) { if (bIsInTheAir) { if (bUsesCollision && !bHitSteepSlope && (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f) - && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { + && m_fDistanceTravelled < CTimer::GetTimeStepInSeconds() && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O float angleCos = Cos(m_fRotationCur); @@ -1205,7 +1205,7 @@ CPlayerPed::PlayerControlZelda(CPad *padUsed) if (m_nPedState == PED_JUMP) { if (bIsInTheAir) { if (bUsesCollision && !bHitSteepSlope && (!bHitSomethingLastFrame || m_vecDamageNormal.z > 0.6f) - && m_fDistanceTravelled < CTimer::GetTimeStep() * 0.02 && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { + && m_fDistanceTravelled < CTimer::GetTimeStepInSeconds() && m_vecMoveSpeed.MagnitudeSqr() < 0.01f) { float angleSin = Sin(m_fRotationCur); // originally sin(DEGTORAD(RADTODEG(m_fRotationCur))) o_O float angleCos = Cos(m_fRotationCur); From edc25a689fed2bb08d6b6af4b67e9f84c460c5dc Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 28 May 2021 15:12:28 +0300 Subject: [PATCH 145/314] Fix typo --- src/audio/sampman_oal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index fae010ed..0a1e7563 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -1416,7 +1416,7 @@ bool8 cSampleManager::UpdateReverb(void) float fRatio = CALCRATIO(normx, normy, normz, 0.3f, 0.5f, (normy+normx+normz)/3.0f); #undef CALCRATIO - #undef ZE + #undef ZR fRatio = clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); From 939d0c59a3994a564b2257b8d9e5ec107b1b7933 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 12 Jun 2021 19:19:31 +0300 Subject: [PATCH 146/314] Add macros to set sample loop offsets --- src/audio/AudioCollision.cpp | 8 +- src/audio/AudioLogic.cpp | 236 ++++++++++++----------------------- src/audio/AudioManager.cpp | 2 + src/audio/AudioManager.h | 19 +++ src/audio/PolRadio.cpp | 5 +- 5 files changed, 105 insertions(+), 165 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 0f96cec4..fd819641 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -170,10 +170,7 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = - SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = - SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -311,8 +308,7 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) m_sQueueSample.m_nReleasingVolumeModificator = 11; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 17d31330..a5de21d0 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -684,8 +684,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 4000 + 28000; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = (uint8)emittingVol; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = rainOnVehicleIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -737,8 +736,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) m_sQueueSample.m_nFrequency = (6000.f * modificator) + 7000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -788,8 +786,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) m_sQueueSample.m_nFrequency = (11025.f * velocityChange / params.m_pTransmission->fMaxVelocity + 11025.f); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -843,8 +840,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -895,8 +891,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) m_sQueueSample.m_nFrequency = freq + freq * multiplier; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1042,8 +1037,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) m_sQueueSample.m_nFrequency /= 2; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1103,8 +1097,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sampl m_sQueueSample.m_nLoopCount = 1; } m_sQueueSample.m_nEmittingVolume = emittingVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1147,8 +1140,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_nEmittingVolume = 80; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 200.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1168,8 +1160,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_nEmittingVolume = 80; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1485,8 +1476,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 8; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1576,8 +1566,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nHornFrequency; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 80; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 5.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1658,8 +1647,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 80; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 7.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1702,8 +1690,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) m_sQueueSample.m_nFrequency = (100 * m_sQueueSample.m_nEntityIndex & 1023) + SampleManager.GetSampleBaseFrequency(SFX_REVERSE_WARNING); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 60; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1748,8 +1735,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 1.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -1793,8 +1779,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = rand; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -1847,8 +1832,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -1881,8 +1865,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 60; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2318,8 +2301,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; } - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bIs2D = FALSE; @@ -2357,8 +2339,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2380,8 +2361,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2425,8 +2405,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 80; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2465,8 +2444,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2521,8 +2499,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2564,8 +2541,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = vol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2620,8 +2596,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) m_sQueueSample.m_nFrequency = 1200 * heli->m_nHeliId + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2795,8 +2770,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nFrequency = GetJumboTaxiFreq(); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2827,8 +2801,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2858,8 +2831,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2889,8 +2861,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2920,8 +2891,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -3001,8 +2971,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_HEADPHONES); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 7.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -3110,8 +3079,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3138,8 +3106,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3202,9 +3169,8 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[3] % 26 + 100; - m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3221,8 +3187,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 20 + 100; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; @@ -3247,8 +3212,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 50.0f; maxDist = SQR(50); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[1] % 10 + 90; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; @@ -3270,9 +3234,8 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[3] % 15 + 70; - m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3289,8 +3252,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 10 + 100; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; @@ -3312,9 +3274,8 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[1] % 15 + 70; - m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3331,9 +3292,8 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 15 + 70; - m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3350,8 +3310,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 10 + 110; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; @@ -3373,8 +3332,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 90.0f; maxDist = SQR(90); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[0] % 20 + 80; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; @@ -3395,8 +3353,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_nEmittingVolume = 90; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -3455,8 +3412,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_nEmittingVolume = 75; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3476,8 +3432,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 10 + 40; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; @@ -3498,8 +3453,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS emittingVol = 70; m_sQueueSample.m_nEmittingVolume = 70; m_sQueueSample.m_bIs2D = FALSE; @@ -3517,9 +3471,8 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[0] % 20 + 90; - m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -3535,9 +3488,8 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 40.0f; maxDist = SQR(40); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; + RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 30 + 70; - m_sQueueSample.m_nLoopEnd = -1; m_sQueueSample.m_nEmittingVolume = emittingVol; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -6090,8 +6042,10 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_bVolume; AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; AudioManager.m_sQueueSample.m_nLoopCount = 1; +#ifndef GTA_PS2 AudioManager.m_sQueueSample.m_nLoopStart = 0; AudioManager.m_sQueueSample.m_nLoopEnd = -1; +#endif // !GTA_PS2 AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f; switch (sampleIndex) { @@ -6211,8 +6165,7 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); @@ -6280,8 +6233,7 @@ cAudioManager::ProcessFires(int32) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -6324,8 +6276,7 @@ cAudioManager::ProcessWaterCannon(int32) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nEmittingVolume = 50; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -6575,8 +6526,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nEmittingVolume = emittingVolume; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; AddSampleToRequestedQueue(); } @@ -7183,8 +7133,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_nEmittingVolume = emittingVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } @@ -7256,8 +7205,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7278,8 +7226,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7317,8 +7264,7 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 30; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7356,8 +7302,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 30; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7375,8 +7320,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7412,8 +7356,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 45; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7430,8 +7373,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 110; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7469,8 +7411,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 30; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7490,8 +7431,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 70; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7533,8 +7473,7 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = 110; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7580,8 +7519,7 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = rand; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7629,8 +7567,7 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nEmittingVolume = rand; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7677,8 +7614,7 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nEmittingVolume = rand; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; AddSampleToRequestedQueue(); @@ -7729,8 +7665,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7775,8 +7710,7 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7795,8 +7729,7 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nReleasingVolumeDivider = 30; m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } @@ -7970,8 +7903,7 @@ cAudioManager::ProcessFrontEnd() m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS if (stereo) m_sQueueSample.m_nOffset = m_anRandomTable[0] & 31; else @@ -8013,8 +7945,7 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nFrequency = 6000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 100; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -8081,8 +8012,7 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = emittingVol; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -8162,8 +8092,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nEmittingVolume = 90; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReverbFlag = TRUE; @@ -8200,8 +8129,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_nCounter = iSound++; if (iSound < 32) iSound = 32; @@ -8238,8 +8166,7 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_nFrequency = 15591; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 40; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -8298,8 +8225,7 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = 100; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 450.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -8325,8 +8251,7 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_nFrequency = 5500; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(m_sQueueSample.m_nSampleIndex); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -8360,8 +8285,7 @@ cAudioManager::ProcessBridgeOneShots() m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; - m_sQueueSample.m_nLoopStart = 0; - m_sQueueSample.m_nLoopEnd = -1; + RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 1f758dd2..5312bfad 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -940,8 +940,10 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_bIsProcessed = FALSE; m_asActiveSamples[i].m_bLoopEnded = FALSE; m_asActiveSamples[i].m_nLoopCount = 1; +#ifndef GTA_PS2 m_asActiveSamples[i].m_nLoopStart = 0; m_asActiveSamples[i].m_nLoopEnd = -1; +#endif m_asActiveSamples[i].m_fSpeedMultiplier = 0.0f; m_asActiveSamples[i].m_fSoundIntensity = 200.0f; m_asActiveSamples[i].m_nOffset = 63; diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index a3ae4cfb..70302745 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -17,8 +17,10 @@ public: uint8 m_nVolume; float m_fDistance; int32 m_nLoopCount; +#ifndef GTA_PS2 int32 m_nLoopStart; int32 m_nLoopEnd; +#endif uint8 m_nEmittingVolume; float m_fSpeedMultiplier; float m_fSoundIntensity; @@ -498,6 +500,23 @@ public: #endif }; +/* + Manual loop points are not on PS2 so let's have these macros to avoid massive ifndefs. + Setting these manually was pointless anyway since they never change from sdt values. + What were they thinking? +*/ +#ifndef GTA_PS2 +#define RESET_LOOP_OFFSETS \ + m_sQueueSample.m_nLoopStart = 0; \ + m_sQueueSample.m_nLoopEnd = -1; +#define SET_LOOP_OFFSETS(sample) \ + m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(sample); \ + m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(sample); +#else +#define RESET_LOOP_OFFSETS +#define SET_LOOP_OFFSETS(sample) +#endif + #if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS) static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); #endif diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 36eb8824..4eae169d 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -134,8 +134,7 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_nVolume = m_anRandomTable[2] % 20 + 15; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; - m_sQueueSample.m_nLoopStart = SampleManager.GetSampleLoopStartOffset(SFX_POLICE_RADIO_CRACKLE); - m_sQueueSample.m_nLoopEnd = SampleManager.GetSampleLoopEndOffset(SFX_POLICE_RADIO_CRACKLE); + SET_LOOP_OFFSETS(SFX_POLICE_RADIO_CRACKLE) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_nOffset = 63; @@ -250,7 +249,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) if (sample == TOTAL_AUDIO_SAMPLES) { if (!processed) cWait = 30; } else { - SampleManager.InitialiseChannel(CHANNEL_POLICE_RADIO, sample, 0); + SampleManager.InitialiseChannel(CHANNEL_POLICE_RADIO, sample, SFX_BANK_0); switch (sample) { case SFX_POLICE_RADIO_MESSAGE_NOISE_1: case SFX_POLICE_RADIO_MESSAGE_NOISE_2: From 8fc99387f5a8cedd3cf7f28d54a733df0a031955 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 12 Jun 2021 20:10:08 +0300 Subject: [PATCH 147/314] Fix use of enum in ped comment banks switch --- src/audio/AudioLogic.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index a5de21d0..8472cda6 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -6079,12 +6079,12 @@ cPedComments::Process() } // Switch bank - if (m_nActiveBank) { - actualUsedBank = SFX_BANK_PED_COMMENTS; - m_nActiveBank = SFX_BANK_0; + if (m_nActiveBank == 0) { + actualUsedBank = 0; + m_nActiveBank = 1; } else { - actualUsedBank = SFX_BANK_0; - m_nActiveBank = SFX_BANK_PED_COMMENTS; + actualUsedBank = 1; + m_nActiveBank = 0; } comment = m_asPedComments[actualUsedBank]; for (uint32 i = 0; i < m_nCommentsInBank[actualUsedBank]; i++) { From f2390deaa99ab453122d6c56d4a62006c5efaf31 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 24 Jun 2021 02:46:23 +0300 Subject: [PATCH 148/314] Make sampman stream functions default to stream 0 --- src/audio/MusicManager.cpp | 126 ++++++++++++++++++------------------- src/audio/sampman.h | 18 +++--- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 88ef96fa..4eaa37d5 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -286,8 +286,8 @@ cMusicManager::Terminate() { if (!IsInitialised()) return; - if (SampleManager.IsStreamPlaying(0)) { - SampleManager.StopStreamedFile(0); + if (SampleManager.IsStreamPlaying()) { + SampleManager.StopStreamedFile(); m_nNextTrack = NO_TRACK; m_nPlayingTrack = NO_TRACK; } @@ -316,12 +316,12 @@ cMusicManager::ChangeMusicMode(uint8 mode) case MUSICMODE_GAME: case MUSICMODE_CUTSCENE: case MUSICMODE_DISABLED: - if (SampleManager.IsStreamPlaying(0)) { + if (SampleManager.IsStreamPlaying()) { if (m_nNextTrack < TOTAL_STREAMED_SOUNDS) { - m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); } m_nNextTrack = NO_TRACK; m_nPlayingTrack = NO_TRACK; @@ -422,7 +422,7 @@ cMusicManager::Service() if (!m_bIsInitialised || m_bDisabled) return; if (m_nMusicMode == MUSICMODE_CUTSCENE) { - SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 0); + SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE); return; } @@ -433,8 +433,8 @@ cMusicManager::Service() m_nLastTrackServiceTime = m_nTimer; } else m_bDoTrackService = FALSE; - if (m_nNextTrack == NO_TRACK && SampleManager.IsStreamPlaying(0)) - SampleManager.StopStreamedFile(0); + if (m_nNextTrack == NO_TRACK && SampleManager.IsStreamPlaying()) + SampleManager.StopStreamedFile(); else switch (m_nMusicMode) { case MUSICMODE_FRONTEND: ServiceFrontEndMode(); break; case MUSICMODE_GAME: ServiceGameMode(); break; @@ -446,7 +446,7 @@ cMusicManager::ServiceFrontEndMode() { if (m_nNextTrack < TOTAL_STREAMED_SOUNDS) { if (m_bFrontendTrackFinished) { - if (!SampleManager.IsStreamPlaying(0)) { + if (!SampleManager.IsStreamPlaying()) { switch (m_nNextTrack) { case STREAMED_SOUND_MISSION_COMPLETED: @@ -463,19 +463,19 @@ cMusicManager::ServiceFrontEndMode() m_nPlayingTrack = NO_TRACK; } } else if (bHasStarted) { - if (!SampleManager.IsStreamPlaying(0)) - SampleManager.StartStreamedFile(m_nNextTrack, 0, 0); + if (!SampleManager.IsStreamPlaying()) + SampleManager.StartStreamedFile(m_nNextTrack, 0); } else { - SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); - if (!SampleManager.StartStreamedFile(m_nNextTrack, m_nNextTrack < NUM_RADIOS ? GetTrackStartPos(m_nNextTrack) : 0, 0)) + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE); + if (!SampleManager.StartStreamedFile(m_nNextTrack, m_nNextTrack < NUM_RADIOS ? GetTrackStartPos(m_nNextTrack) : 0)) return; - SampleManager.SetStreamedVolumeAndPan(100, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(100, 63, FALSE); if (m_bPlayInFrontend) bHasStarted = TRUE; else m_bFrontendTrackFinished = TRUE; } } - if (SampleManager.IsStreamPlaying(0)) - SampleManager.SetStreamedVolumeAndPan((CPad::GetPad(0)->bDisplayNoControllerMessage || CPad::GetPad(0)->bObsoleteControllerMessage) ? 0 : 100, 63, FALSE, 0); + if (SampleManager.IsStreamPlaying()) + SampleManager.SetStreamedVolumeAndPan((CPad::GetPad(0)->bDisplayNoControllerMessage || CPad::GetPad(0)->bObsoleteControllerMessage) ? 0 : 100, 63, FALSE); } void @@ -601,7 +601,7 @@ cMusicManager::ServiceGameMode() if (TheCamera.pTargetEntity != nil) { float DistToTargetSq = (TheCamera.pTargetEntity->GetPosition() - TheCamera.GetPosition()).MagnitudeSqr(); if (DistToTargetSq >= SQR(55.0f)) { - SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE); } else if (DistToTargetSq >= SQR(10.0f)) { volume = ((45.0f - (Sqrt(DistToTargetSq) - 10.0f)) / 45.0f * 100.0f); uint8 pan; @@ -616,17 +616,17 @@ cMusicManager::ServiceGameMode() } if (gRetuneCounter) volume /= 4; - SampleManager.SetStreamedVolumeAndPan(volume, pan, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(volume, pan, FALSE); } else if (AudioManager.ShouldDuckMissionAudio()) { - SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE); } else if (gRetuneCounter) { - SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE); } else { - SampleManager.SetStreamedVolumeAndPan(100, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(100, 63, FALSE); } } } else if (AudioManager.ShouldDuckMissionAudio()) { - SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(25, 63, FALSE); nFramesSinceCutsceneEnded = 0; } else { if (nFramesSinceCutsceneEnded == -1) { @@ -643,7 +643,7 @@ cMusicManager::ServiceGameMode() } if (gRetuneCounter != 0) volume /= 4; - SampleManager.SetStreamedVolumeAndPan(volume, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(volume, 63, FALSE); } return; } @@ -663,8 +663,8 @@ cMusicManager::ServiceGameMode() m_nNextTrack = m_nRadioStationScript; if (FindPlayerVehicle()->m_nRadioStation == m_nNextTrack) { m_nPlayingTrack = NO_TRACK; - SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); - SampleManager.StopStreamedFile(0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE); + SampleManager.StopStreamedFile(); } if (m_nRadioPosition != -1) { m_aTracks[m_nNextTrack].m_nPosition = m_nRadioPosition; @@ -693,9 +693,9 @@ void cMusicManager::StopFrontEndTrack() { if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_FRONTEND && m_nNextTrack != NO_TRACK) { - m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); m_nPlayingTrack = NO_TRACK; m_nNextTrack = NO_TRACK; } @@ -718,16 +718,16 @@ cMusicManager::PlayFrontEndTrack(uint8 track, bool8 bPlayInFrontend) m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = FALSE; } - m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); } else if (m_nMusicMode == MUSICMODE_FRONTEND) { if (m_nNextTrack != NO_TRACK) { - m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); } m_nPlayingTrack = m_nNextTrack; @@ -748,10 +748,10 @@ cMusicManager::PreloadCutSceneMusic(uint8 track) { if (IsInitialised() && !m_bDisabled && track < TOTAL_STREAMED_SOUNDS && m_nMusicMode == MUSICMODE_CUTSCENE) { AudioManager.ResetPoliceRadio(); - while (SampleManager.IsStreamPlaying(0)) - SampleManager.StopStreamedFile(0); - SampleManager.PreloadStreamedFile(track, 0); - SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 0); + while (SampleManager.IsStreamPlaying()) + SampleManager.StopStreamedFile(); + SampleManager.PreloadStreamedFile(track); + SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE); m_nNextTrack = track; } } @@ -760,14 +760,14 @@ void cMusicManager::PlayPreloadedCutSceneMusic(void) { if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_CUTSCENE) - SampleManager.StartPreloadedStreamedFile(0); + SampleManager.StartPreloadedStreamedFile(); } void cMusicManager::StopCutSceneMusic(void) { if (IsInitialised() && !m_bDisabled && m_nMusicMode == MUSICMODE_CUTSCENE) { - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); m_nNextTrack = NO_TRACK; } } @@ -813,16 +813,16 @@ cMusicManager::ServiceAmbience() m_bAnnouncementInProgress = FALSE; } if (m_nNextTrack < RADIO_OFF) { - if (SampleManager.IsStreamPlaying(0)) { - m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + if (SampleManager.IsStreamPlaying()) { + m_aTracks[m_nNextTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); m_nNextTrack = NO_TRACK; return; } m_nNextTrack = RADIO_OFF; } - if (CWorld::Players[CWorld::PlayerInFocus].m_WBState != WBSTATE_PLAYING && !SampleManager.IsStreamPlaying(0)) { + if (CWorld::Players[CWorld::PlayerInFocus].m_WBState != WBSTATE_PLAYING && !SampleManager.IsStreamPlaying()) { m_nNextTrack = NO_TRACK; return; } @@ -832,22 +832,22 @@ cMusicManager::ServiceAmbience() if (m_nNextTrack == m_nPlayingTrack) { ComputeAmbienceVol(FALSE, volume); - SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE, 0); + SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE); if (m_bVerifyAmbienceTrackStartedToPlay) { - if (SampleManager.IsStreamPlaying(0)) + if (SampleManager.IsStreamPlaying()) m_bVerifyAmbienceTrackStartedToPlay = FALSE; } else ServiceTrack(); } else { if (m_nPlayingTrack < TOTAL_STREAMED_SOUNDS) { - m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); } uint32 pos = GetTrackStartPos(m_nNextTrack); - SampleManager.SetStreamedVolumeAndPan(0, 63, TRUE, 0); - if (SampleManager.StartStreamedFile(m_nNextTrack, pos, 0)) { + SampleManager.SetStreamedVolumeAndPan(0, 63, TRUE); + if (SampleManager.StartStreamedFile(m_nNextTrack, pos)) { ComputeAmbienceVol(TRUE, volume); - SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE, 0); + SampleManager.SetStreamedVolumeAndPan(volume, 63, TRUE); m_bVerifyAmbienceTrackStartedToPlay = TRUE; } else m_nNextTrack = NO_TRACK; @@ -878,8 +878,8 @@ void cMusicManager::ServiceTrack() { if (m_bDoTrackService) { - if (!SampleManager.IsStreamPlaying(0)) - SampleManager.StartStreamedFile(m_nNextTrack, 0, 0); + if (!SampleManager.IsStreamPlaying()) + SampleManager.StartStreamedFile(m_nNextTrack, 0); } } @@ -888,7 +888,7 @@ cMusicManager::ServiceAnnouncement() { static int8 cCheck = 0; if (m_bAnnouncementInProgress) { - if (!SampleManager.IsStreamPlaying(0)) { + if (!SampleManager.IsStreamPlaying()) { m_nAnnouncement = NO_TRACK; m_bAnnouncementInProgress = FALSE; } @@ -897,18 +897,18 @@ cMusicManager::ServiceAnnouncement() if (++cCheck >= 30) { cCheck = 0; - int pos = SampleManager.GetStreamedFilePosition(0); - if (SampleManager.IsStreamPlaying(0)) { + int pos = SampleManager.GetStreamedFilePosition(); + if (SampleManager.IsStreamPlaying()) { if (m_nNextTrack != NO_TRACK) { m_aTracks[m_nNextTrack].m_nPosition = pos; m_aTracks[m_nNextTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); - SampleManager.StopStreamedFile(0); + SampleManager.StopStreamedFile(); } } - SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); - if (SampleManager.StartStreamedFile(m_nAnnouncement, 0, 0)) { - SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE); + if (SampleManager.StartStreamedFile(m_nAnnouncement, 0)) { + SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, FALSE); m_bAnnouncementInProgress = TRUE; m_nPlayingTrack = m_nNextTrack; m_nNextTrack = m_nAnnouncement; @@ -992,16 +992,16 @@ cMusicManager::ChangeRadioChannel() { if (m_nNextTrack != m_nPlayingTrack) { if (m_nPlayingTrack < TOTAL_STREAMED_SOUNDS) { - m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(0); + m_aTracks[m_nPlayingTrack].m_nPosition = SampleManager.GetStreamedFilePosition(); m_aTracks[m_nPlayingTrack].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); - SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE, 0); - SampleManager.StopStreamedFile(0); + SampleManager.SetStreamedVolumeAndPan(0, 63, FALSE); + SampleManager.StopStreamedFile(); } - if (SampleManager.IsStreamPlaying(0)) + if (SampleManager.IsStreamPlaying()) return FALSE; - if (!SampleManager.StartStreamedFile(m_nNextTrack, GetTrackStartPos(m_nNextTrack), 0)) + if (!SampleManager.StartStreamedFile(m_nNextTrack, GetTrackStartPos(m_nNextTrack))) return FALSE; - SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, FALSE, 0); + SampleManager.SetStreamedVolumeAndPan(AudioManager.ShouldDuckMissionAudio() ? 25 : 100, 63, FALSE); } return TRUE; } diff --git a/src/audio/sampman.h b/src/audio/sampman.h index b5f72d5c..d1ad9a26 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -201,15 +201,15 @@ public: void StartChannel (uint32 nChannel); void StopChannel (uint32 nChannel); - void PreloadStreamedFile (uint8 nFile, uint8 nStream); - void PauseStream (bool8 nPauseFlag, uint8 nStream); - void StartPreloadedStreamedFile (uint8 nStream); - bool8 StartStreamedFile (uint8 nFile, uint32 nPos, uint8 nStream); - void StopStreamedFile (uint8 nStream); - int32 GetStreamedFilePosition (uint8 nStream); - void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream); - int32 GetStreamedFileLength (uint8 nStream); - bool8 IsStreamPlaying (uint8 nStream); + void PreloadStreamedFile (uint8 nFile, uint8 nStream = 0); + void PauseStream (bool8 nPauseFlag, uint8 nStream = 0); + void StartPreloadedStreamedFile (uint8 nStream = 0); + bool8 StartStreamedFile (uint8 nFile, uint32 nPos, uint8 nStream = 0); + void StopStreamedFile (uint8 nStream = 0); + int32 GetStreamedFilePosition (uint8 nStream = 0); + void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, bool8 nEffectFlag, uint8 nStream = 0); + int32 GetStreamedFileLength (uint8 nStream = 0); + bool8 IsStreamPlaying (uint8 nStream = 0); #ifdef AUDIO_OAL void Service(void); #endif From cacec36dd1dd6141986631ae22d6d40a64358a41 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 28 May 2021 19:03:16 +0300 Subject: [PATCH 149/314] Fix cut off sfx on high framerates --- src/audio/AudioManager.cpp | 21 +++++++++++++++++++-- src/audio/AudioManager.h | 4 ++++ src/core/Timer.cpp | 24 ++++++++++++++++++++++++ src/core/Timer.h | 4 ++++ 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 5312bfad..69126c23 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -41,6 +41,11 @@ cAudioManager::cAudioManager() m_bFifthFrameFlag = FALSE; m_bTimerJustReset = FALSE; m_nTimer = 0; + +#ifdef FIX_BUGS + m_LogicalFrameCounter = 0; + m_bLogicalFrameUpdate = FALSE; +#endif } cAudioManager::~cAudioManager() @@ -100,6 +105,12 @@ cAudioManager::Terminate() void cAudioManager::Service() { +#ifdef FIX_BUGS + m_bLogicalFrameUpdate = m_LogicalFrameCounter != CTimer::GetLogicalFrameCounter(); + if(m_bLogicalFrameUpdate) + m_LogicalFrameCounter = CTimer::GetLogicalFrameCounter(); +#endif + GenerateIntegerRandomNumberTable(); if (m_bTimerJustReset) { ResetAudioLogicTimers(m_nTimer); @@ -423,6 +434,9 @@ cAudioManager::IsAudioInitialised() const void cAudioManager::ServiceSoundEffects() { +#ifdef FIX_BUGS + if(m_bLogicalFrameUpdate) +#endif m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0; if (m_nUserPause && !m_nPreviousUserPause) { for (int32 i = 0; i < NUM_CHANNELS; i++) @@ -712,9 +726,9 @@ cAudioManager::AddReleasingSounds() } if (!toProcess[i]) { if (sample.m_nCounter <= 255 || !sample.m_nLoopsRemaining) { - if (!sample.m_nReleasingVolumeDivider) + if (sample.m_nReleasingVolumeDivider == 0) continue; - if (!sample.m_nLoopCount) { + if (sample.m_nLoopCount == 0) { if (sample.m_nVolumeChange == -1) { sample.m_nVolumeChange = sample.m_nVolume / sample.m_nReleasingVolumeDivider; if (sample.m_nVolumeChange <= 0) @@ -726,6 +740,9 @@ cAudioManager::AddReleasingSounds() } sample.m_nVolume -= sample.m_nVolumeChange; } +#ifdef FIX_BUGS + if(m_bLogicalFrameUpdate) +#endif --sample.m_nReleasingVolumeDivider; if (m_bFifthFrameFlag) { if (sample.m_nReleasingVolumeModificator < 20) diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 70302745..dcd6c7c4 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -223,6 +223,10 @@ public: uint8 m_nUserPause; uint8 m_nPreviousUserPause; uint32 m_FrameCounter; +#ifdef FIX_BUGS + uint32 m_LogicalFrameCounter; + bool8 m_bLogicalFrameUpdate; +#endif cAudioManager(); ~cAudioManager(); diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index ed5580fd..5c7d012e 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -16,6 +16,9 @@ float CTimer::ms_fTimeStep; float CTimer::ms_fTimeStepNonClipped; bool CTimer::m_UserPause; bool CTimer::m_CodePause; +#ifdef FIX_BUGS +uint32 CTimer::m_LogicalFrameCounter; +#endif uint32 _nCyclesPerMS = 1; @@ -49,6 +52,9 @@ void CTimer::Initialise(void) m_snTimeInMillisecondsNonClipped = 0; m_snPreviousTimeInMilliseconds = 0; m_snTimeInMilliseconds = 1; +#ifdef FIX_BUGS + m_LogicalFrameCounter = 0; +#endif #ifdef _WIN32 LARGE_INTEGER perfFreq; @@ -102,6 +108,15 @@ void CTimer::Update(void) #endif frameTime = updInCyclesScaled / (double)_nCyclesPerMS; +#ifdef FIX_BUGS + static double frameTimeLogical = 0.0; + frameTimeLogical += ((double)updInCycles / (double)_nCyclesPerMS); + while (frameTimeLogical >= 1000.0 / 30.0) { + frameTimeLogical -= 1000.0 / 30.0; + m_LogicalFrameCounter++; + } +#endif + m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; if ( GetIsPaused() ) @@ -126,6 +141,15 @@ void CTimer::Update(void) #endif frameTime = (double)updInMs * ms_fTimeScale; +#ifdef FIX_BUGS + static double frameTimeLogical = 0.0; + frameTimeLogical += (double)updInMs; + while(frameTimeLogical >= 1000.0 / 30.0) { + frameTimeLogical -= 1000.0 / 30.0; + m_LogicalFrameCounter++; + } +#endif + oldPcTimer = timer; m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; diff --git a/src/core/Timer.h b/src/core/Timer.h index 393242dd..ebde1747 100644 --- a/src/core/Timer.h +++ b/src/core/Timer.h @@ -11,6 +11,9 @@ class CTimer static float ms_fTimeScale; static float ms_fTimeStep; static float ms_fTimeStepNonClipped; +#ifdef FIX_BUGS + static uint32 m_LogicalFrameCounter; +#endif public: static bool m_UserPause; static bool m_CodePause; @@ -61,6 +64,7 @@ public: #ifdef FIX_BUGS static float GetDefaultTimeStep(void) { return 50.0f / 30.0f; } static float GetTimeStepFix(void) { return GetTimeStep() / GetDefaultTimeStep(); } + static uint32 GetLogicalFrameCounter(void) { return m_LogicalFrameCounter; } #endif }; From f741101e4458d2515c57ae11f3f6c0088206524f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 29 May 2021 11:57:51 +0300 Subject: [PATCH 150/314] Fix redone + add hud fix --- src/audio/AudioManager.cpp | 15 ++------------- src/audio/AudioManager.h | 4 ---- src/audio/MusicManager.cpp | 4 ++++ src/core/Timer.cpp | 10 ++++++++-- src/core/Timer.h | 2 ++ src/render/Hud.cpp | 30 ++++++++++++++++++------------ 6 files changed, 34 insertions(+), 31 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 69126c23..c49ce552 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -41,11 +41,6 @@ cAudioManager::cAudioManager() m_bFifthFrameFlag = FALSE; m_bTimerJustReset = FALSE; m_nTimer = 0; - -#ifdef FIX_BUGS - m_LogicalFrameCounter = 0; - m_bLogicalFrameUpdate = FALSE; -#endif } cAudioManager::~cAudioManager() @@ -105,12 +100,6 @@ cAudioManager::Terminate() void cAudioManager::Service() { -#ifdef FIX_BUGS - m_bLogicalFrameUpdate = m_LogicalFrameCounter != CTimer::GetLogicalFrameCounter(); - if(m_bLogicalFrameUpdate) - m_LogicalFrameCounter = CTimer::GetLogicalFrameCounter(); -#endif - GenerateIntegerRandomNumberTable(); if (m_bTimerJustReset) { ResetAudioLogicTimers(m_nTimer); @@ -435,7 +424,7 @@ void cAudioManager::ServiceSoundEffects() { #ifdef FIX_BUGS - if(m_bLogicalFrameUpdate) + if(CTimer::GetLogicalFramesPassed() != 0) #endif m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0; if (m_nUserPause && !m_nPreviousUserPause) { @@ -741,7 +730,7 @@ cAudioManager::AddReleasingSounds() sample.m_nVolume -= sample.m_nVolumeChange; } #ifdef FIX_BUGS - if(m_bLogicalFrameUpdate) + if(CTimer::GetLogicalFramesPassed() != 0) #endif --sample.m_nReleasingVolumeDivider; if (m_bFifthFrameFlag) { diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index dcd6c7c4..70302745 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -223,10 +223,6 @@ public: uint8 m_nUserPause; uint8 m_nPreviousUserPause; uint32 m_FrameCounter; -#ifdef FIX_BUGS - uint32 m_LogicalFrameCounter; - bool8 m_bLogicalFrameUpdate; -#endif cAudioManager(); ~cAudioManager(); diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 4eaa37d5..957fce55 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -195,7 +195,11 @@ cMusicManager::DisplayRadioStationName() cDisplay = 60; } else { if(cDisplay == 0) return; +#ifdef FIX_BUGS + cDisplay -= CTimer::GetLogicalFramesPassed(); +#else cDisplay--; +#endif } CFont::SetJustifyOff(); diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 5c7d012e..5771274a 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -18,6 +18,7 @@ bool CTimer::m_UserPause; bool CTimer::m_CodePause; #ifdef FIX_BUGS uint32 CTimer::m_LogicalFrameCounter; +uint32 CTimer::m_LogicalFramesPassed; #endif uint32 _nCyclesPerMS = 1; @@ -54,6 +55,7 @@ void CTimer::Initialise(void) m_snTimeInMilliseconds = 1; #ifdef FIX_BUGS m_LogicalFrameCounter = 0; + m_LogicalFramesPassed = 0; #endif #ifdef _WIN32 @@ -109,12 +111,14 @@ void CTimer::Update(void) frameTime = updInCyclesScaled / (double)_nCyclesPerMS; #ifdef FIX_BUGS + m_LogicalFramesPassed = 0; static double frameTimeLogical = 0.0; frameTimeLogical += ((double)updInCycles / (double)_nCyclesPerMS); while (frameTimeLogical >= 1000.0 / 30.0) { frameTimeLogical -= 1000.0 / 30.0; - m_LogicalFrameCounter++; + m_LogicalFramesPassed++; } + m_LogicalFrameCounter += m_LogicalFramesPassed; #endif m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; @@ -142,12 +146,14 @@ void CTimer::Update(void) frameTime = (double)updInMs * ms_fTimeScale; #ifdef FIX_BUGS + m_LogicalFramesPassed = 0; static double frameTimeLogical = 0.0; frameTimeLogical += (double)updInMs; while(frameTimeLogical >= 1000.0 / 30.0) { frameTimeLogical -= 1000.0 / 30.0; - m_LogicalFrameCounter++; + m_LogicalFramesPassed++; } + m_LogicalFrameCounter += m_LogicalFramesPassed; #endif oldPcTimer = timer; diff --git a/src/core/Timer.h b/src/core/Timer.h index ebde1747..7b68303a 100644 --- a/src/core/Timer.h +++ b/src/core/Timer.h @@ -13,6 +13,7 @@ class CTimer static float ms_fTimeStepNonClipped; #ifdef FIX_BUGS static uint32 m_LogicalFrameCounter; + static uint32 m_LogicalFramesPassed; #endif public: static bool m_UserPause; @@ -65,6 +66,7 @@ public: static float GetDefaultTimeStep(void) { return 50.0f / 30.0f; } static float GetTimeStepFix(void) { return GetTimeStep() / GetDefaultTimeStep(); } static uint32 GetLogicalFrameCounter(void) { return m_LogicalFrameCounter; } + static uint32 GetLogicalFramesPassed(void) { return m_LogicalFramesPassed; } #endif }; diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp index 4991e024..bba8c525 100644 --- a/src/render/Hud.cpp +++ b/src/render/Hud.cpp @@ -75,6 +75,12 @@ #define SCALE_AND_CENTER_X_FIX(a) (a) #endif +#ifdef FIX_BUGS +#define FRAMECOUNTER CTimer::GetLogicalFrameCounter() +#else +#define FRAMECOUNTER CTimer::GetFrameCounter() +#endif + // Game has colors inlined in code. // For easier modification we collect them here: CRGBA MONEY_COLOR(89, 115, 150, 255); @@ -577,12 +583,12 @@ void CHud::Draw() CFont::SetPropOff(); CFont::SetFontStyle(FONT_HEADING); - if (m_ItemToFlash == ITEM_HEALTH && CTimer::GetFrameCounter() & 8 + if (m_ItemToFlash == ITEM_HEALTH && FRAMECOUNTER & 8 || m_ItemToFlash != ITEM_HEALTH || FindPlayerPed()->m_fHealth < 10 - && CTimer::GetFrameCounter() & 8) { + && FRAMECOUNTER & 8) { if (FindPlayerPed()->m_fHealth >= 10 - || FindPlayerPed()->m_fHealth < 10 && CTimer::GetFrameCounter() & 8) { + || FindPlayerPed()->m_fHealth < 10 && FRAMECOUNTER & 8) { AsciiToUnicode("{", sPrintIcon); #ifdef FIX_BUGS @@ -594,14 +600,14 @@ void CHud::Draw() CFont::SetColor(CRGBA(0, 0, 0, 255)); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(HEALTH_X) + SCREEN_SCALE_X_FIX(2.0f), SCREEN_SCALE_Y(65.0f) + SCREEN_SCALE_Y_FIX(2.0f), sPrint); - if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss + 2000 || CTimer::GetFrameCounter() & 4) + if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss + 2000 || FRAMECOUNTER & 4) CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(HEALTH_X) + SCREEN_SCALE_X_FIX(2.0f) - SCREEN_SCALE_X(56.0f) + SCREEN_SCALE_X(2.0f), SCREEN_SCALE_Y(65.0f) + SCREEN_SCALE_Y_FIX(2.0f), sPrintIcon); CFont::SetColor(HEALTH_COLOR); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(HEALTH_X), SCREEN_SCALE_Y(65.0f), sPrint); - if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss + 2000 || CTimer::GetFrameCounter() & 4) + if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastHealthLoss + 2000 || FRAMECOUNTER & 4) CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(HEALTH_X) + SCREEN_SCALE_X_FIX(2.0f) - SCREEN_SCALE_X(56.0f), SCREEN_SCALE_Y(65.0f), sPrintIcon); } } @@ -609,7 +615,7 @@ void CHud::Draw() /* DrawArmour */ - if (m_ItemToFlash == ITEM_ARMOUR && CTimer::GetFrameCounter() & 8 || m_ItemToFlash != ITEM_ARMOUR) { + if (m_ItemToFlash == ITEM_ARMOUR && FRAMECOUNTER & 8 || m_ItemToFlash != ITEM_ARMOUR) { CFont::SetScale(SCREEN_SCALE_X(0.8f), SCREEN_SCALE_Y(1.35f)); if (FindPlayerPed()->m_fArmour > 1.0f) { AsciiToUnicode("[", sPrintIcon); @@ -623,14 +629,14 @@ void CHud::Draw() CFont::SetColor(CRGBA(0, 0, 0, 255)); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(182.0f) + SCREEN_SCALE_X_FIX(2.0f), SCREEN_SCALE_Y(65.0f) + SCREEN_SCALE_Y_FIX(2.0f), sPrint); - if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss + 2000 || CTimer::GetFrameCounter() & 4) + if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss + 2000 || FRAMECOUNTER & 4) CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(182.0f) + SCREEN_SCALE_X_FIX(2.0f) - SCREEN_SCALE_X(54.0f) + SCREEN_SCALE_X(2.0f), SCREEN_SCALE_Y(65.0f) + SCREEN_SCALE_Y_FIX(2.0f), sPrintIcon); CFont::SetColor(ARMOUR_COLOR); CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(182.0f), SCREEN_SCALE_Y(65.0f), sPrint); - if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss + 2000 || CTimer::GetFrameCounter() & 1) { + if (!CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss || CTimer::GetTimeInMilliseconds() > CWorld::Players[CWorld::PlayerInFocus].m_nTimeLastArmourLoss + 2000 || FRAMECOUNTER & 1) { CFont::PrintString(SCREEN_SCALE_FROM_RIGHT(182.0f) - SCREEN_SCALE_X(54.0f) + SCREEN_SCALE_X(2.0f), SCREEN_SCALE_Y(65.0f), sPrintIcon); } } @@ -657,7 +663,7 @@ void CHud::Draw() if (FindPlayerPed()->m_pWanted->GetWantedLevel() > i && (CTimer::GetTimeInMilliseconds() > FindPlayerPed()->m_pWanted->m_nLastWantedLevelChange - + 2000 || CTimer::GetFrameCounter() & 4)) { + + 2000 || FRAMECOUNTER & 4)) { CFont::SetColor(WANTED_COLOR); CFont::PrintString(fStarsX, SCREEN_SCALE_Y(87.0f), sPrintIcon); @@ -904,7 +910,7 @@ void CHud::Draw() TimerFlashTimer = 0; } - if (CTimer::GetFrameCounter() & 4 || !TimerFlashTimer) { + if (FRAMECOUNTER & 4 || !TimerFlashTimer) { AsciiToUnicode(CUserDisplay::OnscnTimer.m_sEntries[0].m_bTimerBuffer, sTimer); CFont::SetPropOn(); CFont::SetBackgroundOff(); @@ -941,7 +947,7 @@ void CHud::Draw() CounterFlashTimer = 0; } - if (CTimer::GetFrameCounter() & 4 || !CounterFlashTimer) { + if (FRAMECOUNTER & 4 || !CounterFlashTimer) { if (CUserDisplay::OnscnTimer.m_sEntries[0].m_nType == COUNTER_DISPLAY_NUMBER) { AsciiToUnicode(CUserDisplay::OnscnTimer.m_sEntries[0].m_bCounterBuffer, sTimer); CFont::SetPropOn(); @@ -1053,7 +1059,7 @@ void CHud::Draw() /* DrawRadar */ - if (m_ItemToFlash == ITEM_RADAR && CTimer::GetFrameCounter() & 8 || m_ItemToFlash != ITEM_RADAR) { + if (m_ItemToFlash == ITEM_RADAR && FRAMECOUNTER & 8 || m_ItemToFlash != ITEM_RADAR) { CRadar::DrawMap(); CRect rect(0.0f, 0.0f, SCREEN_SCALE_X(RADAR_WIDTH), SCREEN_SCALE_Y(RADAR_HEIGHT)); rect.Translate(SCREEN_SCALE_X_FIX(RADAR_LEFT), SCREEN_SCALE_FROM_BOTTOM(RADAR_BOTTOM + RADAR_HEIGHT)); From b90784da9060b6847d09bd18a15c690065b65214 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 29 May 2021 14:31:37 +0300 Subject: [PATCH 151/314] Make times more accurate --- src/core/Timer.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 5771274a..0c1875e9 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -121,16 +121,31 @@ void CTimer::Update(void) m_LogicalFrameCounter += m_LogicalFramesPassed; #endif +#ifdef FIX_BUGS + static double frameTimeDouble = 0.0; + frameTimeDouble += frameTime; + + m_snTimeInMillisecondsPauseMode += uint32(frameTimeDouble); +#else m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; +#endif if ( GetIsPaused() ) ms_fTimeStep = 0.0f; else { +#ifdef FIX_BUGS + m_snTimeInMilliseconds += uint32(frameTimeDouble); + m_snTimeInMillisecondsNonClipped += uint32(frameTimeDouble); +#else m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; +#endif ms_fTimeStep = frameTime / 1000.0f * 50.0f; } +#ifdef FIX_BUGS + frameTimeDouble -= uint32(frameTimeDouble); +#endif } else #endif @@ -158,16 +173,31 @@ void CTimer::Update(void) oldPcTimer = timer; +#ifdef FIX_BUGS + static double frameTimeDouble = 0.0; + frameTimeDouble += frameTime; + + m_snTimeInMillisecondsPauseMode += uint32(frameTimeDouble); +#else m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; +#endif if ( GetIsPaused() ) ms_fTimeStep = 0.0f; else { +#ifdef FIX_BUGS + m_snTimeInMilliseconds += uint32(frameTimeDouble); + m_snTimeInMillisecondsNonClipped += uint32(frameTimeDouble); +#else m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; +#endif ms_fTimeStep = frameTime / 1000.0f * 50.0f; } +#ifdef FIX_BUGS + frameTimeDouble -= uint32(frameTimeDouble); +#endif } if ( ms_fTimeStep < 0.01f && !GetIsPaused() ) From 2592da2273a580df7d854eecf4e0ac48a7a86162 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 29 May 2021 16:50:20 +0300 Subject: [PATCH 152/314] Remove frameTime, fix pause mode timer --- src/core/Frontend.cpp | 20 ++----------- src/core/Timer.cpp | 67 +++++++++++++++++++++---------------------- src/core/Timer.h | 4 --- src/core/main.cpp | 5 +++- 4 files changed, 39 insertions(+), 57 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 4677e4c9..3057ceac 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -950,12 +950,7 @@ CMenuManager::DisplayHelperText() m_nHelperTextAlpha -= 2; } #else - static float fadeAlpha = 0.0f; // To keep it precisely - if (m_nHelperTextAlpha >= 255 && fadeAlpha < 250) fadeAlpha = m_nHelperTextAlpha; - - // -2 per every 33 ms (1000.f/30.f - original frame limiter fps) - fadeAlpha -= (frameTime / 33.0f) * 2.0f; - m_nHelperTextAlpha = fadeAlpha; + m_nHelperTextAlpha -= 2 * CTimer::GetLogicalFramesPassed(); #endif if (m_nHelperTextAlpha < 1) ResetHelperText(); @@ -2686,11 +2681,7 @@ CMenuManager::DrawFrontEndNormal() static float fadeAlpha = 0.0f; if (m_nMenuFadeAlpha < 255) { - if (m_nMenuFadeAlpha == 0 && fadeAlpha > 1.0f) fadeAlpha = 0.0f; - - // +20 per every 33 ms (1000.f/30.f - original frame limiter fps) - fadeAlpha += (frameTime) * 20.f / 33.f; - m_nMenuFadeAlpha = fadeAlpha; + m_nMenuFadeAlpha += 20 * CTimer::GetLogicalFramesPassed(); } else { // TODO: what is this? waiting mouse? if(field_518 == 4){ @@ -2950,12 +2941,7 @@ CMenuManager::DrawFrontEndNormal() // Famous transparent menu bug #ifdef FIX_BUGS - static float fadeAlpha = 0.0f; - if (m_nMenuFadeAlpha == 0 && fadeAlpha > 1.0f) fadeAlpha = 0.0f; - - // +20 per every 33 ms (1000.f/30.f - original frame limiter fps) - fadeAlpha += (frameTime) * 20.f / 33.f; - m_nMenuFadeAlpha = fadeAlpha; + m_nMenuFadeAlpha += 20 * CTimer::GetLogicalFramesPassed(); #else static uint32 LastFade = 0; diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 0c1875e9..29875c91 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -37,10 +37,6 @@ RsTimerType suspendPcTimer; uint32 suspendDepth; -#ifdef FIX_BUGS -double frameTime; -#endif - void CTimer::Initialise(void) { debug("Initialising CTimer...\n"); @@ -90,6 +86,12 @@ void CTimer::Shutdown(void) void CTimer::Update(void) { +#ifdef FIX_BUGS + static double frameTimeLogical = 0.0; + static double frameTimeFraction = 0.0; + static double frameTimeFractionScaled = 0.0; +#endif + m_snPreviousTimeInMilliseconds = m_snTimeInMilliseconds; #ifdef _WIN32 @@ -101,31 +103,30 @@ void CTimer::Update(void) int32 updInCycles = (pc.LowPart - _oldPerfCounter.LowPart); // & 0x7FFFFFFF; pointless _oldPerfCounter = pc; - + + // bugfix from VC +#ifdef FIX_BUGS + float updInCyclesScaled = GetIsPaused() ? updInCycles : updInCycles * ms_fTimeScale; +#else float updInCyclesScaled = updInCycles * ms_fTimeScale; - - // We need that real frame time to fix transparent menu bug. -#ifndef FIX_BUGS - double #endif - frameTime = updInCyclesScaled / (double)_nCyclesPerMS; + + double frameTime = updInCyclesScaled / (double)_nCyclesPerMS; #ifdef FIX_BUGS + // count frames as if we're running at 30 fps m_LogicalFramesPassed = 0; - static double frameTimeLogical = 0.0; frameTimeLogical += ((double)updInCycles / (double)_nCyclesPerMS); while (frameTimeLogical >= 1000.0 / 30.0) { frameTimeLogical -= 1000.0 / 30.0; m_LogicalFramesPassed++; } m_LogicalFrameCounter += m_LogicalFramesPassed; -#endif -#ifdef FIX_BUGS - static double frameTimeDouble = 0.0; - frameTimeDouble += frameTime; + frameTimeFraction += (double)updInCycles / (double)_nCyclesPerMS; + frameTimeFractionScaled += frameTime; - m_snTimeInMillisecondsPauseMode += uint32(frameTimeDouble); + m_snTimeInMillisecondsPauseMode += uint32(frameTimeFraction); #else m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; #endif @@ -135,8 +136,8 @@ void CTimer::Update(void) else { #ifdef FIX_BUGS - m_snTimeInMilliseconds += uint32(frameTimeDouble); - m_snTimeInMillisecondsNonClipped += uint32(frameTimeDouble); + m_snTimeInMilliseconds += uint32(frameTimeFractionScaled); + m_snTimeInMillisecondsNonClipped += uint32(frameTimeFractionScaled); #else m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; @@ -144,7 +145,8 @@ void CTimer::Update(void) ms_fTimeStep = frameTime / 1000.0f * 50.0f; } #ifdef FIX_BUGS - frameTimeDouble -= uint32(frameTimeDouble); + frameTimeFraction -= uint32(frameTimeFraction); + frameTimeFractionScaled -= uint32(frameTimeFractionScaled); #endif } else @@ -154,30 +156,24 @@ void CTimer::Update(void) RsTimerType updInMs = timer - oldPcTimer; - // We need that real frame time to fix transparent menu bug. -#ifndef FIX_BUGS - double -#endif - frameTime = (double)updInMs * ms_fTimeScale; + double frameTime = (double)updInMs * ms_fTimeScale; + + oldPcTimer = timer; #ifdef FIX_BUGS + // count frames as if we're running at 30 fps m_LogicalFramesPassed = 0; - static double frameTimeLogical = 0.0; frameTimeLogical += (double)updInMs; while(frameTimeLogical >= 1000.0 / 30.0) { frameTimeLogical -= 1000.0 / 30.0; m_LogicalFramesPassed++; } m_LogicalFrameCounter += m_LogicalFramesPassed; -#endif - oldPcTimer = timer; - -#ifdef FIX_BUGS - static double frameTimeDouble = 0.0; - frameTimeDouble += frameTime; + frameTimeFraction += (double)updInMs; + frameTimeFractionScaled += frameTime; - m_snTimeInMillisecondsPauseMode += uint32(frameTimeDouble); + m_snTimeInMillisecondsPauseMode += uint32(frameTimeFraction); #else m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; #endif @@ -187,8 +183,8 @@ void CTimer::Update(void) else { #ifdef FIX_BUGS - m_snTimeInMilliseconds += uint32(frameTimeDouble); - m_snTimeInMillisecondsNonClipped += uint32(frameTimeDouble); + m_snTimeInMilliseconds += uint32(frameTimeFractionScaled); + m_snTimeInMillisecondsNonClipped += uint32(frameTimeFractionScaled); #else m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; @@ -196,7 +192,8 @@ void CTimer::Update(void) ms_fTimeStep = frameTime / 1000.0f * 50.0f; } #ifdef FIX_BUGS - frameTimeDouble -= uint32(frameTimeDouble); + frameTimeFraction -= uint32(frameTimeFraction); + frameTimeFractionScaled -= uint32(frameTimeFractionScaled); #endif } diff --git a/src/core/Timer.h b/src/core/Timer.h index 7b68303a..819bd30c 100644 --- a/src/core/Timer.h +++ b/src/core/Timer.h @@ -69,7 +69,3 @@ public: static uint32 GetLogicalFramesPassed(void) { return m_LogicalFramesPassed; } #endif }; - -#ifdef FIX_BUGS -extern double frameTime; -#endif diff --git a/src/core/main.cpp b/src/core/main.cpp index 492f481e..6a773ba5 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1177,7 +1177,10 @@ DisplayGameDebugText() FrameSamples++; #ifdef FIX_BUGS - FramesPerSecondCounter += frameTime / 1000.f; // convert to seconds + // this is inaccurate with over 1000 fps + static uint32 PreviousTimeInMillisecondsPauseMode = 0; + FramesPerSecondCounter += (CTimer::GetTimeInMillisecondsPauseMode() - PreviousTimeInMillisecondsPauseMode) / 1000.0f; // convert to seconds + PreviousTimeInMillisecondsPauseMode = CTimer::GetTimeInMillisecondsPauseMode(); FramesPerSecond = FrameSamples / FramesPerSecondCounter; #else FramesPerSecondCounter += 1000.0f / CTimer::GetTimeStepNonClippedInMilliseconds(); From a446dbefaa184dfeba5a0b9538b221f330e8703d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 12 Jun 2021 19:07:51 +0300 Subject: [PATCH 153/314] Fix police scanner on high fps --- src/audio/PolRadio.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 4eae169d..235a53d3 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -161,7 +161,11 @@ cAudioManager::ServicePoliceRadio() if(!crimeReport) { if(wantedLevel != 0) { if(nLastSeen != 0) { +#ifdef FIX_BUGS + nLastSeen -= CTimer::GetLogicalFramesPassed(); +#else --nLastSeen; +#endif } else { nLastSeen = m_anRandomTable[1] % 1000 + 2000; SetupSuspectLastSeenReport(); @@ -199,7 +203,11 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = FALSE; if (cWait) { +#ifdef FIX_BUGS + cWait -= CTimer::GetLogicalFramesPassed(); +#else --cWait; +#endif return; } if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && !bChannelOpen) { From 5c1af537af94fdc1af9881d0d8e5c32f46b89e56 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 20 Jun 2021 21:28:53 +0300 Subject: [PATCH 154/314] Don't restart OAL device when switching EAX --- src/audio/oal/aldlist.cpp | 26 +--- src/audio/oal/aldlist.h | 15 +- src/audio/sampman_oal.cpp | 288 +++++++++++++++++++------------------- 3 files changed, 167 insertions(+), 162 deletions(-) diff --git a/src/audio/oal/aldlist.cpp b/src/audio/oal/aldlist.cpp index 881418c1..6024adf2 100644 --- a/src/audio/oal/aldlist.cpp +++ b/src/audio/oal/aldlist.cpp @@ -24,12 +24,6 @@ #include "aldlist.h" -#ifndef _WIN32 -#define _stricmp strcasecmp -#define _strnicmp strncasecmp -#define _strdup strdup -#endif - #ifdef AUDIO_OAL /* * Init call @@ -47,8 +41,8 @@ ALDeviceList::ALDeviceList() defaultDeviceIndex = 0; if (alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT")) { - devices = (char *)alcGetString(NULL, ALC_DEVICE_SPECIFIER); - defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER); + devices = (char *)alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER); + defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_ALL_DEVICES_SPECIFIER); index = 0; // go through device list (each device terminated with a single NULL, list terminated with double NULL) @@ -62,17 +56,11 @@ ALDeviceList::ALDeviceList() if (context) { alcMakeContextCurrent(context); // if new actual device name isn't already in the list, then add it... - actualDeviceName = alcGetString(device, ALC_DEVICE_SPECIFIER); - bool bNewName = true; - for (unsigned int i = 0; i < GetNumDevices(); i++) { - if (strcmp(GetDeviceName(i), actualDeviceName) == 0) { - bNewName = false; - } - } - if ((bNewName) && (actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) { - ALDEVICEINFO ALDeviceInfo; + actualDeviceName = alcGetString(device, ALC_ALL_DEVICES_SPECIFIER); + if ((actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) { + ALDEVICEINFO &ALDeviceInfo = aDeviceInfo[nNumOfDevices++]; ALDeviceInfo.bSelected = true; - ALDeviceInfo.strDeviceName = _strdup(actualDeviceName); + ALDeviceInfo.SetName(actualDeviceName); alcGetIntegerv(device, ALC_MAJOR_VERSION, sizeof(int), &ALDeviceInfo.iMajorVersion); alcGetIntegerv(device, ALC_MINOR_VERSION, sizeof(int), &ALDeviceInfo.iMinorVersion); @@ -105,8 +93,6 @@ ALDeviceList::ALDeviceList() // Get Source Count ALDeviceInfo.uiSourceCount = GetMaxNumSources(); - - aDeviceInfo[nNumOfDevices++] = ALDeviceInfo; } alcMakeContextCurrent(NULL); alcDestroyContext(context); diff --git a/src/audio/oal/aldlist.h b/src/audio/oal/aldlist.h index 417bd314..3ed12d84 100644 --- a/src/audio/oal/aldlist.h +++ b/src/audio/oal/aldlist.h @@ -21,7 +21,7 @@ enum }; struct ALDEVICEINFO { - const char *strDeviceName; + char *strDeviceName; int iMajorVersion; int iMinorVersion; unsigned int uiSourceCount; @@ -33,6 +33,19 @@ struct ALDEVICEINFO { strDeviceName = NULL; Extensions = 0; } + + ~ALDEVICEINFO() + { + delete[] strDeviceName; + strDeviceName = NULL; + } + + void SetName(const char *name) + { + if(strDeviceName) delete[] strDeviceName; + strDeviceName = new char[strlen(name) + 1]; + strcpy(strDeviceName, name); + } }; typedef ALDEVICEINFO *LPALDEVICEINFO; diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 0a1e7563..f2771885 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -45,7 +45,6 @@ #endif //TODO: fix eax3 reverb -//TODO: max channels cSampleManager SampleManager; bool8 _bSampmanInitialised = FALSE; @@ -61,15 +60,17 @@ ALCdevice *ALDevice = NULL; ALCcontext *ALContext = NULL; unsigned int _maxSamples; float _fPrevEaxRatioDestination; +bool _effectsSupported = false; bool _usingEFX; float _fEffectsLevel; ALuint ALEffect = AL_EFFECT_NULL; ALuint ALEffectSlot = AL_EFFECTSLOT_NULL; struct { - char id[256]; + const char *id; char name[256]; int sources; + bool bSupportsFx; }providers[MAXPROVIDERS]; int defaultProvider; @@ -134,7 +135,7 @@ EAXLISTENERPROPERTIES EAX3Params; bool IsFXSupported() { - return usingEAX || usingEAX3 || _usingEFX; + return _effectsSupported; // usingEAX || usingEAX3 || _usingEFX; } void EAX_SetAll(const EAXLISTENERPROPERTIES *allparameters) @@ -150,47 +151,49 @@ add_providers() { SampleManager.SetNum3DProvidersAvailable(0); - ALDeviceList *pDeviceList = NULL; - pDeviceList = new ALDeviceList(); + static ALDeviceList DeviceList; + ALDeviceList *pDeviceList = &DeviceList; if ((pDeviceList) && (pDeviceList->GetNumDevices())) { const int devNumber = Min(pDeviceList->GetNumDevices(), MAXPROVIDERS); int n = 0; - for (int i = 0; i < devNumber; i++) + //for (int i = 0; i < devNumber; i++) + int i = pDeviceList->GetDefaultDevice(); { if ( n < MAXPROVIDERS ) { - strcpy(providers[n].id, pDeviceList->GetDeviceName(i)); - strncpy(providers[n].name, pDeviceList->GetDeviceName(i), sizeof(providers[n].name)); + providers[n].id = pDeviceList->GetDeviceName(i); + strcpy(providers[n].name, "OPENAL SOFT"); providers[n].sources = pDeviceList->GetMaxNumSources(i); SampleManager.Set3DProviderName(n, providers[n].name); n++; } - + if ( alGetEnumValue("AL_EFFECT_EAXREVERB") != 0 || pDeviceList->IsExtensionSupported(i, ADEXT_EAX2) || pDeviceList->IsExtensionSupported(i, ADEXT_EAX3) || pDeviceList->IsExtensionSupported(i, ADEXT_EAX4) || pDeviceList->IsExtensionSupported(i, ADEXT_EAX5) ) { + providers[n - 1].bSupportsFx = true; if ( n < MAXPROVIDERS ) { - strcpy(providers[n].id, pDeviceList->GetDeviceName(i)); - strncpy(providers[n].name, pDeviceList->GetDeviceName(i), sizeof(providers[n].name)); - strcat(providers[n].name, " EAX"); + providers[n].id = pDeviceList->GetDeviceName(i); + strcpy(providers[n].name, "OPENAL SOFT EAX"); providers[n].sources = pDeviceList->GetMaxNumSources(i); + providers[n].bSupportsFx = true; SampleManager.Set3DProviderName(n, providers[n].name); n++; } if ( n < MAXPROVIDERS ) { - strcpy(providers[n].id, pDeviceList->GetDeviceName(i)); - strncpy(providers[n].name, pDeviceList->GetDeviceName(i), sizeof(providers[n].name)); - strcat(providers[n].name, " EAX3"); + providers[n].id = pDeviceList->GetDeviceName(i); + strcpy(providers[n].name, "OPENAL SOFT EAX3"); providers[n].sources = pDeviceList->GetMaxNumSources(i); + providers[n].bSupportsFx = true; SampleManager.Set3DProviderName(n, providers[n].name); n++; } @@ -201,66 +204,29 @@ add_providers() for(int j=n;jGetDefaultDevice(); - if ( defaultProvider > MAXPROVIDERS ) - defaultProvider = 0; + // devices are gone now + //defaultProvider = pDeviceList->GetDefaultDevice(); + //if ( defaultProvider > MAXPROVIDERS ) + defaultProvider = 0; } - - delete pDeviceList; } static void release_existing() { - for ( int32 i = 0; i < NUM_CHANNELS; i++ ) - aChannel[i].Term(); - if ( IsFXSupported() ) { if ( alIsEffect(ALEffect) ) { alEffecti(ALEffect, AL_EFFECT_TYPE, AL_EFFECT_NULL); - alDeleteEffects(1, &ALEffect); - ALEffect = AL_EFFECT_NULL; } if (alIsAuxiliaryEffectSlot(ALEffectSlot)) { alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, AL_EFFECT_NULL); - - alDeleteAuxiliaryEffectSlots(1, &ALEffectSlot); - ALEffectSlot = AL_EFFECTSLOT_NULL; } } - for ( int32 i = 0; i < MAX_STREAMS; i++ ) - { - CStream *stream = aStream[i]; - if (stream) - stream->ProviderTerm(); - - alDeleteBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]); - } - alDeleteSources(MAX_STREAMS*2, ALStreamSources[0]); - - CChannel::DestroyChannels(); - - if ( ALContext ) - { - alcMakeContextCurrent(NULL); - alcSuspendContext(ALContext); - alcDestroyContext(ALContext); - } - if ( ALDevice ) - alcCloseDevice(ALDevice); - - ALDevice = NULL; - ALContext = NULL; - - _fPrevEaxRatioDestination = 0.0f; - _usingEFX = false; - _fEffectsLevel = 0.0f; - DEV("release_existing()\n"); } @@ -278,62 +244,6 @@ set_new_provider(int index) { DEV("set_new_provider()\n"); - //TODO: - _maxSamples = MAXCHANNELS; - - ALCint attr[] = {ALC_FREQUENCY,MAX_FREQ, - ALC_MONO_SOURCES, MAX_DIGITAL_MIXER_CHANNELS - MAX2DCHANNELS, - ALC_STEREO_SOURCES, MAX2DCHANNELS, - 0, - }; - - ALDevice = alcOpenDevice(providers[index].id); - ASSERT(ALDevice != NULL); - - ALContext = alcCreateContext(ALDevice, attr); - ASSERT(ALContext != NULL); - - alcMakeContextCurrent(ALContext); - - const char* ext=(const char*)alGetString(AL_EXTENSIONS); - ASSERT(strstr(ext,"AL_SOFT_loop_points")!=NULL); - if ( strstr(ext,"AL_SOFT_loop_points")==NULL ) - { - curprovider=-1; - release_existing(); - return FALSE; - } - - alListenerf (AL_GAIN, 1.0f); - alListener3f(AL_POSITION, 0.0f, 0.0f, 0.0f); - alListener3f(AL_VELOCITY, 0.0f, 0.0f, 0.0f); - ALfloat orientation[6] = { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f }; - alListenerfv(AL_ORIENTATION, orientation); - - alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED); - - if ( alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) ) - { - alGenAuxiliaryEffectSlots(1, &ALEffectSlot); - alGenEffects(1, &ALEffect); - } - - alGenSources(MAX_STREAMS*2, ALStreamSources[0]); - for ( int32 i = 0; i < MAX_STREAMS; i++ ) - { - alGenBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]); - alSourcei(ALStreamSources[i][0], AL_SOURCE_RELATIVE, AL_TRUE); - alSource3f(ALStreamSources[i][0], AL_POSITION, 0.0f, 0.0f, 0.0f); - alSourcef(ALStreamSources[i][0], AL_GAIN, 1.0f); - alSourcei(ALStreamSources[i][1], AL_SOURCE_RELATIVE, AL_TRUE); - alSource3f(ALStreamSources[i][1], AL_POSITION, 0.0f, 0.0f, 0.0f); - alSourcef(ALStreamSources[i][1], AL_GAIN, 1.0f); - - CStream *stream = aStream[i]; - if (stream) - stream->ProviderInit(); - } - usingEAX = 0; usingEAX3 = 0; _usingEFX = false; @@ -341,16 +251,16 @@ set_new_provider(int index) if ( !strcmp(&providers[index].name[strlen(providers[index].name) - strlen(" EAX3")], " EAX3") && alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) ) { - EAX_SetAll(&FinishEAX3); usingEAX = 1; usingEAX3 = 1; + alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect); + EAX_SetAll(&FinishEAX3); DEV("EAX3\n"); } else if ( alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) ) { - EAX_SetAll(&EAX30_ORIGINAL_PRESETS[EAX_ENVIRONMENT_CAVE]); if ( !strcmp(&providers[index].name[strlen(providers[index].name) - strlen(" EAX")], " EAX")) { @@ -362,23 +272,14 @@ set_new_provider(int index) _usingEFX = true; DEV("EFX\n"); } + alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect); + EAX_SetAll(&EAX30_ORIGINAL_PRESETS[EAX_ENVIRONMENT_CAVE]); } //SampleManager.SetSpeakerConfig(speaker_type); - - CChannel::InitChannels(); - for ( int32 i = 0; i < MAXCHANNELS; i++ ) - aChannel[i].Init(i); - for ( int32 i = 0; i < MAX2DCHANNELS; i++ ) - aChannel[MAXCHANNELS+i].Init(MAXCHANNELS+i, true); - if ( IsFXSupported() ) { - /**/ - alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect); - /**/ - for ( int32 i = 0; i < MAXCHANNELS; i++ ) aChannel[i].SetReverbMix(ALEffectSlot, 0.0f); } @@ -867,21 +768,12 @@ cSampleManager::IsMP3RadioChannelAvailable(void) void cSampleManager::ReleaseDigitalHandle(void) { - if ( ALDevice ) - { - prevprovider = curprovider; - release_existing(); - curprovider = -1; - } + // TODO? alcSuspendContext } void cSampleManager::ReacquireDigitalHandle(void) { - if ( ALDevice ) - { - if ( prevprovider != -1 ) - set_new_provider(prevprovider); - } + // TODO? alcProcessContext } bool8 @@ -898,7 +790,7 @@ cSampleManager::Initialise(void) { m_aSamples[i].nOffset = 0; m_aSamples[i].nSize = 0; - m_aSamples[i].nFrequency = MAX_FREQ; + m_aSamples[i].nFrequency = 22050; m_aSamples[i].nLoopStart = 0; m_aSamples[i].nLoopEnd = -1; } @@ -954,13 +846,84 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < NUM_CHANNELS; i++ ) nChannelVolume[i] = 0; } + + add_providers(); + + { + int index = 0; + _maxSamples = Min(MAXCHANNELS, providers[index].sources); + + ALCint attr[] = {ALC_FREQUENCY,MAX_FREQ, + ALC_MONO_SOURCES, MAX_DIGITAL_MIXER_CHANNELS - MAX2DCHANNELS, + ALC_STEREO_SOURCES, MAX2DCHANNELS, + 0, + }; + + ALDevice = alcOpenDevice(providers[index].id); + ASSERT(ALDevice != NULL); + + ALContext = alcCreateContext(ALDevice, attr); + ASSERT(ALContext != NULL); + + alcMakeContextCurrent(ALContext); + + const char* ext=(const char*)alGetString(AL_EXTENSIONS); + ASSERT(strstr(ext,"AL_SOFT_loop_points")!=NULL); + if ( strstr(ext,"AL_SOFT_loop_points")==NULL ) + { + Terminate(); + return FALSE; + } + + alListenerf (AL_GAIN, 1.0f); + alListener3f(AL_POSITION, 0.0f, 0.0f, 0.0f); + alListener3f(AL_VELOCITY, 0.0f, 0.0f, 0.0f); + ALfloat orientation[6] = { 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f }; + alListenerfv(AL_ORIENTATION, orientation); + + alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED); + + if ( alcIsExtensionPresent(ALDevice, (ALCchar*)ALC_EXT_EFX_NAME) ) + { + _effectsSupported = providers[index].bSupportsFx; + alGenAuxiliaryEffectSlots(1, &ALEffectSlot); + alGenEffects(1, &ALEffect); + } + + alGenSources(MAX_STREAMS*2, ALStreamSources[0]); + for ( int32 i = 0; i < MAX_STREAMS; i++ ) + { + alGenBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]); + alSourcei(ALStreamSources[i][0], AL_SOURCE_RELATIVE, AL_TRUE); + alSource3f(ALStreamSources[i][0], AL_POSITION, 0.0f, 0.0f, 0.0f); + alSourcef(ALStreamSources[i][0], AL_GAIN, 1.0f); + alSourcei(ALStreamSources[i][1], AL_SOURCE_RELATIVE, AL_TRUE); + alSource3f(ALStreamSources[i][1], AL_POSITION, 0.0f, 0.0f, 0.0f); + alSourcef(ALStreamSources[i][1], AL_GAIN, 1.0f); + } + + CChannel::InitChannels(); + + for ( int32 i = 0; i < MAXCHANNELS; i++ ) + aChannel[i].Init(i); + for ( int32 i = 0; i < MAX2DCHANNELS; i++ ) + aChannel[MAXCHANNELS+i].Init(MAXCHANNELS+i, true); + + if ( IsFXSupported() ) + { + /**/ + alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, ALEffect); + /**/ + + for ( int32 i = 0; i < MAXCHANNELS; i++ ) + aChannel[i].SetReverbMix(ALEffectSlot, 0.0f); + } + } { for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) nStreamLength[i] = 0; } - - add_providers(); #ifdef AUDIO_CACHE FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb"); @@ -1117,8 +1080,51 @@ cSampleManager::Terminate(void) aStream[i] = NULL; } } - - release_existing(); + + for ( int32 i = 0; i < NUM_CHANNELS; i++ ) + aChannel[i].Term(); + + if ( IsFXSupported() ) + { + if ( alIsEffect(ALEffect) ) + { + alEffecti(ALEffect, AL_EFFECT_TYPE, AL_EFFECT_NULL); + alDeleteEffects(1, &ALEffect); + ALEffect = AL_EFFECT_NULL; + } + + if (alIsAuxiliaryEffectSlot(ALEffectSlot)) + { + alAuxiliaryEffectSloti(ALEffectSlot, AL_EFFECTSLOT_EFFECT, AL_EFFECT_NULL); + + alDeleteAuxiliaryEffectSlots(1, &ALEffectSlot); + ALEffectSlot = AL_EFFECTSLOT_NULL; + } + } + + for ( int32 i = 0; i < MAX_STREAMS; i++ ) + { + alDeleteBuffers(NUM_STREAMBUFFERS, ALStreamBuffers[i]); + } + alDeleteSources(MAX_STREAMS*2, ALStreamSources[0]); + + CChannel::DestroyChannels(); + + if ( ALContext ) + { + alcMakeContextCurrent(NULL); + alcSuspendContext(ALContext); + alcDestroyContext(ALContext); + } + if ( ALDevice ) + alcCloseDevice(ALDevice); + + ALDevice = NULL; + ALContext = NULL; + + _fPrevEaxRatioDestination = 0.0f; + _usingEFX = false; + _fEffectsLevel = 0.0f; _DeleteMP3Entries(); From 1f082a85cbf1c1bd3c9875533a44ecca26984e01 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 25 Jun 2021 02:33:40 +0300 Subject: [PATCH 155/314] Refactor CTimer::Update --- src/core/Timer.cpp | 141 +++++++++++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 57 deletions(-) diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index 29875c91..cf060127 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -83,14 +83,14 @@ void CTimer::Shutdown(void) { ; } - +#ifdef FIX_BUGS void CTimer::Update(void) { -#ifdef FIX_BUGS static double frameTimeLogical = 0.0; static double frameTimeFraction = 0.0; static double frameTimeFractionScaled = 0.0; -#endif + double frameTime; + double dblUpdInMs; m_snPreviousTimeInMilliseconds = m_snTimeInMilliseconds; @@ -105,49 +105,100 @@ void CTimer::Update(void) _oldPerfCounter = pc; // bugfix from VC -#ifdef FIX_BUGS float updInCyclesScaled = GetIsPaused() ? updInCycles : updInCycles * ms_fTimeScale; -#else - float updInCyclesScaled = updInCycles * ms_fTimeScale; + + frameTime = updInCyclesScaled / (double)_nCyclesPerMS; + + dblUpdInMs = (double)updInCycles / (double)_nCyclesPerMS; + } + else #endif + { + RsTimerType timer = RsTimer(); + + RsTimerType updInMs = timer - oldPcTimer; + + frameTime = (double)updInMs * ms_fTimeScale; + + oldPcTimer = timer; + + dblUpdInMs = (double)updInMs; + } + + // count frames as if we're running at 30 fps + m_LogicalFramesPassed = 0; + frameTimeLogical += dblUpdInMs; + while(frameTimeLogical >= 1000.0 / 30.0) { + frameTimeLogical -= 1000.0 / 30.0; + m_LogicalFramesPassed++; + } + m_LogicalFrameCounter += m_LogicalFramesPassed; + + frameTimeFraction += dblUpdInMs; + frameTimeFractionScaled += frameTime; + + m_snTimeInMillisecondsPauseMode += uint32(frameTimeFraction); + + if ( GetIsPaused() ) + ms_fTimeStep = 0.0f; + else + { + m_snTimeInMilliseconds += uint32(frameTimeFractionScaled); + m_snTimeInMillisecondsNonClipped += uint32(frameTimeFractionScaled); + ms_fTimeStep = frameTime / 1000.0f * 50.0f; + } + frameTimeFraction -= uint32(frameTimeFraction); + frameTimeFractionScaled -= uint32(frameTimeFractionScaled); + + if ( ms_fTimeStep < 0.01f && !GetIsPaused() ) + ms_fTimeStep = 0.01f; + + ms_fTimeStepNonClipped = ms_fTimeStep; + + if ( !CRecordDataForGame::IsPlayingBack() ) + { + ms_fTimeStep = Min(3.0f, ms_fTimeStep); + + if ( (m_snTimeInMilliseconds - m_snPreviousTimeInMilliseconds) > 60 ) + m_snTimeInMilliseconds = m_snPreviousTimeInMilliseconds + 60; + } + + if ( CRecordDataForChase::IsRecording() ) + { + ms_fTimeStep = 1.0f; + m_snTimeInMilliseconds = m_snPreviousTimeInMilliseconds + 16; + } + + m_FrameCounter++; +} +#else +void CTimer::Update(void) +{ + m_snPreviousTimeInMilliseconds = m_snTimeInMilliseconds; + +#ifdef _WIN32 + if ( (double)_nCyclesPerMS != 0.0 ) + { + LARGE_INTEGER pc; + QueryPerformanceCounter(&pc); + + int32 updInCycles = (pc.LowPart - _oldPerfCounter.LowPart); // & 0x7FFFFFFF; pointless + + _oldPerfCounter = pc; + + float updInCyclesScaled = updInCycles * ms_fTimeScale; double frameTime = updInCyclesScaled / (double)_nCyclesPerMS; - -#ifdef FIX_BUGS - // count frames as if we're running at 30 fps - m_LogicalFramesPassed = 0; - frameTimeLogical += ((double)updInCycles / (double)_nCyclesPerMS); - while (frameTimeLogical >= 1000.0 / 30.0) { - frameTimeLogical -= 1000.0 / 30.0; - m_LogicalFramesPassed++; - } - m_LogicalFrameCounter += m_LogicalFramesPassed; - - frameTimeFraction += (double)updInCycles / (double)_nCyclesPerMS; - frameTimeFractionScaled += frameTime; - - m_snTimeInMillisecondsPauseMode += uint32(frameTimeFraction); -#else m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; -#endif if ( GetIsPaused() ) ms_fTimeStep = 0.0f; else { -#ifdef FIX_BUGS - m_snTimeInMilliseconds += uint32(frameTimeFractionScaled); - m_snTimeInMillisecondsNonClipped += uint32(frameTimeFractionScaled); -#else m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; -#endif ms_fTimeStep = frameTime / 1000.0f * 50.0f; } -#ifdef FIX_BUGS - frameTimeFraction -= uint32(frameTimeFraction); - frameTimeFractionScaled -= uint32(frameTimeFractionScaled); -#endif } else #endif @@ -160,41 +211,16 @@ void CTimer::Update(void) oldPcTimer = timer; -#ifdef FIX_BUGS - // count frames as if we're running at 30 fps - m_LogicalFramesPassed = 0; - frameTimeLogical += (double)updInMs; - while(frameTimeLogical >= 1000.0 / 30.0) { - frameTimeLogical -= 1000.0 / 30.0; - m_LogicalFramesPassed++; - } - m_LogicalFrameCounter += m_LogicalFramesPassed; - - frameTimeFraction += (double)updInMs; - frameTimeFractionScaled += frameTime; - - m_snTimeInMillisecondsPauseMode += uint32(frameTimeFraction); -#else m_snTimeInMillisecondsPauseMode = m_snTimeInMillisecondsPauseMode + frameTime; -#endif if ( GetIsPaused() ) ms_fTimeStep = 0.0f; else { -#ifdef FIX_BUGS - m_snTimeInMilliseconds += uint32(frameTimeFractionScaled); - m_snTimeInMillisecondsNonClipped += uint32(frameTimeFractionScaled); -#else m_snTimeInMilliseconds = m_snTimeInMilliseconds + frameTime; m_snTimeInMillisecondsNonClipped = m_snTimeInMillisecondsNonClipped + frameTime; -#endif ms_fTimeStep = frameTime / 1000.0f * 50.0f; } -#ifdef FIX_BUGS - frameTimeFraction -= uint32(frameTimeFraction); - frameTimeFractionScaled -= uint32(frameTimeFractionScaled); -#endif } if ( ms_fTimeStep < 0.01f && !GetIsPaused() ) @@ -218,6 +244,7 @@ void CTimer::Update(void) m_FrameCounter++; } +#endif void CTimer::Suspend(void) { From a83ecc123dea8090eb158825eafb262c14bfb46e Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 25 Jun 2021 02:32:41 +0200 Subject: [PATCH 156/314] fix cmake build? --- .github/workflows/build-cmake-conan.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-cmake-conan.yml b/.github/workflows/build-cmake-conan.yml index 76359106..d8636175 100644 --- a/.github/workflows/build-cmake-conan.yml +++ b/.github/workflows/build-cmake-conan.yml @@ -23,7 +23,7 @@ jobs: # - os: 'windows-latest' # platform: 'd3d9' # audio: 'miles' - - os: 'ubuntu-latest' + - os: 'ubuntu-18.04' platform: 'gl3' gl3_gfxlib: 'glfw' audio: 'openal' From 84fb48825d509247aaf25c8cd5936d23d7dd9e2c Mon Sep 17 00:00:00 2001 From: withmorten Date: Tue, 8 Jun 2021 03:10:02 +0200 Subject: [PATCH 157/314] add no-git-hash option to premake --- premake5.lua | 23 ++++++++++++++++++++--- src/CMakeLists.txt | 1 + src/core/config.h | 3 ++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/premake5.lua b/premake5.lua index fd59c1f8..973ac05d 100644 --- a/premake5.lua +++ b/premake5.lua @@ -27,6 +27,11 @@ newoption { description = "Build with opus" } +newoption { + trigger = "no-git-hash", + description = "Don't print git commit hash into binary" +} + newoption { trigger = "lto", description = "Use link time optimization" @@ -253,7 +258,11 @@ project "re3" files { addSrcFiles("src/vehicles") } files { addSrcFiles("src/weapons") } files { addSrcFiles("src/extras") } - files { "src/extras/GitSHA1.cpp" } -- this won't be in repo in first build + if(not _OPTIONS["no-git-hash"]) then + files { "src/extras/GitSHA1.cpp" } -- this won't be in repo in first build + else + removefiles { "src/extras/GitSHA1.cpp" } -- but it will be everytime after + end includedirs { "src" } includedirs { "src/animation" } @@ -278,6 +287,10 @@ project "re3" includedirs { "src/vehicles" } includedirs { "src/weapons" } includedirs { "src/extras" } + + if(not _OPTIONS["no-git-hash"]) then + defines { "USE_OUR_VERSIONING" } + end if _OPTIONS["with-opus"] then includedirs { "vendor/ogg/include" } @@ -318,10 +331,14 @@ project "re3" -- external librw is dynamic staticruntime "on" end - prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' } + if(not _OPTIONS["no-git-hash"]) then + prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' } + end filter "platforms:not win*" - prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' } + if(not _OPTIONS["no-git-hash"]) then + prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' } + end filter "platforms:win*glfw*" staticruntime "off" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c81873fd..35b7ec11 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -50,6 +50,7 @@ if(LIBRW_PLATFORM_D3D9) endif() target_compile_definitions(${EXECUTABLE} PRIVATE CMAKE_BUILD) +target_compile_definitions(${EXECUTABLE} PRIVATE USE_OUR_VERSIONING) if(${PROJECT}_AUDIO STREQUAL "OAL") find_package(OpenAL REQUIRED) diff --git a/src/core/config.h b/src/core/config.h index 1677b1a4..8424f6ef 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -184,7 +184,8 @@ enum Config { #define DRAW_GAME_VERSION_TEXT #ifdef DRAW_GAME_VERSION_TEXT // unlike R* development builds, ours has runtime switch on debug menu & .ini, and disabled as default. - #define USE_OUR_VERSIONING // If you disable this then game will fetch version from peds.col, as R* did while in development + // If you disable this then game will fetch version from peds.col, as R* did while in development. + //#define USE_OUR_VERSIONING // enabled from buildfiles by default #endif //#define DRAW_MENU_VERSION_TEXT From 6152f02333e296bd87fbc12f4fe59ca42e7e293e Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 25 Jun 2021 16:22:20 +0300 Subject: [PATCH 158/314] Update invite link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc7c3796..dea43575 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ re3 logo [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=master) - + ## Intro From 2b67aba94cb6448fb24c869559465eddf2bad069 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 25 Jun 2021 19:03:05 +0300 Subject: [PATCH 159/314] Redo ReadSaveBuf + common.h cleanup --- src/audio/AudioScriptObject.cpp | 9 +- src/control/AutoPilot.cpp | 54 +++++----- src/control/Garages.cpp | 28 +++--- src/control/Phones.cpp | 11 ++- src/control/Pickups.cpp | 9 +- src/control/Restart.cpp | 30 +++--- src/control/Script5.cpp | 85 +++++++++------- src/core/Pools.cpp | 16 ++- src/core/Radar.cpp | 3 +- src/core/Zones.cpp | 28 +++--- src/core/common.h | 170 -------------------------------- src/entities/Entity.cpp | 6 +- src/extras/debugmenu.h | 114 +++++++++++++++++++++ src/peds/Gangs.cpp | 3 +- src/peds/Ped.cpp | 1 + src/peds/PedType.cpp | 3 +- src/peds/PlayerPed.cpp | 1 + src/render/Console.h | 2 + src/render/Particle.cpp | 1 + src/save/SaveBuf.h | 64 ++++++++++++ src/vehicles/Automobile.cpp | 3 +- src/vehicles/Boat.cpp | 1 + src/vehicles/CarGen.cpp | 20 ++-- src/vehicles/Cranes.cpp | 7 +- src/vehicles/Vehicle.cpp | 65 ++++++------ src/weapons/Weapon.cpp | 1 + 26 files changed, 398 insertions(+), 337 deletions(-) create mode 100644 src/save/SaveBuf.h diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index ac30f757..623c43ca 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -3,6 +3,7 @@ #include "AudioScriptObject.h" #include "Pools.h" #include "DMAudio.h" +#include "SaveBuf.h" cAudioScriptObject::cAudioScriptObject() { @@ -53,12 +54,14 @@ cAudioScriptObject::LoadAllAudioScriptObjects(uint8 *buf, uint32 size) CheckSaveHeader(buf, 'A', 'U', 'D', '\0', size - SAVE_HEADER_SIZE); - int32 pool_size = ReadSaveBuf(buf); + int32 pool_size; + ReadSaveBuf(&pool_size, buf); for (int32 i = 0; i < pool_size; i++) { - int handle = ReadSaveBuf(buf); + int32 handle; + ReadSaveBuf(&handle, buf); cAudioScriptObject *p = new(handle) cAudioScriptObject; assert(p != nil); - *p = ReadSaveBuf(buf); + ReadSaveBuf(p, buf); p->AudioEntity = DMAudio.CreateLoopingScriptObject(p); } diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 77cbd0b4..22a73179 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -5,6 +5,7 @@ #include "CarCtrl.h" #include "Curves.h" #include "PathFind.h" +#include "SaveBuf.h" void CAutoPilot::ModifySpeed(float speed) { @@ -88,39 +89,40 @@ void CAutoPilot::Save(uint8*& buf) void CAutoPilot::Load(uint8*& buf) { - m_nCurrentRouteNode = ReadSaveBuf(buf); - m_nNextRouteNode = ReadSaveBuf(buf); - m_nPrevRouteNode = ReadSaveBuf(buf); - m_nTimeEnteredCurve = ReadSaveBuf(buf); - m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); - m_nCurrentPathNodeInfo = ReadSaveBuf(buf); - m_nNextPathNodeInfo = ReadSaveBuf(buf); - m_nPreviousPathNodeInfo = ReadSaveBuf(buf); - m_nAntiReverseTimer = ReadSaveBuf(buf); - m_nTimeToStartMission = ReadSaveBuf(buf); - m_nPreviousDirection = ReadSaveBuf(buf); - m_nCurrentDirection = ReadSaveBuf(buf); - m_nNextDirection = ReadSaveBuf(buf); - m_nCurrentLane = ReadSaveBuf(buf); - m_nNextLane = ReadSaveBuf(buf); - m_nDrivingStyle = ReadSaveBuf(buf); - m_nCarMission = ReadSaveBuf(buf); - m_nTempAction = ReadSaveBuf(buf); - m_nTimeTempAction = ReadSaveBuf(buf); - m_fMaxTrafficSpeed = ReadSaveBuf(buf); - m_nCruiseSpeed = ReadSaveBuf(buf); - uint8 flags = ReadSaveBuf(buf); + ReadSaveBuf(&m_nCurrentRouteNode, buf); + ReadSaveBuf(&m_nNextRouteNode, buf); + ReadSaveBuf(&m_nPrevRouteNode, buf); + ReadSaveBuf(&m_nTimeEnteredCurve, buf); + ReadSaveBuf(&m_nTimeToSpendOnCurrentCurve, buf); + ReadSaveBuf(&m_nCurrentPathNodeInfo, buf); + ReadSaveBuf(&m_nNextPathNodeInfo, buf); + ReadSaveBuf(&m_nPreviousPathNodeInfo, buf); + ReadSaveBuf(&m_nAntiReverseTimer, buf); + ReadSaveBuf(&m_nTimeToStartMission, buf); + ReadSaveBuf(&m_nPreviousDirection, buf); + ReadSaveBuf(&m_nCurrentDirection, buf); + ReadSaveBuf(&m_nNextDirection, buf); + ReadSaveBuf(&m_nCurrentLane, buf); + ReadSaveBuf(&m_nNextLane, buf); + ReadSaveBuf(&m_nDrivingStyle, buf); + ReadSaveBuf(&m_nCarMission, buf); + ReadSaveBuf(&m_nTempAction, buf); + ReadSaveBuf(&m_nTimeTempAction, buf); + ReadSaveBuf(&m_fMaxTrafficSpeed, buf); + ReadSaveBuf(&m_nCruiseSpeed, buf); + uint8 flags; + ReadSaveBuf(&flags, buf); m_bSlowedDownBecauseOfCars = !!(flags & BIT(0)); m_bSlowedDownBecauseOfPeds = !!(flags & BIT(1)); m_bStayInCurrentLevel = !!(flags & BIT(2)); m_bStayInFastLane = !!(flags & BIT(3)); m_bIgnorePathfinding = !!(flags & BIT(4)); SkipSaveBuf(buf, 2); - m_vecDestinationCoors.x = ReadSaveBuf(buf); - m_vecDestinationCoors.y = ReadSaveBuf(buf); - m_vecDestinationCoors.z = ReadSaveBuf(buf); + ReadSaveBuf(&m_vecDestinationCoors.x, buf); + ReadSaveBuf(&m_vecDestinationCoors.y, buf); + ReadSaveBuf(&m_vecDestinationCoors.z, buf); SkipSaveBuf(buf, 32); - m_nPathFindNodesCount = ReadSaveBuf(buf); + ReadSaveBuf(&m_nPathFindNodesCount, buf); SkipSaveBuf(buf, 6); } #endif \ No newline at end of file diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 792d3bda..3410c881 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -24,6 +24,7 @@ #include "Vehicle.h" #include "Wanted.h" #include "World.h" +#include "SaveBuf.h" #define CRUSHER_GARAGE_X1 (1135.5f) #define CRUSHER_GARAGE_Y1 (57.0f) @@ -2361,22 +2362,25 @@ void CGarages::Load(uint8* buf, uint32 size) assert(size == 5484); #endif CloseHideOutGaragesBeforeSave(); - NumGarages = ReadSaveBuf(buf); - BombsAreFree = ReadSaveBuf(buf); - RespraysAreFree = ReadSaveBuf(buf); - CarsCollected = ReadSaveBuf(buf); - BankVansCollected = ReadSaveBuf(buf); - PoliceCarsCollected = ReadSaveBuf(buf); + ReadSaveBuf(&NumGarages, buf); + int32 tempInt; + ReadSaveBuf(&tempInt, buf); + BombsAreFree = tempInt ? true : false; + ReadSaveBuf(&tempInt, buf); + RespraysAreFree = tempInt ? true : false; + ReadSaveBuf(&CarsCollected, buf); + ReadSaveBuf(&BankVansCollected, buf); + ReadSaveBuf(&PoliceCarsCollected, buf); for (int i = 0; i < TOTAL_COLLECTCARS_GARAGES; i++) - CarTypesCollected[i] = ReadSaveBuf(buf); - LastTimeHelpMessage = ReadSaveBuf(buf); + ReadSaveBuf(&CarTypesCollected[i], buf); + ReadSaveBuf(&LastTimeHelpMessage, buf); for (int i = 0; i < NUM_GARAGE_STORED_CARS; i++) { - aCarsInSafeHouse1[i] = ReadSaveBuf(buf); - aCarsInSafeHouse2[i] = ReadSaveBuf(buf); - aCarsInSafeHouse3[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aCarsInSafeHouse1[i], buf); + ReadSaveBuf(&aCarsInSafeHouse2[i], buf); + ReadSaveBuf(&aCarsInSafeHouse3[i], buf); } for (int i = 0; i < NUM_GARAGES; i++) { - aGarages[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aGarages[i], buf); aGarages[i].m_pDoor1 = nil; aGarages[i].m_pDoor2 = nil; aGarages[i].m_pTarget = nil; diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp index ef7ecead..f9cb1421 100644 --- a/src/control/Phones.cpp +++ b/src/control/Phones.cpp @@ -13,6 +13,7 @@ #include "RpAnimBlend.h" #include "AnimBlendAssociation.h" #include "soundlist.h" +#include "SaveBuf.h" #ifdef FIX_BUGS #include "Replay.h" #endif @@ -212,8 +213,9 @@ void CPhoneInfo::Load(uint8 *buf, uint32 size) { INITSAVEBUF - int max = ReadSaveBuf(buf); - int scriptPhonesMax = ReadSaveBuf(buf); + int32 max, scriptPhonesMax; + ReadSaveBuf(&max, buf); + ReadSaveBuf(&scriptPhonesMax, buf); #ifdef PEDS_REPORT_CRIMES_ON_PHONE m_nMax = Min(NUMPHONES, max); @@ -223,7 +225,8 @@ INITSAVEBUF // We can do it without touching saves. We'll only load script phones, others are already loaded in Initialise for (int i = 0; i < 50; i++) { - CPhone phoneToLoad = ReadSaveBuf(buf); + CPhone phoneToLoad; + ReadSaveBuf(&phoneToLoad, buf); if (ignoreOtherPhones) continue; @@ -249,7 +252,7 @@ INITSAVEBUF m_nScriptPhonesMax = scriptPhonesMax; for (int i = 0; i < NUMPHONES; i++) { - m_aPhones[i] = ReadSaveBuf(buf); + ReadSaveBuf(&m_aPhones[i], buf); // It's saved as building pool index in save file, convert it to true entity if (m_aPhones[i].m_pEntity) { m_aPhones[i].m_pEntity = CPools::GetBuildingPool()->GetSlot((uintptr)m_aPhones[i].m_pEntity - 1); diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index a1e2a851..10175fba 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -23,6 +23,7 @@ #ifdef FIX_BUGS #include "Replay.h" #endif +#include "SaveBuf.h" #include "Script.h" #include "Shadows.h" #include "SpecialFX.h" @@ -999,18 +1000,18 @@ CPickups::Load(uint8 *buf, uint32 size) INITSAVEBUF for (int32 i = 0; i < NUMPICKUPS; i++) { - aPickUps[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aPickUps[i], buf); if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((uintptr)aPickUps[i].m_pObject - 1); } - CollectedPickUpIndex = ReadSaveBuf(buf); - ReadSaveBuf(buf); + ReadSaveBuf(&CollectedPickUpIndex, buf); + SkipSaveBuf(buf, 2); NumMessages = 0; for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) - aPickUpsCollected[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aPickUpsCollected[i], buf); VALIDATESAVEBUF(size) } diff --git a/src/control/Restart.cpp b/src/control/Restart.cpp index 4ca18c3b..2f5e3d45 100644 --- a/src/control/Restart.cpp +++ b/src/control/Restart.cpp @@ -1,6 +1,7 @@ #include "common.h" #include "Restart.h" +#include "SaveBuf.h" #include "Zones.h" #include "PathFind.h" @@ -173,29 +174,28 @@ INITSAVEBUF CheckSaveHeader(buf, 'R','S','T','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_RESTART_POINTS; i++) { - HospitalRestartPoints[i] = ReadSaveBuf(buf); - HospitalRestartHeadings[i] = ReadSaveBuf(buf); + ReadSaveBuf(&HospitalRestartPoints[i], buf); + ReadSaveBuf(&HospitalRestartHeadings[i], buf); } for (int i = 0; i < NUM_RESTART_POINTS; i++) { - PoliceRestartPoints[i] = ReadSaveBuf(buf); - PoliceRestartHeadings[i] = ReadSaveBuf(buf); + ReadSaveBuf(&PoliceRestartPoints[i], buf); + ReadSaveBuf(&PoliceRestartHeadings[i], buf); } - NumberOfHospitalRestarts = ReadSaveBuf(buf); - NumberOfPoliceRestarts = ReadSaveBuf(buf); - bOverrideRestart = ReadSaveBuf(buf); + ReadSaveBuf(&NumberOfHospitalRestarts, buf); + ReadSaveBuf(&NumberOfPoliceRestarts, buf); + ReadSaveBuf(&bOverrideRestart, buf); // skip something unused - ReadSaveBuf(buf); - ReadSaveBuf(buf); + SkipSaveBuf(buf, 3); - OverridePosition = ReadSaveBuf(buf); - OverrideHeading = ReadSaveBuf(buf); - bFadeInAfterNextDeath = ReadSaveBuf(buf); - bFadeInAfterNextArrest = ReadSaveBuf(buf); - OverrideHospitalLevel = ReadSaveBuf(buf); - OverridePoliceStationLevel = ReadSaveBuf(buf); + ReadSaveBuf(&OverridePosition, buf); + ReadSaveBuf(&OverrideHeading, buf); + ReadSaveBuf(&bFadeInAfterNextDeath, buf); + ReadSaveBuf(&bFadeInAfterNextArrest, buf); + ReadSaveBuf(&OverrideHospitalLevel, buf); + ReadSaveBuf(&OverridePoliceStationLevel, buf); VALIDATESAVEBUF(size); } diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index c83c3edc..a9aec18e 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -12,6 +12,7 @@ #include "Pools.h" #include "Population.h" #include "RpAnimBlend.h" +#include "SaveBuf.h" #include "Shadows.h" #include "SpecialFX.h" #include "World.h" @@ -2002,21 +2003,25 @@ void CTheScripts::LoadAllScripts(uint8* buf, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buf, 'S', 'C', 'R', '\0', size - SAVE_HEADER_SIZE); - uint32 varSpace = ReadSaveBuf(buf); + uint32 varSpace, type, handle; + uint32 tmp; + + ReadSaveBuf(&varSpace, buf); for (uint32 i = 0; i < varSpace; i++) - ScriptSpace[i] = ReadSaveBuf(buf); - script_assert(ReadSaveBuf(buf) == SCRIPT_DATA_SIZE); - OnAMissionFlag = ReadSaveBuf(buf); + ReadSaveBuf(&ScriptSpace[i], buf); + ReadSaveBuf(&tmp, buf); + script_assert(tmp == SCRIPT_DATA_SIZE); + ReadSaveBuf(&OnAMissionFlag, buf); for (uint32 i = 0; i < MAX_NUM_CONTACTS; i++) { - OnAMissionForContactFlag[i] = ReadSaveBuf(buf); - BaseBriefIdForContact[i] = ReadSaveBuf(buf); + ReadSaveBuf(&OnAMissionForContactFlag[i], buf); + ReadSaveBuf(&BaseBriefIdForContact[i], buf); } for (uint32 i = 0; i < MAX_NUM_COLLECTIVES; i++) - CollectiveArray[i] = ReadSaveBuf(buf); - NextFreeCollectiveIndex = ReadSaveBuf(buf); + ReadSaveBuf(&CollectiveArray[i], buf); + ReadSaveBuf(&NextFreeCollectiveIndex, buf); for (uint32 i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) { - uint32 type = ReadSaveBuf(buf); - uint32 handle = ReadSaveBuf(buf); + ReadSaveBuf(&type, buf); + ReadSaveBuf(&handle, buf); switch (type) { case 0: BuildingSwapArray[i].m_pBuilding = nil; @@ -2030,14 +2035,14 @@ INITSAVEBUF default: script_assert(false); } - BuildingSwapArray[i].m_nNewModel = ReadSaveBuf(buf); - BuildingSwapArray[i].m_nOldModel = ReadSaveBuf(buf); + ReadSaveBuf(&BuildingSwapArray[i].m_nNewModel, buf); + ReadSaveBuf(&BuildingSwapArray[i].m_nOldModel, buf); if (BuildingSwapArray[i].m_pBuilding) BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nNewModel); } for (uint32 i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) { - uint32 type = ReadSaveBuf(buf); - uint32 handle = ReadSaveBuf(buf); + ReadSaveBuf(&type, buf); + ReadSaveBuf(&handle, buf); switch (type) { case 0: InvisibilitySettingArray[i] = nil; @@ -2060,14 +2065,20 @@ INITSAVEBUF if (InvisibilitySettingArray[i]) InvisibilitySettingArray[i]->bIsVisible = false; } - script_assert(ReadSaveBuf(buf) == bUsingAMultiScriptFile); - ReadSaveBuf(buf); - ReadSaveBuf(buf); - script_assert(ReadSaveBuf(buf) == MainScriptSize); - script_assert(ReadSaveBuf(buf) == LargestMissionScriptSize); - script_assert(ReadSaveBuf(buf) == NumberOfMissionScripts); - ReadSaveBuf(buf); - uint32 runningScripts = ReadSaveBuf(buf); + bool tmpBool; + ReadSaveBuf(&tmpBool, buf); + script_assert(tmpBool == bUsingAMultiScriptFile); + SkipSaveBuf(buf, 3); + ReadSaveBuf(&tmp, buf); + script_assert(tmp == MainScriptSize); + ReadSaveBuf(&tmp, buf); + script_assert(tmp == LargestMissionScriptSize); + uint16 tmp16; + ReadSaveBuf(&tmp16, buf); + script_assert(tmp16 == NumberOfMissionScripts); + SkipSaveBuf(buf, 2); + uint32 runningScripts; + ReadSaveBuf(&runningScripts, buf); for (uint32 i = 0; i < runningScripts; i++) StartNewScript(0)->Load(buf); VALIDATESAVEBUF(size) @@ -2115,35 +2126,35 @@ void CRunningScript::Load(uint8*& buf) #ifdef COMPATIBLE_SAVES SkipSaveBuf(buf, 8); for (int i = 0; i < 8; i++) - m_abScriptName[i] = ReadSaveBuf(buf); - m_nIp = ReadSaveBuf(buf); + ReadSaveBuf(&m_abScriptName[i], buf); + ReadSaveBuf(&m_nIp, buf); #ifdef CHECK_STRUCT_SIZES static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6"); #endif for (int i = 0; i < MAX_STACK_DEPTH; i++) - m_anStack[i] = ReadSaveBuf(buf); - m_nStackPointer = ReadSaveBuf(buf); + ReadSaveBuf(&m_anStack[i], buf); + ReadSaveBuf(&m_nStackPointer, buf); SkipSaveBuf(buf, 2); #ifdef CHECK_STRUCT_SIZES static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18"); #endif for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++) - m_anLocalVariables[i] = ReadSaveBuf(buf); - m_bCondResult = ReadSaveBuf(buf); - m_bIsMissionScript = ReadSaveBuf(buf); - m_bSkipWakeTime = ReadSaveBuf(buf); + ReadSaveBuf(&m_anLocalVariables[i], buf); + ReadSaveBuf(&m_bCondResult, buf); + ReadSaveBuf(&m_bIsMissionScript, buf); + ReadSaveBuf(&m_bSkipWakeTime, buf); SkipSaveBuf(buf, 1); - m_nWakeTime = ReadSaveBuf(buf); - m_nAndOrState = ReadSaveBuf(buf); - m_bNotFlag = ReadSaveBuf(buf); - m_bDeatharrestEnabled = ReadSaveBuf(buf); - m_bDeatharrestExecuted = ReadSaveBuf(buf); - m_bMissionFlag = ReadSaveBuf(buf); + ReadSaveBuf(&m_nWakeTime, buf); + ReadSaveBuf(&m_nAndOrState, buf); + ReadSaveBuf(&m_bNotFlag, buf); + ReadSaveBuf(&m_bDeatharrestEnabled, buf); + ReadSaveBuf(&m_bDeatharrestExecuted, buf); + ReadSaveBuf(&m_bMissionFlag, buf); SkipSaveBuf(buf, 2); #else CRunningScript* n = next; CRunningScript* p = prev; - *this = ReadSaveBuf(buf); + ReadSaveBuf(this, buf); next = n; prev = p; #endif diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 39cfb1d4..5cffe9e4 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -9,6 +9,7 @@ #endif #include "Population.h" #include "ProjectileInfo.h" +#include "SaveBuf.h" #include "Streaming.h" #include "Wanted.h" #include "World.h" @@ -130,14 +131,19 @@ CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot) void CPools::LoadVehiclePool(uint8* buf, uint32 size) { INITSAVEBUF - int nNumCars = ReadSaveBuf(buf); - int nNumBoats = ReadSaveBuf(buf); + int nNumCars, nNumBoats; + ReadSaveBuf(&nNumCars, buf); + ReadSaveBuf(&nNumBoats, buf); for (int i = 0; i < nNumCars + nNumBoats; i++) { - uint32 type = ReadSaveBuf(buf); - int16 model = ReadSaveBuf(buf); + uint32 type; + int16 model; + int32 slot; + + ReadSaveBuf(&type, buf); + ReadSaveBuf(&model, buf); CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY); CStreaming::LoadAllRequestedModels(false); - int32 slot = ReadSaveBuf(buf); + ReadSaveBuf(&slot, buf); CVehicle* pVehicle; #ifdef COMPATIBLE_SAVES if (type == VEHICLE_TYPE_BOAT) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 8f2c1747..77d6cc7f 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -16,6 +16,7 @@ #include "Script.h" #include "TxdStore.h" #include "World.h" +#include "SaveBuf.h" #include "Streaming.h" #include "SpecialFX.h" @@ -1055,7 +1056,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUMRADARBLIPS; i++) - ms_RadarTrace[i] = ReadSaveBuf(buf); + ReadSaveBuf(&ms_RadarTrace[i], buf); VALIDATESAVEBUF(size); } diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp index cdae85e1..107b1db8 100644 --- a/src/core/Zones.cpp +++ b/src/core/Zones.cpp @@ -8,6 +8,7 @@ #include "Text.h" #include "World.h" #include "Timer.h" +#include "SaveBuf.h" eLevelName CTheZones::m_CurrLevel; CZone *CTheZones::m_pPlayersZone; @@ -696,17 +697,18 @@ void CTheZones::LoadAllZones(uint8 *buffer, uint32 size) { INITSAVEBUF - int i; + int32 i; CheckSaveHeader(buffer, 'Z', 'N', 'S', '\0', size - SAVE_HEADER_SIZE); - m_pPlayersZone = GetPointerForZoneIndex(ReadSaveBuf(buffer)); - m_CurrLevel = ReadSaveBuf(buffer); - FindIndex = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); + ReadSaveBuf(&i, buffer); + m_pPlayersZone = GetPointerForZoneIndex(i); + ReadSaveBuf(&m_CurrLevel, buffer); + ReadSaveBuf(&FindIndex, buffer); + SkipSaveBuf(buffer, 2); for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){ - ZoneArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&ZoneArray[i], buffer); ZoneArray[i].child = GetPointerForZoneIndex((uintptr)ZoneArray[i].child); ZoneArray[i].parent = GetPointerForZoneIndex((uintptr)ZoneArray[i].parent); @@ -714,13 +716,13 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++) - ZoneInfoArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&ZoneInfoArray[i], buffer); - TotalNumberOfZones = ReadSaveBuf(buffer); - TotalNumberOfZoneInfos = ReadSaveBuf(buffer); + ReadSaveBuf(&TotalNumberOfZones, buffer); + ReadSaveBuf(&TotalNumberOfZoneInfos, buffer); for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++){ - MapZoneArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&MapZoneArray[i], buffer); /* The call of GetPointerForZoneIndex is wrong, as it is @@ -736,10 +738,10 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(AudioZoneArray); i++) - AudioZoneArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&AudioZoneArray[i], buffer); - TotalNumberOfMapZones = ReadSaveBuf(buffer); - NumberOfAudioZones = ReadSaveBuf(buffer); + ReadSaveBuf(&TotalNumberOfMapZones, buffer); + ReadSaveBuf(&NumberOfAudioZones, buffer); VALIDATESAVEBUF(size) } diff --git a/src/core/common.h b/src/core/common.h index e5077611..7207f08d 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -393,173 +393,3 @@ template struct check_size { #define STR(x) STRINGIFY(x) #define CONCAT_(x,y) x##y #define CONCAT(x,y) CONCAT_(x,y) - -#ifdef DEBUGMENU -// Tweaking stuff for debugmenu -#define TWEAKPATH ___tw___TWEAKPATH -#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; -#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); -#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); - -// interface -class CTweakVar -{ -public: - virtual void AddDBG(const char *path) = 0; -}; - -class CTweakVars -{ -public: - static void Add(CTweakVar *var); - static void AddDBG(const char *path); -}; - -class CTweakFunc : public CTweakVar -{ - const char *m_pPath, *m_pVarName; - void (*m_pFunc)(); -public: - CTweakFunc(void (*pFunc)(), const char *strName, const char *strPath) : - m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) - { - CTweakVars::Add(this); - } - - void AddDBG(const char *path); -}; - -class CTweakBool : public CTweakVar -{ - const char *m_pPath, *m_pVarName; - bool *m_pBoolVar; -public: - CTweakBool(bool *pBool, const char *strName, const char *strPath) : - m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) - { - CTweakVars::Add(this); - } - - void AddDBG(const char *path); -}; - -class CTweakSwitch : public CTweakVar -{ - const char *m_pPath, *m_pVarName; - void *m_pIntVar; - int32 m_nMin, m_nMax; - const char **m_aStr; - void (*m_pFunc)(); -public: - CTweakSwitch(void *pInt, const char *strName, int32 nMin, int32 nMax, const char **aStr, - void (*pFunc)(), const char *strPath) - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), - m_aStr(aStr) - { - CTweakVars::Add(this); - } - - void AddDBG(const char *path); -}; - -#define _TWEEKCLASS(name, type) \ - class name : public CTweakVar \ - { \ - public: \ - const char *m_pPath, *m_pVarName; \ - type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ - \ - name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ - const char *strPath) \ - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ - m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ - \ - { \ - CTweakVars::Add(this); \ - } \ - \ - void AddDBG(const char *path); \ - }; - -_TWEEKCLASS(CTweakInt8, int8); -_TWEEKCLASS(CTweakUInt8, uint8); -_TWEEKCLASS(CTweakInt16, int16); -_TWEEKCLASS(CTweakUInt16, uint16); -_TWEEKCLASS(CTweakInt32, int32); -_TWEEKCLASS(CTweakUInt32, uint32); -_TWEEKCLASS(CTweakFloat, float); - -#undef _TWEEKCLASS -#endif - -#ifdef VALIDATE_SAVE_SIZE -extern int32 _saveBufCount; -#define INITSAVEBUF _saveBufCount = 0; -#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); -#else -#define INITSAVEBUF -#define VALIDATESAVEBUF(b) -#endif - -inline void SkipSaveBuf(uint8 *&buf, int32 skip) -{ - buf += skip; -#ifdef VALIDATE_SAVE_SIZE - _saveBufCount += skip; -#endif -} - -template -inline const T ReadSaveBuf(uint8 *&buf) -{ - T &value = *(T*)buf; - SkipSaveBuf(buf, sizeof(T)); - return value; -} - -template -inline T *WriteSaveBuf(uint8 *&buf, const T &value) -{ - T *p = (T*)buf; - *p = value; - SkipSaveBuf(buf, sizeof(T)); - return p; -} - - -#define SAVE_HEADER_SIZE (4*sizeof(char)+sizeof(uint32)) - -#define WriteSaveHeader(buf,a,b,c,d,size) \ - WriteSaveBuf(buf, a);\ - WriteSaveBuf(buf, b);\ - WriteSaveBuf(buf, c);\ - WriteSaveBuf(buf, d);\ - WriteSaveBuf(buf, size); - -#define CheckSaveHeader(buf,a,b,c,d,size)\ - assert(ReadSaveBuf(buf) == a);\ - assert(ReadSaveBuf(buf) == b);\ - assert(ReadSaveBuf(buf) == c);\ - assert(ReadSaveBuf(buf) == d);\ - assert(ReadSaveBuf(buf) == size); - - -void cprintf(char*, ...); diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 9d5bf73c..a7f4bd45 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -22,6 +22,7 @@ #include "MemoryHeap.h" #include "Bones.h" #include "Debug.h" +#include "SaveBuf.h" int gBuildings; @@ -753,7 +754,8 @@ CEntity::SaveEntityFlags(uint8*& buf) void CEntity::LoadEntityFlags(uint8*& buf) { - uint32 tmp = ReadSaveBuf(buf); + uint32 tmp; + ReadSaveBuf(&tmp, buf); m_type = (tmp & ((BIT(3) - 1))); m_status = ((tmp >> 3) & (BIT(5) - 1)); @@ -784,7 +786,7 @@ CEntity::LoadEntityFlags(uint8*& buf) bZoneCulled = !!(tmp & BIT(30)); bZoneCulled2 = !!(tmp & BIT(31)); - tmp = ReadSaveBuf(buf); + ReadSaveBuf(&tmp, buf); bRemoveFromWorld = !!(tmp & BIT(0)); bHasHitWall = !!(tmp & BIT(1)); diff --git a/src/extras/debugmenu.h b/src/extras/debugmenu.h index c2198aca..45b65d04 100644 --- a/src/extras/debugmenu.h +++ b/src/extras/debugmenu.h @@ -2,6 +2,120 @@ #ifdef DEBUGMENU +// Tweaking stuff for debugmenu +#define TWEAKPATH ___tw___TWEAKPATH +#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; +#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); +#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); + +// interface +class CTweakVar +{ +public: + virtual void AddDBG(const char* path) = 0; +}; + +class CTweakVars +{ +public: + static void Add(CTweakVar* var); + static void AddDBG(const char* path); +}; + +class CTweakFunc : public CTweakVar +{ + const char* m_pPath, * m_pVarName; + void (*m_pFunc)(); +public: + CTweakFunc(void (*pFunc)(), const char* strName, const char* strPath) : + m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) + { + CTweakVars::Add(this); + } + + void AddDBG(const char* path); +}; + +class CTweakBool : public CTweakVar +{ + const char* m_pPath, * m_pVarName; + bool* m_pBoolVar; +public: + CTweakBool(bool* pBool, const char* strName, const char* strPath) : + m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) + { + CTweakVars::Add(this); + } + + void AddDBG(const char* path); +}; + +class CTweakSwitch : public CTweakVar +{ + const char* m_pPath, * m_pVarName; + void* m_pIntVar; + int32 m_nMin, m_nMax; + const char** m_aStr; + void (*m_pFunc)(); +public: + CTweakSwitch(void* pInt, const char* strName, int32 nMin, int32 nMax, const char** aStr, + void (*pFunc)(), const char* strPath) + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), + m_aStr(aStr) + { + CTweakVars::Add(this); + } + + void AddDBG(const char* path); +}; + +#define _TWEEKCLASS(name, type) \ + class name : public CTweakVar \ + { \ + public: \ + const char *m_pPath, *m_pVarName; \ + type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ + \ + name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ + const char *strPath) \ + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ + m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ + \ + { \ + CTweakVars::Add(this); \ + } \ + \ + void AddDBG(const char *path); \ + }; + +_TWEEKCLASS(CTweakInt8, int8); +_TWEEKCLASS(CTweakUInt8, uint8); +_TWEEKCLASS(CTweakInt16, int16); +_TWEEKCLASS(CTweakUInt16, uint16); +_TWEEKCLASS(CTweakInt32, int32); +_TWEEKCLASS(CTweakUInt32, uint32); +_TWEEKCLASS(CTweakFloat, float); + +#undef _TWEEKCLASS + typedef void (*TriggerFunc)(void); struct Menu; diff --git a/src/peds/Gangs.cpp b/src/peds/Gangs.cpp index 8859e61e..be29379c 100644 --- a/src/peds/Gangs.cpp +++ b/src/peds/Gangs.cpp @@ -3,6 +3,7 @@ #include "ModelIndices.h" #include "Gangs.h" #include "Weapon.h" +#include "SaveBuf.h" CGangInfo CGangs::Gang[NUM_GANGS]; @@ -72,6 +73,6 @@ INITSAVEBUF CheckSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_GANGS; i++) - Gang[i] = ReadSaveBuf(buf); + ReadSaveBuf(&Gang[i], buf); VALIDATESAVEBUF(size); } diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 5e1fb842..8e55510c 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -32,6 +32,7 @@ #include "Floater.h" #include "Range2D.h" #include "Wanted.h" +#include "SaveBuf.h" CPed *gapTempPedList[50]; uint16 gnNumTempPedList; diff --git a/src/peds/PedType.cpp b/src/peds/PedType.cpp index bacb1a78..dcd4c717 100644 --- a/src/peds/PedType.cpp +++ b/src/peds/PedType.cpp @@ -3,6 +3,7 @@ #include "General.h" #include "FileMgr.h" #include "PedType.h" +#include "SaveBuf.h" CPedType *CPedType::ms_apPedType[NUM_PEDTYPES]; CPedStats *CPedStats::ms_apPedStats[NUM_PEDSTATS]; @@ -201,7 +202,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'P', 'T', 'P', '\0', size - SAVE_HEADER_SIZE); for(int i = 0; i < NUM_PEDTYPES; i++) - *ms_apPedType[i] = ReadSaveBuf(buf); + ReadSaveBuf(ms_apPedType[i], buf); VALIDATESAVEBUF(size) } diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 46578486..a67e2abc 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -16,6 +16,7 @@ #include "Pools.h" #include "Darkel.h" #include "CarCtrl.h" +#include "SaveBuf.h" #define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f diff --git a/src/render/Console.h b/src/render/Console.h index b4fa60c4..9f22236f 100644 --- a/src/render/Console.h +++ b/src/render/Console.h @@ -23,3 +23,5 @@ public: }; extern CConsole TheConsole; + +void cprintf(char*, ...); \ No newline at end of file diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index 07e80abe..c971955f 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -14,6 +14,7 @@ #include "ParticleObject.h" #include "Particle.h" #include "soundlist.h" +#include "debugmenu.h" #define MAX_PARTICLES_ON_SCREEN (1000) diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h new file mode 100644 index 00000000..ed48a650 --- /dev/null +++ b/src/save/SaveBuf.h @@ -0,0 +1,64 @@ +#pragma once + +#ifdef VALIDATE_SAVE_SIZE +extern int32 _saveBufCount; +#define INITSAVEBUF _saveBufCount = 0; +#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); +#else +#define INITSAVEBUF +#define VALIDATESAVEBUF(b) +#endif + +inline void +SkipSaveBuf(uint8 *&buf, int32 skip) +{ + buf += skip; +#ifdef VALIDATE_SAVE_SIZE + _saveBufCount += skip; +#endif +} + +template +inline void +ReadSaveBuf(T* out, uint8 *&buf) +{ + *out = *(T *)buf; + SkipSaveBuf(buf, sizeof(T)); +} + +template +inline T * +WriteSaveBuf(uint8 *&buf, const T &value) +{ + T *p = (T *)buf; + *p = value; + SkipSaveBuf(buf, sizeof(T)); + return p; +} + +#define SAVE_HEADER_SIZE (4 * sizeof(char) + sizeof(uint32)) + +#define WriteSaveHeader(buf, a, b, c, d, size) \ + WriteSaveBuf(buf, a); \ + WriteSaveBuf(buf, b); \ + WriteSaveBuf(buf, c); \ + WriteSaveBuf(buf, d); \ + WriteSaveBuf(buf, (uint32)size); + +#ifdef VALIDATE_SAVE_SIZE +#define CheckSaveHeader(buf, a, b, c, d, size) { \ + char _C; uint32 _size;\ + ReadSaveBuf(&_C, buf);\ + assert(_C == a);\ + ReadSaveBuf(&_C, buf);\ + assert(_C == b);\ + ReadSaveBuf(&_C, buf);\ + assert(_C == c);\ + ReadSaveBuf(&_C, buf);\ + assert(_C == d);\ + ReadSaveBuf(&_size, buf);\ + assert(_size == size);\ + } +#else +#define CheckSaveHeader(buf, a, b, c, d, size) SkipSaveBuf(buf, 8); +#endif \ No newline at end of file diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index c29c0536..7be6ed0b 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -45,6 +45,7 @@ #include "Object.h" #include "Automobile.h" #include "Wanted.h" +#include "SaveBuf.h" bool bAllCarCheat; // unused @@ -4724,7 +4725,7 @@ void CAutomobile::Load(uint8*& buf) { CVehicle::Load(buf); - Damage = ReadSaveBuf(buf); + ReadSaveBuf(&Damage, buf); SkipSaveBuf(buf, 800 - sizeof(CDamageManager)); SetupDamageAfterLoad(); } diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index 4bbbadbd..bbe17f0b 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -19,6 +19,7 @@ #include "Pools.h" #include "Pad.h" #include "Boat.h" +#include "SaveBuf.h" #define INVALID_ORIENTATION (-9999.99f) diff --git a/src/vehicles/CarGen.cpp b/src/vehicles/CarGen.cpp index 7524444b..22b2fc60 100644 --- a/src/vehicles/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -13,6 +13,7 @@ #include "Timer.h" #include "Vehicle.h" #include "World.h" +#include "SaveBuf.h" uint8 CTheCarGenerators::ProcessCounter; uint32 CTheCarGenerators::NumOfCarGenerators; @@ -254,14 +255,17 @@ void CTheCarGenerators::LoadAllCarGenerators(uint8* buffer, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buffer, 'C','G','N','\0', size - SAVE_HEADER_SIZE); - assert(ReadSaveBuf(buffer) == nGeneralDataSize); - NumOfCarGenerators = ReadSaveBuf(buffer); - CurrentActiveCount = ReadSaveBuf(buffer); - ProcessCounter = ReadSaveBuf(buffer); - GenerateEvenIfPlayerIsCloseCounter = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); // alignment - assert(ReadSaveBuf(buffer) == sizeof(CarGeneratorArray)); + uint32 tmp; + ReadSaveBuf(&tmp, buffer); + assert(tmp == nGeneralDataSize); + ReadSaveBuf(&NumOfCarGenerators, buffer); + ReadSaveBuf(&CurrentActiveCount, buffer); + ReadSaveBuf(&ProcessCounter, buffer); + ReadSaveBuf(&GenerateEvenIfPlayerIsCloseCounter, buffer); + SkipSaveBuf(buffer, 2); + ReadSaveBuf(&tmp, buffer); + assert(tmp == sizeof(CarGeneratorArray)); for (int i = 0; i < NUM_CARGENS; i++) - CarGeneratorArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&CarGeneratorArray[i], buffer); VALIDATESAVEBUF(size) } diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index 0c7913af..0f1b8b4c 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -11,6 +11,7 @@ #include "Replay.h" #include "Object.h" #include "World.h" +#include "SaveBuf.h" #define MAX_DISTANCE_TO_FIND_CRANE (10.0f) #define CRANE_UPDATE_RADIUS (300.0f) @@ -653,10 +654,10 @@ void CCranes::Load(uint8* buf, uint32 size) { INITSAVEBUF - NumCranes = ReadSaveBuf(buf); - CarsCollectedMilitaryCrane = ReadSaveBuf(buf); + ReadSaveBuf(&NumCranes, buf); + ReadSaveBuf(&CarsCollectedMilitaryCrane, buf); for (int i = 0; i < NUM_CRANES; i++) - aCranes[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aCranes[i], buf); for (int i = 0; i < NUM_CRANES; i++) { CCrane *pCrane = &aCranes[i]; if (pCrane->m_pCraneEntity != nil) diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 8885485d..8112f0fe 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -18,6 +18,7 @@ #include "Radar.h" #include "Fire.h" #include "Darkel.h" +#include "SaveBuf.h" bool CVehicle::bWheelsOnlyCheat; bool CVehicle::bAllDodosCheat; @@ -1323,43 +1324,44 @@ CVehicle::Load(uint8*& buf) { CMatrix tmp; SkipSaveBuf(buf, 4); - tmp.GetRight().x = ReadSaveBuf(buf); - tmp.GetRight().y = ReadSaveBuf(buf); - tmp.GetRight().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetRight().x, buf); + ReadSaveBuf(&tmp.GetRight().y, buf); + ReadSaveBuf(&tmp.GetRight().z, buf); SkipSaveBuf(buf, 4); - tmp.GetForward().x = ReadSaveBuf(buf); - tmp.GetForward().y = ReadSaveBuf(buf); - tmp.GetForward().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetForward().x, buf); + ReadSaveBuf(&tmp.GetForward().y, buf); + ReadSaveBuf(&tmp.GetForward().z, buf); SkipSaveBuf(buf, 4); - tmp.GetUp().x = ReadSaveBuf(buf); - tmp.GetUp().y = ReadSaveBuf(buf); - tmp.GetUp().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetUp().x, buf); + ReadSaveBuf(&tmp.GetUp().y, buf); + ReadSaveBuf(&tmp.GetUp().z, buf); SkipSaveBuf(buf, 4); - tmp.GetPosition().x = ReadSaveBuf(buf); - tmp.GetPosition().y = ReadSaveBuf(buf); - tmp.GetPosition().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetPosition().x, buf); + ReadSaveBuf(&tmp.GetPosition().y, buf); + ReadSaveBuf(&tmp.GetPosition().z, buf); m_matrix = tmp; SkipSaveBuf(buf, 16); LoadEntityFlags(buf); SkipSaveBuf(buf, 212); AutoPilot.Load(buf); - m_currentColour1 = ReadSaveBuf(buf); - m_currentColour2 = ReadSaveBuf(buf); + ReadSaveBuf(&m_currentColour1, buf); + ReadSaveBuf(&m_currentColour2, buf); SkipSaveBuf(buf, 2); - m_nAlarmState = ReadSaveBuf(buf); + ReadSaveBuf(&m_nAlarmState, buf); SkipSaveBuf(buf, 43); - m_nNumMaxPassengers = ReadSaveBuf(buf); + ReadSaveBuf(&m_nNumMaxPassengers, buf); SkipSaveBuf(buf, 2); - field_1D0[0] = ReadSaveBuf(buf); - field_1D0[1] = ReadSaveBuf(buf); - field_1D0[2] = ReadSaveBuf(buf); - field_1D0[3] = ReadSaveBuf(buf); + ReadSaveBuf(&field_1D0[0], buf); + ReadSaveBuf(&field_1D0[1], buf); + ReadSaveBuf(&field_1D0[2], buf); + ReadSaveBuf(&field_1D0[3], buf); SkipSaveBuf(buf, 8); - m_fSteerAngle = ReadSaveBuf(buf); - m_fGasPedal = ReadSaveBuf(buf); - m_fBrakePedal = ReadSaveBuf(buf); - VehicleCreatedBy = ReadSaveBuf(buf); - uint8 flags = ReadSaveBuf(buf); + ReadSaveBuf(&m_fSteerAngle, buf); + ReadSaveBuf(&m_fGasPedal, buf); + ReadSaveBuf(&m_fBrakePedal, buf); + ReadSaveBuf(&VehicleCreatedBy, buf); + uint8 flags; + ReadSaveBuf(&flags, buf); bIsLawEnforcer = !!(flags & BIT(0)); bIsLocked = !!(flags & BIT(3)); bEngineOn = !!(flags & BIT(4)); @@ -1367,16 +1369,17 @@ CVehicle::Load(uint8*& buf) bLightsOn = !!(flags & BIT(6)); bFreebies = !!(flags & BIT(7)); SkipSaveBuf(buf, 10); - m_fHealth = ReadSaveBuf(buf); - m_nCurrentGear = ReadSaveBuf(buf); + ReadSaveBuf(&m_fHealth, buf); + ReadSaveBuf(&m_nCurrentGear, buf); SkipSaveBuf(buf, 3); - m_fChangeGearTime = ReadSaveBuf(buf); + ReadSaveBuf(&m_fChangeGearTime, buf); SkipSaveBuf(buf, 4); - m_nTimeOfDeath = ReadSaveBuf(buf); + ReadSaveBuf(&m_nTimeOfDeath, buf); SkipSaveBuf(buf, 2); - m_nBombTimer = ReadSaveBuf(buf); + ReadSaveBuf(&m_nBombTimer, buf); SkipSaveBuf(buf, 12); - m_nDoorLock = (eCarLock)ReadSaveBuf(buf); + ReadSaveBuf(&flags, buf); + m_nDoorLock = (eCarLock)flags; SkipSaveBuf(buf, 99); } #endif diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index b3909a08..b4d04a4b 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -30,6 +30,7 @@ #include "WaterLevel.h" #include "WeaponInfo.h" #include "World.h" +#include "SaveBuf.h" uint16 gReloadSampleTime[WEAPONTYPE_LAST_WEAPONTYPE] = { From af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 26 Jun 2021 00:25:59 +0300 Subject: [PATCH 160/314] Revert "Redo ReadSaveBuf + common.h cleanup" This reverts commit 2b67aba94cb6448fb24c869559465eddf2bad069. --- src/audio/AudioScriptObject.cpp | 9 +- src/control/AutoPilot.cpp | 54 +++++----- src/control/Garages.cpp | 28 +++--- src/control/Phones.cpp | 11 +-- src/control/Pickups.cpp | 9 +- src/control/Restart.cpp | 30 +++--- src/control/Script5.cpp | 85 +++++++--------- src/core/Pools.cpp | 16 +-- src/core/Radar.cpp | 3 +- src/core/Zones.cpp | 28 +++--- src/core/common.h | 170 ++++++++++++++++++++++++++++++++ src/entities/Entity.cpp | 6 +- src/extras/debugmenu.h | 114 --------------------- src/peds/Gangs.cpp | 3 +- src/peds/Ped.cpp | 1 - src/peds/PedType.cpp | 3 +- src/peds/PlayerPed.cpp | 1 - src/render/Console.h | 2 - src/render/Particle.cpp | 1 - src/save/SaveBuf.h | 64 ------------ src/vehicles/Automobile.cpp | 3 +- src/vehicles/Boat.cpp | 1 - src/vehicles/CarGen.cpp | 20 ++-- src/vehicles/Cranes.cpp | 7 +- src/vehicles/Vehicle.cpp | 65 ++++++------ src/weapons/Weapon.cpp | 1 - 26 files changed, 337 insertions(+), 398 deletions(-) delete mode 100644 src/save/SaveBuf.h diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index 623c43ca..ac30f757 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -3,7 +3,6 @@ #include "AudioScriptObject.h" #include "Pools.h" #include "DMAudio.h" -#include "SaveBuf.h" cAudioScriptObject::cAudioScriptObject() { @@ -54,14 +53,12 @@ cAudioScriptObject::LoadAllAudioScriptObjects(uint8 *buf, uint32 size) CheckSaveHeader(buf, 'A', 'U', 'D', '\0', size - SAVE_HEADER_SIZE); - int32 pool_size; - ReadSaveBuf(&pool_size, buf); + int32 pool_size = ReadSaveBuf(buf); for (int32 i = 0; i < pool_size; i++) { - int32 handle; - ReadSaveBuf(&handle, buf); + int handle = ReadSaveBuf(buf); cAudioScriptObject *p = new(handle) cAudioScriptObject; assert(p != nil); - ReadSaveBuf(p, buf); + *p = ReadSaveBuf(buf); p->AudioEntity = DMAudio.CreateLoopingScriptObject(p); } diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 22a73179..77cbd0b4 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -5,7 +5,6 @@ #include "CarCtrl.h" #include "Curves.h" #include "PathFind.h" -#include "SaveBuf.h" void CAutoPilot::ModifySpeed(float speed) { @@ -89,40 +88,39 @@ void CAutoPilot::Save(uint8*& buf) void CAutoPilot::Load(uint8*& buf) { - ReadSaveBuf(&m_nCurrentRouteNode, buf); - ReadSaveBuf(&m_nNextRouteNode, buf); - ReadSaveBuf(&m_nPrevRouteNode, buf); - ReadSaveBuf(&m_nTimeEnteredCurve, buf); - ReadSaveBuf(&m_nTimeToSpendOnCurrentCurve, buf); - ReadSaveBuf(&m_nCurrentPathNodeInfo, buf); - ReadSaveBuf(&m_nNextPathNodeInfo, buf); - ReadSaveBuf(&m_nPreviousPathNodeInfo, buf); - ReadSaveBuf(&m_nAntiReverseTimer, buf); - ReadSaveBuf(&m_nTimeToStartMission, buf); - ReadSaveBuf(&m_nPreviousDirection, buf); - ReadSaveBuf(&m_nCurrentDirection, buf); - ReadSaveBuf(&m_nNextDirection, buf); - ReadSaveBuf(&m_nCurrentLane, buf); - ReadSaveBuf(&m_nNextLane, buf); - ReadSaveBuf(&m_nDrivingStyle, buf); - ReadSaveBuf(&m_nCarMission, buf); - ReadSaveBuf(&m_nTempAction, buf); - ReadSaveBuf(&m_nTimeTempAction, buf); - ReadSaveBuf(&m_fMaxTrafficSpeed, buf); - ReadSaveBuf(&m_nCruiseSpeed, buf); - uint8 flags; - ReadSaveBuf(&flags, buf); + m_nCurrentRouteNode = ReadSaveBuf(buf); + m_nNextRouteNode = ReadSaveBuf(buf); + m_nPrevRouteNode = ReadSaveBuf(buf); + m_nTimeEnteredCurve = ReadSaveBuf(buf); + m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); + m_nCurrentPathNodeInfo = ReadSaveBuf(buf); + m_nNextPathNodeInfo = ReadSaveBuf(buf); + m_nPreviousPathNodeInfo = ReadSaveBuf(buf); + m_nAntiReverseTimer = ReadSaveBuf(buf); + m_nTimeToStartMission = ReadSaveBuf(buf); + m_nPreviousDirection = ReadSaveBuf(buf); + m_nCurrentDirection = ReadSaveBuf(buf); + m_nNextDirection = ReadSaveBuf(buf); + m_nCurrentLane = ReadSaveBuf(buf); + m_nNextLane = ReadSaveBuf(buf); + m_nDrivingStyle = ReadSaveBuf(buf); + m_nCarMission = ReadSaveBuf(buf); + m_nTempAction = ReadSaveBuf(buf); + m_nTimeTempAction = ReadSaveBuf(buf); + m_fMaxTrafficSpeed = ReadSaveBuf(buf); + m_nCruiseSpeed = ReadSaveBuf(buf); + uint8 flags = ReadSaveBuf(buf); m_bSlowedDownBecauseOfCars = !!(flags & BIT(0)); m_bSlowedDownBecauseOfPeds = !!(flags & BIT(1)); m_bStayInCurrentLevel = !!(flags & BIT(2)); m_bStayInFastLane = !!(flags & BIT(3)); m_bIgnorePathfinding = !!(flags & BIT(4)); SkipSaveBuf(buf, 2); - ReadSaveBuf(&m_vecDestinationCoors.x, buf); - ReadSaveBuf(&m_vecDestinationCoors.y, buf); - ReadSaveBuf(&m_vecDestinationCoors.z, buf); + m_vecDestinationCoors.x = ReadSaveBuf(buf); + m_vecDestinationCoors.y = ReadSaveBuf(buf); + m_vecDestinationCoors.z = ReadSaveBuf(buf); SkipSaveBuf(buf, 32); - ReadSaveBuf(&m_nPathFindNodesCount, buf); + m_nPathFindNodesCount = ReadSaveBuf(buf); SkipSaveBuf(buf, 6); } #endif \ No newline at end of file diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 3410c881..792d3bda 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -24,7 +24,6 @@ #include "Vehicle.h" #include "Wanted.h" #include "World.h" -#include "SaveBuf.h" #define CRUSHER_GARAGE_X1 (1135.5f) #define CRUSHER_GARAGE_Y1 (57.0f) @@ -2362,25 +2361,22 @@ void CGarages::Load(uint8* buf, uint32 size) assert(size == 5484); #endif CloseHideOutGaragesBeforeSave(); - ReadSaveBuf(&NumGarages, buf); - int32 tempInt; - ReadSaveBuf(&tempInt, buf); - BombsAreFree = tempInt ? true : false; - ReadSaveBuf(&tempInt, buf); - RespraysAreFree = tempInt ? true : false; - ReadSaveBuf(&CarsCollected, buf); - ReadSaveBuf(&BankVansCollected, buf); - ReadSaveBuf(&PoliceCarsCollected, buf); + NumGarages = ReadSaveBuf(buf); + BombsAreFree = ReadSaveBuf(buf); + RespraysAreFree = ReadSaveBuf(buf); + CarsCollected = ReadSaveBuf(buf); + BankVansCollected = ReadSaveBuf(buf); + PoliceCarsCollected = ReadSaveBuf(buf); for (int i = 0; i < TOTAL_COLLECTCARS_GARAGES; i++) - ReadSaveBuf(&CarTypesCollected[i], buf); - ReadSaveBuf(&LastTimeHelpMessage, buf); + CarTypesCollected[i] = ReadSaveBuf(buf); + LastTimeHelpMessage = ReadSaveBuf(buf); for (int i = 0; i < NUM_GARAGE_STORED_CARS; i++) { - ReadSaveBuf(&aCarsInSafeHouse1[i], buf); - ReadSaveBuf(&aCarsInSafeHouse2[i], buf); - ReadSaveBuf(&aCarsInSafeHouse3[i], buf); + aCarsInSafeHouse1[i] = ReadSaveBuf(buf); + aCarsInSafeHouse2[i] = ReadSaveBuf(buf); + aCarsInSafeHouse3[i] = ReadSaveBuf(buf); } for (int i = 0; i < NUM_GARAGES; i++) { - ReadSaveBuf(&aGarages[i], buf); + aGarages[i] = ReadSaveBuf(buf); aGarages[i].m_pDoor1 = nil; aGarages[i].m_pDoor2 = nil; aGarages[i].m_pTarget = nil; diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp index f9cb1421..ef7ecead 100644 --- a/src/control/Phones.cpp +++ b/src/control/Phones.cpp @@ -13,7 +13,6 @@ #include "RpAnimBlend.h" #include "AnimBlendAssociation.h" #include "soundlist.h" -#include "SaveBuf.h" #ifdef FIX_BUGS #include "Replay.h" #endif @@ -213,9 +212,8 @@ void CPhoneInfo::Load(uint8 *buf, uint32 size) { INITSAVEBUF - int32 max, scriptPhonesMax; - ReadSaveBuf(&max, buf); - ReadSaveBuf(&scriptPhonesMax, buf); + int max = ReadSaveBuf(buf); + int scriptPhonesMax = ReadSaveBuf(buf); #ifdef PEDS_REPORT_CRIMES_ON_PHONE m_nMax = Min(NUMPHONES, max); @@ -225,8 +223,7 @@ INITSAVEBUF // We can do it without touching saves. We'll only load script phones, others are already loaded in Initialise for (int i = 0; i < 50; i++) { - CPhone phoneToLoad; - ReadSaveBuf(&phoneToLoad, buf); + CPhone phoneToLoad = ReadSaveBuf(buf); if (ignoreOtherPhones) continue; @@ -252,7 +249,7 @@ INITSAVEBUF m_nScriptPhonesMax = scriptPhonesMax; for (int i = 0; i < NUMPHONES; i++) { - ReadSaveBuf(&m_aPhones[i], buf); + m_aPhones[i] = ReadSaveBuf(buf); // It's saved as building pool index in save file, convert it to true entity if (m_aPhones[i].m_pEntity) { m_aPhones[i].m_pEntity = CPools::GetBuildingPool()->GetSlot((uintptr)m_aPhones[i].m_pEntity - 1); diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 10175fba..a1e2a851 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -23,7 +23,6 @@ #ifdef FIX_BUGS #include "Replay.h" #endif -#include "SaveBuf.h" #include "Script.h" #include "Shadows.h" #include "SpecialFX.h" @@ -1000,18 +999,18 @@ CPickups::Load(uint8 *buf, uint32 size) INITSAVEBUF for (int32 i = 0; i < NUMPICKUPS; i++) { - ReadSaveBuf(&aPickUps[i], buf); + aPickUps[i] = ReadSaveBuf(buf); if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((uintptr)aPickUps[i].m_pObject - 1); } - ReadSaveBuf(&CollectedPickUpIndex, buf); - SkipSaveBuf(buf, 2); + CollectedPickUpIndex = ReadSaveBuf(buf); + ReadSaveBuf(buf); NumMessages = 0; for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) - ReadSaveBuf(&aPickUpsCollected[i], buf); + aPickUpsCollected[i] = ReadSaveBuf(buf); VALIDATESAVEBUF(size) } diff --git a/src/control/Restart.cpp b/src/control/Restart.cpp index 2f5e3d45..4ca18c3b 100644 --- a/src/control/Restart.cpp +++ b/src/control/Restart.cpp @@ -1,7 +1,6 @@ #include "common.h" #include "Restart.h" -#include "SaveBuf.h" #include "Zones.h" #include "PathFind.h" @@ -174,28 +173,29 @@ INITSAVEBUF CheckSaveHeader(buf, 'R','S','T','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_RESTART_POINTS; i++) { - ReadSaveBuf(&HospitalRestartPoints[i], buf); - ReadSaveBuf(&HospitalRestartHeadings[i], buf); + HospitalRestartPoints[i] = ReadSaveBuf(buf); + HospitalRestartHeadings[i] = ReadSaveBuf(buf); } for (int i = 0; i < NUM_RESTART_POINTS; i++) { - ReadSaveBuf(&PoliceRestartPoints[i], buf); - ReadSaveBuf(&PoliceRestartHeadings[i], buf); + PoliceRestartPoints[i] = ReadSaveBuf(buf); + PoliceRestartHeadings[i] = ReadSaveBuf(buf); } - ReadSaveBuf(&NumberOfHospitalRestarts, buf); - ReadSaveBuf(&NumberOfPoliceRestarts, buf); - ReadSaveBuf(&bOverrideRestart, buf); + NumberOfHospitalRestarts = ReadSaveBuf(buf); + NumberOfPoliceRestarts = ReadSaveBuf(buf); + bOverrideRestart = ReadSaveBuf(buf); // skip something unused - SkipSaveBuf(buf, 3); + ReadSaveBuf(buf); + ReadSaveBuf(buf); - ReadSaveBuf(&OverridePosition, buf); - ReadSaveBuf(&OverrideHeading, buf); - ReadSaveBuf(&bFadeInAfterNextDeath, buf); - ReadSaveBuf(&bFadeInAfterNextArrest, buf); - ReadSaveBuf(&OverrideHospitalLevel, buf); - ReadSaveBuf(&OverridePoliceStationLevel, buf); + OverridePosition = ReadSaveBuf(buf); + OverrideHeading = ReadSaveBuf(buf); + bFadeInAfterNextDeath = ReadSaveBuf(buf); + bFadeInAfterNextArrest = ReadSaveBuf(buf); + OverrideHospitalLevel = ReadSaveBuf(buf); + OverridePoliceStationLevel = ReadSaveBuf(buf); VALIDATESAVEBUF(size); } diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index a9aec18e..c83c3edc 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -12,7 +12,6 @@ #include "Pools.h" #include "Population.h" #include "RpAnimBlend.h" -#include "SaveBuf.h" #include "Shadows.h" #include "SpecialFX.h" #include "World.h" @@ -2003,25 +2002,21 @@ void CTheScripts::LoadAllScripts(uint8* buf, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buf, 'S', 'C', 'R', '\0', size - SAVE_HEADER_SIZE); - uint32 varSpace, type, handle; - uint32 tmp; - - ReadSaveBuf(&varSpace, buf); + uint32 varSpace = ReadSaveBuf(buf); for (uint32 i = 0; i < varSpace; i++) - ReadSaveBuf(&ScriptSpace[i], buf); - ReadSaveBuf(&tmp, buf); - script_assert(tmp == SCRIPT_DATA_SIZE); - ReadSaveBuf(&OnAMissionFlag, buf); + ScriptSpace[i] = ReadSaveBuf(buf); + script_assert(ReadSaveBuf(buf) == SCRIPT_DATA_SIZE); + OnAMissionFlag = ReadSaveBuf(buf); for (uint32 i = 0; i < MAX_NUM_CONTACTS; i++) { - ReadSaveBuf(&OnAMissionForContactFlag[i], buf); - ReadSaveBuf(&BaseBriefIdForContact[i], buf); + OnAMissionForContactFlag[i] = ReadSaveBuf(buf); + BaseBriefIdForContact[i] = ReadSaveBuf(buf); } for (uint32 i = 0; i < MAX_NUM_COLLECTIVES; i++) - ReadSaveBuf(&CollectiveArray[i], buf); - ReadSaveBuf(&NextFreeCollectiveIndex, buf); + CollectiveArray[i] = ReadSaveBuf(buf); + NextFreeCollectiveIndex = ReadSaveBuf(buf); for (uint32 i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) { - ReadSaveBuf(&type, buf); - ReadSaveBuf(&handle, buf); + uint32 type = ReadSaveBuf(buf); + uint32 handle = ReadSaveBuf(buf); switch (type) { case 0: BuildingSwapArray[i].m_pBuilding = nil; @@ -2035,14 +2030,14 @@ INITSAVEBUF default: script_assert(false); } - ReadSaveBuf(&BuildingSwapArray[i].m_nNewModel, buf); - ReadSaveBuf(&BuildingSwapArray[i].m_nOldModel, buf); + BuildingSwapArray[i].m_nNewModel = ReadSaveBuf(buf); + BuildingSwapArray[i].m_nOldModel = ReadSaveBuf(buf); if (BuildingSwapArray[i].m_pBuilding) BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nNewModel); } for (uint32 i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) { - ReadSaveBuf(&type, buf); - ReadSaveBuf(&handle, buf); + uint32 type = ReadSaveBuf(buf); + uint32 handle = ReadSaveBuf(buf); switch (type) { case 0: InvisibilitySettingArray[i] = nil; @@ -2065,20 +2060,14 @@ INITSAVEBUF if (InvisibilitySettingArray[i]) InvisibilitySettingArray[i]->bIsVisible = false; } - bool tmpBool; - ReadSaveBuf(&tmpBool, buf); - script_assert(tmpBool == bUsingAMultiScriptFile); - SkipSaveBuf(buf, 3); - ReadSaveBuf(&tmp, buf); - script_assert(tmp == MainScriptSize); - ReadSaveBuf(&tmp, buf); - script_assert(tmp == LargestMissionScriptSize); - uint16 tmp16; - ReadSaveBuf(&tmp16, buf); - script_assert(tmp16 == NumberOfMissionScripts); - SkipSaveBuf(buf, 2); - uint32 runningScripts; - ReadSaveBuf(&runningScripts, buf); + script_assert(ReadSaveBuf(buf) == bUsingAMultiScriptFile); + ReadSaveBuf(buf); + ReadSaveBuf(buf); + script_assert(ReadSaveBuf(buf) == MainScriptSize); + script_assert(ReadSaveBuf(buf) == LargestMissionScriptSize); + script_assert(ReadSaveBuf(buf) == NumberOfMissionScripts); + ReadSaveBuf(buf); + uint32 runningScripts = ReadSaveBuf(buf); for (uint32 i = 0; i < runningScripts; i++) StartNewScript(0)->Load(buf); VALIDATESAVEBUF(size) @@ -2126,35 +2115,35 @@ void CRunningScript::Load(uint8*& buf) #ifdef COMPATIBLE_SAVES SkipSaveBuf(buf, 8); for (int i = 0; i < 8; i++) - ReadSaveBuf(&m_abScriptName[i], buf); - ReadSaveBuf(&m_nIp, buf); + m_abScriptName[i] = ReadSaveBuf(buf); + m_nIp = ReadSaveBuf(buf); #ifdef CHECK_STRUCT_SIZES static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6"); #endif for (int i = 0; i < MAX_STACK_DEPTH; i++) - ReadSaveBuf(&m_anStack[i], buf); - ReadSaveBuf(&m_nStackPointer, buf); + m_anStack[i] = ReadSaveBuf(buf); + m_nStackPointer = ReadSaveBuf(buf); SkipSaveBuf(buf, 2); #ifdef CHECK_STRUCT_SIZES static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18"); #endif for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++) - ReadSaveBuf(&m_anLocalVariables[i], buf); - ReadSaveBuf(&m_bCondResult, buf); - ReadSaveBuf(&m_bIsMissionScript, buf); - ReadSaveBuf(&m_bSkipWakeTime, buf); + m_anLocalVariables[i] = ReadSaveBuf(buf); + m_bCondResult = ReadSaveBuf(buf); + m_bIsMissionScript = ReadSaveBuf(buf); + m_bSkipWakeTime = ReadSaveBuf(buf); SkipSaveBuf(buf, 1); - ReadSaveBuf(&m_nWakeTime, buf); - ReadSaveBuf(&m_nAndOrState, buf); - ReadSaveBuf(&m_bNotFlag, buf); - ReadSaveBuf(&m_bDeatharrestEnabled, buf); - ReadSaveBuf(&m_bDeatharrestExecuted, buf); - ReadSaveBuf(&m_bMissionFlag, buf); + m_nWakeTime = ReadSaveBuf(buf); + m_nAndOrState = ReadSaveBuf(buf); + m_bNotFlag = ReadSaveBuf(buf); + m_bDeatharrestEnabled = ReadSaveBuf(buf); + m_bDeatharrestExecuted = ReadSaveBuf(buf); + m_bMissionFlag = ReadSaveBuf(buf); SkipSaveBuf(buf, 2); #else CRunningScript* n = next; CRunningScript* p = prev; - ReadSaveBuf(this, buf); + *this = ReadSaveBuf(buf); next = n; prev = p; #endif diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 5cffe9e4..39cfb1d4 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -9,7 +9,6 @@ #endif #include "Population.h" #include "ProjectileInfo.h" -#include "SaveBuf.h" #include "Streaming.h" #include "Wanted.h" #include "World.h" @@ -131,19 +130,14 @@ CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot) void CPools::LoadVehiclePool(uint8* buf, uint32 size) { INITSAVEBUF - int nNumCars, nNumBoats; - ReadSaveBuf(&nNumCars, buf); - ReadSaveBuf(&nNumBoats, buf); + int nNumCars = ReadSaveBuf(buf); + int nNumBoats = ReadSaveBuf(buf); for (int i = 0; i < nNumCars + nNumBoats; i++) { - uint32 type; - int16 model; - int32 slot; - - ReadSaveBuf(&type, buf); - ReadSaveBuf(&model, buf); + uint32 type = ReadSaveBuf(buf); + int16 model = ReadSaveBuf(buf); CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY); CStreaming::LoadAllRequestedModels(false); - ReadSaveBuf(&slot, buf); + int32 slot = ReadSaveBuf(buf); CVehicle* pVehicle; #ifdef COMPATIBLE_SAVES if (type == VEHICLE_TYPE_BOAT) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 77d6cc7f..8f2c1747 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -16,7 +16,6 @@ #include "Script.h" #include "TxdStore.h" #include "World.h" -#include "SaveBuf.h" #include "Streaming.h" #include "SpecialFX.h" @@ -1056,7 +1055,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUMRADARBLIPS; i++) - ReadSaveBuf(&ms_RadarTrace[i], buf); + ms_RadarTrace[i] = ReadSaveBuf(buf); VALIDATESAVEBUF(size); } diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp index 107b1db8..cdae85e1 100644 --- a/src/core/Zones.cpp +++ b/src/core/Zones.cpp @@ -8,7 +8,6 @@ #include "Text.h" #include "World.h" #include "Timer.h" -#include "SaveBuf.h" eLevelName CTheZones::m_CurrLevel; CZone *CTheZones::m_pPlayersZone; @@ -697,18 +696,17 @@ void CTheZones::LoadAllZones(uint8 *buffer, uint32 size) { INITSAVEBUF - int32 i; + int i; CheckSaveHeader(buffer, 'Z', 'N', 'S', '\0', size - SAVE_HEADER_SIZE); - ReadSaveBuf(&i, buffer); - m_pPlayersZone = GetPointerForZoneIndex(i); - ReadSaveBuf(&m_CurrLevel, buffer); - ReadSaveBuf(&FindIndex, buffer); - SkipSaveBuf(buffer, 2); + m_pPlayersZone = GetPointerForZoneIndex(ReadSaveBuf(buffer)); + m_CurrLevel = ReadSaveBuf(buffer); + FindIndex = ReadSaveBuf(buffer); + ReadSaveBuf(buffer); for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){ - ReadSaveBuf(&ZoneArray[i], buffer); + ZoneArray[i] = ReadSaveBuf(buffer); ZoneArray[i].child = GetPointerForZoneIndex((uintptr)ZoneArray[i].child); ZoneArray[i].parent = GetPointerForZoneIndex((uintptr)ZoneArray[i].parent); @@ -716,13 +714,13 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++) - ReadSaveBuf(&ZoneInfoArray[i], buffer); + ZoneInfoArray[i] = ReadSaveBuf(buffer); - ReadSaveBuf(&TotalNumberOfZones, buffer); - ReadSaveBuf(&TotalNumberOfZoneInfos, buffer); + TotalNumberOfZones = ReadSaveBuf(buffer); + TotalNumberOfZoneInfos = ReadSaveBuf(buffer); for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++){ - ReadSaveBuf(&MapZoneArray[i], buffer); + MapZoneArray[i] = ReadSaveBuf(buffer); /* The call of GetPointerForZoneIndex is wrong, as it is @@ -738,10 +736,10 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(AudioZoneArray); i++) - ReadSaveBuf(&AudioZoneArray[i], buffer); + AudioZoneArray[i] = ReadSaveBuf(buffer); - ReadSaveBuf(&TotalNumberOfMapZones, buffer); - ReadSaveBuf(&NumberOfAudioZones, buffer); + TotalNumberOfMapZones = ReadSaveBuf(buffer); + NumberOfAudioZones = ReadSaveBuf(buffer); VALIDATESAVEBUF(size) } diff --git a/src/core/common.h b/src/core/common.h index 7207f08d..e5077611 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -393,3 +393,173 @@ template struct check_size { #define STR(x) STRINGIFY(x) #define CONCAT_(x,y) x##y #define CONCAT(x,y) CONCAT_(x,y) + +#ifdef DEBUGMENU +// Tweaking stuff for debugmenu +#define TWEAKPATH ___tw___TWEAKPATH +#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; +#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); +#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); + +// interface +class CTweakVar +{ +public: + virtual void AddDBG(const char *path) = 0; +}; + +class CTweakVars +{ +public: + static void Add(CTweakVar *var); + static void AddDBG(const char *path); +}; + +class CTweakFunc : public CTweakVar +{ + const char *m_pPath, *m_pVarName; + void (*m_pFunc)(); +public: + CTweakFunc(void (*pFunc)(), const char *strName, const char *strPath) : + m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) + { + CTweakVars::Add(this); + } + + void AddDBG(const char *path); +}; + +class CTweakBool : public CTweakVar +{ + const char *m_pPath, *m_pVarName; + bool *m_pBoolVar; +public: + CTweakBool(bool *pBool, const char *strName, const char *strPath) : + m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) + { + CTweakVars::Add(this); + } + + void AddDBG(const char *path); +}; + +class CTweakSwitch : public CTweakVar +{ + const char *m_pPath, *m_pVarName; + void *m_pIntVar; + int32 m_nMin, m_nMax; + const char **m_aStr; + void (*m_pFunc)(); +public: + CTweakSwitch(void *pInt, const char *strName, int32 nMin, int32 nMax, const char **aStr, + void (*pFunc)(), const char *strPath) + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), + m_aStr(aStr) + { + CTweakVars::Add(this); + } + + void AddDBG(const char *path); +}; + +#define _TWEEKCLASS(name, type) \ + class name : public CTweakVar \ + { \ + public: \ + const char *m_pPath, *m_pVarName; \ + type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ + \ + name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ + const char *strPath) \ + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ + m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ + \ + { \ + CTweakVars::Add(this); \ + } \ + \ + void AddDBG(const char *path); \ + }; + +_TWEEKCLASS(CTweakInt8, int8); +_TWEEKCLASS(CTweakUInt8, uint8); +_TWEEKCLASS(CTweakInt16, int16); +_TWEEKCLASS(CTweakUInt16, uint16); +_TWEEKCLASS(CTweakInt32, int32); +_TWEEKCLASS(CTweakUInt32, uint32); +_TWEEKCLASS(CTweakFloat, float); + +#undef _TWEEKCLASS +#endif + +#ifdef VALIDATE_SAVE_SIZE +extern int32 _saveBufCount; +#define INITSAVEBUF _saveBufCount = 0; +#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); +#else +#define INITSAVEBUF +#define VALIDATESAVEBUF(b) +#endif + +inline void SkipSaveBuf(uint8 *&buf, int32 skip) +{ + buf += skip; +#ifdef VALIDATE_SAVE_SIZE + _saveBufCount += skip; +#endif +} + +template +inline const T ReadSaveBuf(uint8 *&buf) +{ + T &value = *(T*)buf; + SkipSaveBuf(buf, sizeof(T)); + return value; +} + +template +inline T *WriteSaveBuf(uint8 *&buf, const T &value) +{ + T *p = (T*)buf; + *p = value; + SkipSaveBuf(buf, sizeof(T)); + return p; +} + + +#define SAVE_HEADER_SIZE (4*sizeof(char)+sizeof(uint32)) + +#define WriteSaveHeader(buf,a,b,c,d,size) \ + WriteSaveBuf(buf, a);\ + WriteSaveBuf(buf, b);\ + WriteSaveBuf(buf, c);\ + WriteSaveBuf(buf, d);\ + WriteSaveBuf(buf, size); + +#define CheckSaveHeader(buf,a,b,c,d,size)\ + assert(ReadSaveBuf(buf) == a);\ + assert(ReadSaveBuf(buf) == b);\ + assert(ReadSaveBuf(buf) == c);\ + assert(ReadSaveBuf(buf) == d);\ + assert(ReadSaveBuf(buf) == size); + + +void cprintf(char*, ...); diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index a7f4bd45..9d5bf73c 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -22,7 +22,6 @@ #include "MemoryHeap.h" #include "Bones.h" #include "Debug.h" -#include "SaveBuf.h" int gBuildings; @@ -754,8 +753,7 @@ CEntity::SaveEntityFlags(uint8*& buf) void CEntity::LoadEntityFlags(uint8*& buf) { - uint32 tmp; - ReadSaveBuf(&tmp, buf); + uint32 tmp = ReadSaveBuf(buf); m_type = (tmp & ((BIT(3) - 1))); m_status = ((tmp >> 3) & (BIT(5) - 1)); @@ -786,7 +784,7 @@ CEntity::LoadEntityFlags(uint8*& buf) bZoneCulled = !!(tmp & BIT(30)); bZoneCulled2 = !!(tmp & BIT(31)); - ReadSaveBuf(&tmp, buf); + tmp = ReadSaveBuf(buf); bRemoveFromWorld = !!(tmp & BIT(0)); bHasHitWall = !!(tmp & BIT(1)); diff --git a/src/extras/debugmenu.h b/src/extras/debugmenu.h index 45b65d04..c2198aca 100644 --- a/src/extras/debugmenu.h +++ b/src/extras/debugmenu.h @@ -2,120 +2,6 @@ #ifdef DEBUGMENU -// Tweaking stuff for debugmenu -#define TWEAKPATH ___tw___TWEAKPATH -#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; -#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); -#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); - -// interface -class CTweakVar -{ -public: - virtual void AddDBG(const char* path) = 0; -}; - -class CTweakVars -{ -public: - static void Add(CTweakVar* var); - static void AddDBG(const char* path); -}; - -class CTweakFunc : public CTweakVar -{ - const char* m_pPath, * m_pVarName; - void (*m_pFunc)(); -public: - CTweakFunc(void (*pFunc)(), const char* strName, const char* strPath) : - m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) - { - CTweakVars::Add(this); - } - - void AddDBG(const char* path); -}; - -class CTweakBool : public CTweakVar -{ - const char* m_pPath, * m_pVarName; - bool* m_pBoolVar; -public: - CTweakBool(bool* pBool, const char* strName, const char* strPath) : - m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) - { - CTweakVars::Add(this); - } - - void AddDBG(const char* path); -}; - -class CTweakSwitch : public CTweakVar -{ - const char* m_pPath, * m_pVarName; - void* m_pIntVar; - int32 m_nMin, m_nMax; - const char** m_aStr; - void (*m_pFunc)(); -public: - CTweakSwitch(void* pInt, const char* strName, int32 nMin, int32 nMax, const char** aStr, - void (*pFunc)(), const char* strPath) - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), - m_aStr(aStr) - { - CTweakVars::Add(this); - } - - void AddDBG(const char* path); -}; - -#define _TWEEKCLASS(name, type) \ - class name : public CTweakVar \ - { \ - public: \ - const char *m_pPath, *m_pVarName; \ - type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ - \ - name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ - const char *strPath) \ - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ - m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ - \ - { \ - CTweakVars::Add(this); \ - } \ - \ - void AddDBG(const char *path); \ - }; - -_TWEEKCLASS(CTweakInt8, int8); -_TWEEKCLASS(CTweakUInt8, uint8); -_TWEEKCLASS(CTweakInt16, int16); -_TWEEKCLASS(CTweakUInt16, uint16); -_TWEEKCLASS(CTweakInt32, int32); -_TWEEKCLASS(CTweakUInt32, uint32); -_TWEEKCLASS(CTweakFloat, float); - -#undef _TWEEKCLASS - typedef void (*TriggerFunc)(void); struct Menu; diff --git a/src/peds/Gangs.cpp b/src/peds/Gangs.cpp index be29379c..8859e61e 100644 --- a/src/peds/Gangs.cpp +++ b/src/peds/Gangs.cpp @@ -3,7 +3,6 @@ #include "ModelIndices.h" #include "Gangs.h" #include "Weapon.h" -#include "SaveBuf.h" CGangInfo CGangs::Gang[NUM_GANGS]; @@ -73,6 +72,6 @@ INITSAVEBUF CheckSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_GANGS; i++) - ReadSaveBuf(&Gang[i], buf); + Gang[i] = ReadSaveBuf(buf); VALIDATESAVEBUF(size); } diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 8e55510c..5e1fb842 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -32,7 +32,6 @@ #include "Floater.h" #include "Range2D.h" #include "Wanted.h" -#include "SaveBuf.h" CPed *gapTempPedList[50]; uint16 gnNumTempPedList; diff --git a/src/peds/PedType.cpp b/src/peds/PedType.cpp index dcd4c717..bacb1a78 100644 --- a/src/peds/PedType.cpp +++ b/src/peds/PedType.cpp @@ -3,7 +3,6 @@ #include "General.h" #include "FileMgr.h" #include "PedType.h" -#include "SaveBuf.h" CPedType *CPedType::ms_apPedType[NUM_PEDTYPES]; CPedStats *CPedStats::ms_apPedStats[NUM_PEDSTATS]; @@ -202,7 +201,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'P', 'T', 'P', '\0', size - SAVE_HEADER_SIZE); for(int i = 0; i < NUM_PEDTYPES; i++) - ReadSaveBuf(ms_apPedType[i], buf); + *ms_apPedType[i] = ReadSaveBuf(buf); VALIDATESAVEBUF(size) } diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index a67e2abc..46578486 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -16,7 +16,6 @@ #include "Pools.h" #include "Darkel.h" #include "CarCtrl.h" -#include "SaveBuf.h" #define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f diff --git a/src/render/Console.h b/src/render/Console.h index 9f22236f..b4fa60c4 100644 --- a/src/render/Console.h +++ b/src/render/Console.h @@ -23,5 +23,3 @@ public: }; extern CConsole TheConsole; - -void cprintf(char*, ...); \ No newline at end of file diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index c971955f..07e80abe 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -14,7 +14,6 @@ #include "ParticleObject.h" #include "Particle.h" #include "soundlist.h" -#include "debugmenu.h" #define MAX_PARTICLES_ON_SCREEN (1000) diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h deleted file mode 100644 index ed48a650..00000000 --- a/src/save/SaveBuf.h +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once - -#ifdef VALIDATE_SAVE_SIZE -extern int32 _saveBufCount; -#define INITSAVEBUF _saveBufCount = 0; -#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); -#else -#define INITSAVEBUF -#define VALIDATESAVEBUF(b) -#endif - -inline void -SkipSaveBuf(uint8 *&buf, int32 skip) -{ - buf += skip; -#ifdef VALIDATE_SAVE_SIZE - _saveBufCount += skip; -#endif -} - -template -inline void -ReadSaveBuf(T* out, uint8 *&buf) -{ - *out = *(T *)buf; - SkipSaveBuf(buf, sizeof(T)); -} - -template -inline T * -WriteSaveBuf(uint8 *&buf, const T &value) -{ - T *p = (T *)buf; - *p = value; - SkipSaveBuf(buf, sizeof(T)); - return p; -} - -#define SAVE_HEADER_SIZE (4 * sizeof(char) + sizeof(uint32)) - -#define WriteSaveHeader(buf, a, b, c, d, size) \ - WriteSaveBuf(buf, a); \ - WriteSaveBuf(buf, b); \ - WriteSaveBuf(buf, c); \ - WriteSaveBuf(buf, d); \ - WriteSaveBuf(buf, (uint32)size); - -#ifdef VALIDATE_SAVE_SIZE -#define CheckSaveHeader(buf, a, b, c, d, size) { \ - char _C; uint32 _size;\ - ReadSaveBuf(&_C, buf);\ - assert(_C == a);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == b);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == c);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == d);\ - ReadSaveBuf(&_size, buf);\ - assert(_size == size);\ - } -#else -#define CheckSaveHeader(buf, a, b, c, d, size) SkipSaveBuf(buf, 8); -#endif \ No newline at end of file diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 7be6ed0b..c29c0536 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -45,7 +45,6 @@ #include "Object.h" #include "Automobile.h" #include "Wanted.h" -#include "SaveBuf.h" bool bAllCarCheat; // unused @@ -4725,7 +4724,7 @@ void CAutomobile::Load(uint8*& buf) { CVehicle::Load(buf); - ReadSaveBuf(&Damage, buf); + Damage = ReadSaveBuf(buf); SkipSaveBuf(buf, 800 - sizeof(CDamageManager)); SetupDamageAfterLoad(); } diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index bbe17f0b..4bbbadbd 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -19,7 +19,6 @@ #include "Pools.h" #include "Pad.h" #include "Boat.h" -#include "SaveBuf.h" #define INVALID_ORIENTATION (-9999.99f) diff --git a/src/vehicles/CarGen.cpp b/src/vehicles/CarGen.cpp index 22b2fc60..7524444b 100644 --- a/src/vehicles/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -13,7 +13,6 @@ #include "Timer.h" #include "Vehicle.h" #include "World.h" -#include "SaveBuf.h" uint8 CTheCarGenerators::ProcessCounter; uint32 CTheCarGenerators::NumOfCarGenerators; @@ -255,17 +254,14 @@ void CTheCarGenerators::LoadAllCarGenerators(uint8* buffer, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buffer, 'C','G','N','\0', size - SAVE_HEADER_SIZE); - uint32 tmp; - ReadSaveBuf(&tmp, buffer); - assert(tmp == nGeneralDataSize); - ReadSaveBuf(&NumOfCarGenerators, buffer); - ReadSaveBuf(&CurrentActiveCount, buffer); - ReadSaveBuf(&ProcessCounter, buffer); - ReadSaveBuf(&GenerateEvenIfPlayerIsCloseCounter, buffer); - SkipSaveBuf(buffer, 2); - ReadSaveBuf(&tmp, buffer); - assert(tmp == sizeof(CarGeneratorArray)); + assert(ReadSaveBuf(buffer) == nGeneralDataSize); + NumOfCarGenerators = ReadSaveBuf(buffer); + CurrentActiveCount = ReadSaveBuf(buffer); + ProcessCounter = ReadSaveBuf(buffer); + GenerateEvenIfPlayerIsCloseCounter = ReadSaveBuf(buffer); + ReadSaveBuf(buffer); // alignment + assert(ReadSaveBuf(buffer) == sizeof(CarGeneratorArray)); for (int i = 0; i < NUM_CARGENS; i++) - ReadSaveBuf(&CarGeneratorArray[i], buffer); + CarGeneratorArray[i] = ReadSaveBuf(buffer); VALIDATESAVEBUF(size) } diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index 0f1b8b4c..0c7913af 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -11,7 +11,6 @@ #include "Replay.h" #include "Object.h" #include "World.h" -#include "SaveBuf.h" #define MAX_DISTANCE_TO_FIND_CRANE (10.0f) #define CRANE_UPDATE_RADIUS (300.0f) @@ -654,10 +653,10 @@ void CCranes::Load(uint8* buf, uint32 size) { INITSAVEBUF - ReadSaveBuf(&NumCranes, buf); - ReadSaveBuf(&CarsCollectedMilitaryCrane, buf); + NumCranes = ReadSaveBuf(buf); + CarsCollectedMilitaryCrane = ReadSaveBuf(buf); for (int i = 0; i < NUM_CRANES; i++) - ReadSaveBuf(&aCranes[i], buf); + aCranes[i] = ReadSaveBuf(buf); for (int i = 0; i < NUM_CRANES; i++) { CCrane *pCrane = &aCranes[i]; if (pCrane->m_pCraneEntity != nil) diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 8112f0fe..8885485d 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -18,7 +18,6 @@ #include "Radar.h" #include "Fire.h" #include "Darkel.h" -#include "SaveBuf.h" bool CVehicle::bWheelsOnlyCheat; bool CVehicle::bAllDodosCheat; @@ -1324,44 +1323,43 @@ CVehicle::Load(uint8*& buf) { CMatrix tmp; SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetRight().x, buf); - ReadSaveBuf(&tmp.GetRight().y, buf); - ReadSaveBuf(&tmp.GetRight().z, buf); + tmp.GetRight().x = ReadSaveBuf(buf); + tmp.GetRight().y = ReadSaveBuf(buf); + tmp.GetRight().z = ReadSaveBuf(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetForward().x, buf); - ReadSaveBuf(&tmp.GetForward().y, buf); - ReadSaveBuf(&tmp.GetForward().z, buf); + tmp.GetForward().x = ReadSaveBuf(buf); + tmp.GetForward().y = ReadSaveBuf(buf); + tmp.GetForward().z = ReadSaveBuf(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetUp().x, buf); - ReadSaveBuf(&tmp.GetUp().y, buf); - ReadSaveBuf(&tmp.GetUp().z, buf); + tmp.GetUp().x = ReadSaveBuf(buf); + tmp.GetUp().y = ReadSaveBuf(buf); + tmp.GetUp().z = ReadSaveBuf(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&tmp.GetPosition().x, buf); - ReadSaveBuf(&tmp.GetPosition().y, buf); - ReadSaveBuf(&tmp.GetPosition().z, buf); + tmp.GetPosition().x = ReadSaveBuf(buf); + tmp.GetPosition().y = ReadSaveBuf(buf); + tmp.GetPosition().z = ReadSaveBuf(buf); m_matrix = tmp; SkipSaveBuf(buf, 16); LoadEntityFlags(buf); SkipSaveBuf(buf, 212); AutoPilot.Load(buf); - ReadSaveBuf(&m_currentColour1, buf); - ReadSaveBuf(&m_currentColour2, buf); + m_currentColour1 = ReadSaveBuf(buf); + m_currentColour2 = ReadSaveBuf(buf); SkipSaveBuf(buf, 2); - ReadSaveBuf(&m_nAlarmState, buf); + m_nAlarmState = ReadSaveBuf(buf); SkipSaveBuf(buf, 43); - ReadSaveBuf(&m_nNumMaxPassengers, buf); + m_nNumMaxPassengers = ReadSaveBuf(buf); SkipSaveBuf(buf, 2); - ReadSaveBuf(&field_1D0[0], buf); - ReadSaveBuf(&field_1D0[1], buf); - ReadSaveBuf(&field_1D0[2], buf); - ReadSaveBuf(&field_1D0[3], buf); + field_1D0[0] = ReadSaveBuf(buf); + field_1D0[1] = ReadSaveBuf(buf); + field_1D0[2] = ReadSaveBuf(buf); + field_1D0[3] = ReadSaveBuf(buf); SkipSaveBuf(buf, 8); - ReadSaveBuf(&m_fSteerAngle, buf); - ReadSaveBuf(&m_fGasPedal, buf); - ReadSaveBuf(&m_fBrakePedal, buf); - ReadSaveBuf(&VehicleCreatedBy, buf); - uint8 flags; - ReadSaveBuf(&flags, buf); + m_fSteerAngle = ReadSaveBuf(buf); + m_fGasPedal = ReadSaveBuf(buf); + m_fBrakePedal = ReadSaveBuf(buf); + VehicleCreatedBy = ReadSaveBuf(buf); + uint8 flags = ReadSaveBuf(buf); bIsLawEnforcer = !!(flags & BIT(0)); bIsLocked = !!(flags & BIT(3)); bEngineOn = !!(flags & BIT(4)); @@ -1369,17 +1367,16 @@ CVehicle::Load(uint8*& buf) bLightsOn = !!(flags & BIT(6)); bFreebies = !!(flags & BIT(7)); SkipSaveBuf(buf, 10); - ReadSaveBuf(&m_fHealth, buf); - ReadSaveBuf(&m_nCurrentGear, buf); + m_fHealth = ReadSaveBuf(buf); + m_nCurrentGear = ReadSaveBuf(buf); SkipSaveBuf(buf, 3); - ReadSaveBuf(&m_fChangeGearTime, buf); + m_fChangeGearTime = ReadSaveBuf(buf); SkipSaveBuf(buf, 4); - ReadSaveBuf(&m_nTimeOfDeath, buf); + m_nTimeOfDeath = ReadSaveBuf(buf); SkipSaveBuf(buf, 2); - ReadSaveBuf(&m_nBombTimer, buf); + m_nBombTimer = ReadSaveBuf(buf); SkipSaveBuf(buf, 12); - ReadSaveBuf(&flags, buf); - m_nDoorLock = (eCarLock)flags; + m_nDoorLock = (eCarLock)ReadSaveBuf(buf); SkipSaveBuf(buf, 99); } #endif diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index b4d04a4b..b3909a08 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -30,7 +30,6 @@ #include "WaterLevel.h" #include "WeaponInfo.h" #include "World.h" -#include "SaveBuf.h" uint16 gReloadSampleTime[WEAPONTYPE_LAST_WEAPONTYPE] = { From 9b5caa190e30131e361e77e0921653d13f5d124f Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 26 Jun 2021 00:27:12 +0300 Subject: [PATCH 161/314] Pool fixes Mostly for Linux --- src/audio/AudioScriptObject.cpp | 8 ++++---- src/audio/AudioScriptObject.h | 8 ++++---- src/buildings/Building.cpp | 4 ++-- src/buildings/Building.h | 4 ++-- src/buildings/Treadable.cpp | 4 ++-- src/buildings/Treadable.h | 4 ++-- src/core/Placeable.h | 2 +- src/entities/Dummy.cpp | 4 ++-- src/entities/Dummy.h | 4 ++-- src/objects/Object.cpp | 30 ++++++++++++++++++++++++++---- src/objects/Object.h | 8 ++++---- src/peds/Ped.cpp | 8 ++++---- src/peds/Ped.h | 8 ++++---- src/rw/MemoryMgr.cpp | 8 ++++---- src/vehicles/Vehicle.cpp | 8 ++++---- src/vehicles/Vehicle.h | 8 ++++---- 16 files changed, 71 insertions(+), 49 deletions(-) diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index ac30f757..c74feb92 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -23,25 +23,25 @@ cAudioScriptObject::Reset() } void * -cAudioScriptObject::operator new(size_t sz) +cAudioScriptObject::operator new(size_t sz) throw() { return CPools::GetAudioScriptObjectPool()->New(); } void * -cAudioScriptObject::operator new(size_t sz, int handle) +cAudioScriptObject::operator new(size_t sz, int handle) throw() { return CPools::GetAudioScriptObjectPool()->New(handle); } void -cAudioScriptObject::operator delete(void *p, size_t sz) +cAudioScriptObject::operator delete(void *p, size_t sz) throw() { CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject *)p); } void -cAudioScriptObject::operator delete(void *p, int handle) +cAudioScriptObject::operator delete(void *p, int handle) throw() { CPools::GetAudioScriptObjectPool()->Delete((cAudioScriptObject *)p); } diff --git a/src/audio/AudioScriptObject.h b/src/audio/AudioScriptObject.h index 8110b2bb..b9a7e61b 100644 --- a/src/audio/AudioScriptObject.h +++ b/src/audio/AudioScriptObject.h @@ -12,10 +12,10 @@ public: void Reset(); /// ok - static void* operator new(size_t); - static void* operator new(size_t, int); - static void operator delete(void*, size_t); - static void operator delete(void*, int); + static void* operator new(size_t) throw(); + static void* operator new(size_t, int) throw(); + static void operator delete(void*, size_t) throw(); + static void operator delete(void*, int) throw(); static void LoadAllAudioScriptObjects(uint8 *buf, uint32 size); static void SaveAllAudioScriptObjects(uint8 *buf, uint32 *size); diff --git a/src/buildings/Building.cpp b/src/buildings/Building.cpp index 00bbb21e..e4475ae6 100644 --- a/src/buildings/Building.cpp +++ b/src/buildings/Building.cpp @@ -4,8 +4,8 @@ #include "Streaming.h" #include "Pools.h" -void *CBuilding::operator new(size_t sz) { return CPools::GetBuildingPool()->New(); } -void CBuilding::operator delete(void *p, size_t sz) { CPools::GetBuildingPool()->Delete((CBuilding*)p); } +void *CBuilding::operator new(size_t sz) throw() { return CPools::GetBuildingPool()->New(); } +void CBuilding::operator delete(void *p, size_t sz) throw() { CPools::GetBuildingPool()->Delete((CBuilding*)p); } void CBuilding::ReplaceWithNewModel(int32 id) diff --git a/src/buildings/Building.h b/src/buildings/Building.h index 3586a8dc..94e66c89 100644 --- a/src/buildings/Building.h +++ b/src/buildings/Building.h @@ -9,8 +9,8 @@ public: m_type = ENTITY_TYPE_BUILDING; bUsesCollision = true; } - static void *operator new(size_t); - static void operator delete(void*, size_t); + static void *operator new(size_t) throw(); + static void operator delete(void*, size_t) throw(); void ReplaceWithNewModel(int32 id); diff --git a/src/buildings/Treadable.cpp b/src/buildings/Treadable.cpp index 00abbe13..d84603a6 100644 --- a/src/buildings/Treadable.cpp +++ b/src/buildings/Treadable.cpp @@ -4,5 +4,5 @@ #include "Treadable.h" #include "Pools.h" -void *CTreadable::operator new(size_t sz) { return CPools::GetTreadablePool()->New(); } -void CTreadable::operator delete(void *p, size_t sz) { CPools::GetTreadablePool()->Delete((CTreadable*)p); } +void *CTreadable::operator new(size_t sz) throw() { return CPools::GetTreadablePool()->New(); } +void CTreadable::operator delete(void *p, size_t sz) throw() { CPools::GetTreadablePool()->Delete((CTreadable*)p); } diff --git a/src/buildings/Treadable.h b/src/buildings/Treadable.h index c3160f47..9e895969 100644 --- a/src/buildings/Treadable.h +++ b/src/buildings/Treadable.h @@ -5,8 +5,8 @@ class CTreadable : public CBuilding { public: - static void *operator new(size_t); - static void operator delete(void*, size_t); + static void *operator new(size_t) throw(); + static void operator delete(void*, size_t) throw(); int16 m_nodeIndices[2][12]; // first car, then ped diff --git a/src/core/Placeable.h b/src/core/Placeable.h index d5ad94c9..2f246bc5 100644 --- a/src/core/Placeable.h +++ b/src/core/Placeable.h @@ -7,7 +7,7 @@ protected: public: // disable allocation - static void *operator new(size_t); + static void *operator new(size_t) throw(); CPlaceable(void); virtual ~CPlaceable(void); diff --git a/src/entities/Dummy.cpp b/src/entities/Dummy.cpp index 8a4bfd5f..d5fad3e4 100644 --- a/src/entities/Dummy.cpp +++ b/src/entities/Dummy.cpp @@ -4,8 +4,8 @@ #include "World.h" #include "Dummy.h" -void *CDummy::operator new(size_t sz) { return CPools::GetDummyPool()->New(); } -void CDummy::operator delete(void *p, size_t sz) { CPools::GetDummyPool()->Delete((CDummy*)p); } +void *CDummy::operator new(size_t sz) throw() { return CPools::GetDummyPool()->New(); } +void CDummy::operator delete(void *p, size_t sz) throw() { CPools::GetDummyPool()->Delete((CDummy*)p); } void CDummy::Add(void) diff --git a/src/entities/Dummy.h b/src/entities/Dummy.h index 3717a01c..6c3f12ea 100644 --- a/src/entities/Dummy.h +++ b/src/entities/Dummy.h @@ -12,8 +12,8 @@ public: void Add(void); void Remove(void); - static void *operator new(size_t); - static void operator delete(void*, size_t); + static void *operator new(size_t) throw(); + static void operator delete(void*, size_t) throw(); }; VALIDATE_SIZE(CDummy, 0x68); diff --git a/src/objects/Object.cpp b/src/objects/Object.cpp index 85936bb8..2a7de2c7 100644 --- a/src/objects/Object.cpp +++ b/src/objects/Object.cpp @@ -16,10 +16,32 @@ int16 CObject::nNoTempObjects; int16 CObject::nBodyCastHealth = 1000; -void *CObject::operator new(size_t sz) { return CPools::GetObjectPool()->New(); } -void *CObject::operator new(size_t sz, int handle) { return CPools::GetObjectPool()->New(handle);}; -void CObject::operator delete(void *p, size_t sz) { CPools::GetObjectPool()->Delete((CObject*)p); } -void CObject::operator delete(void *p, int handle) { CPools::GetObjectPool()->Delete((CObject*)p); } +// Object pools tends to be full sometimes, let's free a temp. object in this case. +#ifdef FIX_BUGS +void *CObject::operator new(size_t sz) throw() { + CObject *obj = CPools::GetObjectPool()->New(); + if (!obj) { + CObjectPool *objectPool = CPools::GetObjectPool(); + for (int32 i = 0; i < objectPool->GetSize(); i++) { + CObject *existing = objectPool->GetSlot(i); + if (existing && existing->ObjectCreatedBy == TEMP_OBJECT) { + int32 handle = objectPool->GetIndex(existing); + CWorld::Remove(existing); + delete existing; + obj = objectPool->New(handle); + break; + } + } + } + return obj; +} +#else +void *CObject::operator new(size_t sz) throw() { return CPools::GetObjectPool()->New(); } +#endif +void *CObject::operator new(size_t sz, int handle) throw() { return CPools::GetObjectPool()->New(handle); }; + +void CObject::operator delete(void *p, size_t sz) throw() { CPools::GetObjectPool()->Delete((CObject*)p); } +void CObject::operator delete(void *p, int handle) throw() { CPools::GetObjectPool()->Delete((CObject*)p); } CObject::CObject(void) { diff --git a/src/objects/Object.h b/src/objects/Object.h index c9a1bba8..114a1a9f 100644 --- a/src/objects/Object.h +++ b/src/objects/Object.h @@ -65,10 +65,10 @@ public: static int16 nNoTempObjects; static int16 nBodyCastHealth; - static void *operator new(size_t); - static void *operator new(size_t, int); - static void operator delete(void*, size_t); - static void operator delete(void*, int); + static void *operator new(size_t) throw(); + static void *operator new(size_t, int) throw(); + static void operator delete(void*, size_t) throw(); + static void operator delete(void*, int) throw(); CObject(void); CObject(int32, bool); diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 5e1fb842..5b25c92e 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -47,10 +47,10 @@ bool CPed::bPedCheat2; bool CPed::bPedCheat3; CVector2D CPed::ms_vec2DFleePosition; -void *CPed::operator new(size_t sz) { return CPools::GetPedPool()->New(); } -void *CPed::operator new(size_t sz, int handle) { return CPools::GetPedPool()->New(handle); } -void CPed::operator delete(void *p, size_t sz) { CPools::GetPedPool()->Delete((CPed*)p); } -void CPed::operator delete(void *p, int handle) { CPools::GetPedPool()->Delete((CPed*)p); } +void *CPed::operator new(size_t sz) throw() { return CPools::GetPedPool()->New(); } +void *CPed::operator new(size_t sz, int handle) throw() { return CPools::GetPedPool()->New(handle); } +void CPed::operator delete(void *p, size_t sz) throw() { CPools::GetPedPool()->Delete((CPed*)p); } +void CPed::operator delete(void *p, int handle) throw() { CPools::GetPedPool()->Delete((CPed*)p); } #ifdef DEBUGMENU bool CPed::bPopHeadsOnHeadshot = false; diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 0617a7bb..6d32b65e 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -515,10 +515,10 @@ public: CVector m_vecSeekPosEx; // used for OBJECTIVE_GUARD_SPOT float m_distanceToCountSeekDoneEx; // used for OBJECTIVE_GUARD_SPOT - static void *operator new(size_t); - static void *operator new(size_t, int); - static void operator delete(void*, size_t); - static void operator delete(void*, int); + static void *operator new(size_t) throw(); + static void *operator new(size_t, int) throw(); + static void operator delete(void*, size_t) throw(); + static void operator delete(void*, int) throw(); CPed(uint32 pedType); ~CPed(void); diff --git a/src/rw/MemoryMgr.cpp b/src/rw/MemoryMgr.cpp index 2379692c..b9cff043 100644 --- a/src/rw/MemoryMgr.cpp +++ b/src/rw/MemoryMgr.cpp @@ -28,10 +28,10 @@ RwMemoryFunctions memFuncs = { #ifdef USE_CUSTOM_ALLOCATOR // game seems to be using heap directly here, but this is nicer -void *operator new(size_t sz) { return MemoryMgrMalloc(sz); } -void *operator new[](size_t sz) { return MemoryMgrMalloc(sz); } -void operator delete(void *ptr) noexcept { MemoryMgrFree(ptr); } -void operator delete[](void *ptr) noexcept { MemoryMgrFree(ptr); } +void *operator new(size_t sz) throw() { return MemoryMgrMalloc(sz); } +void *operator new[](size_t sz) throw() { return MemoryMgrMalloc(sz); } +void operator delete(void *ptr) throw() { MemoryMgrFree(ptr); } +void operator delete[](void *ptr) throw() { MemoryMgrFree(ptr); } #endif void* diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 8885485d..fee2eb10 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -29,10 +29,10 @@ bool CVehicle::bAltDodoCheat; #endif bool CVehicle::m_bDisableMouseSteering = true; -void *CVehicle::operator new(size_t sz) { return CPools::GetVehiclePool()->New(); } -void *CVehicle::operator new(size_t sz, int handle) { return CPools::GetVehiclePool()->New(handle); } -void CVehicle::operator delete(void *p, size_t sz) { CPools::GetVehiclePool()->Delete((CVehicle*)p); } -void CVehicle::operator delete(void *p, int handle) { CPools::GetVehiclePool()->Delete((CVehicle*)p); } +void *CVehicle::operator new(size_t sz) throw() { return CPools::GetVehiclePool()->New(); } +void *CVehicle::operator new(size_t sz, int handle) throw() { return CPools::GetVehiclePool()->New(handle); } +void CVehicle::operator delete(void *p, size_t sz) throw() { CPools::GetVehiclePool()->Delete((CVehicle*)p); } +void CVehicle::operator delete(void *p, int handle) throw() { CPools::GetVehiclePool()->Delete((CVehicle*)p); } #ifdef FIX_BUGS // I think they meant that diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index fcfa3401..e7ad5c13 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -193,10 +193,10 @@ public: float m_fSteerInput; eVehicleType m_vehType; - static void *operator new(size_t); - static void *operator new(size_t sz, int slot); - static void operator delete(void*, size_t); - static void operator delete(void*, int); + static void *operator new(size_t) throw(); + static void *operator new(size_t sz, int slot) throw(); + static void operator delete(void*, size_t) throw(); + static void operator delete(void*, int) throw(); CVehicle(void) {} // FAKE CVehicle(uint8 CreatedBy); From 3092b9a46e5d23c8eccef8fc5a96aab943952e5e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 26 Jun 2021 01:56:29 +0300 Subject: [PATCH 162/314] Small timer fix --- src/core/Timer.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/core/Timer.cpp b/src/core/Timer.cpp index cf060127..e4f5b01e 100644 --- a/src/core/Timer.cpp +++ b/src/core/Timer.cpp @@ -105,7 +105,7 @@ void CTimer::Update(void) _oldPerfCounter = pc; // bugfix from VC - float updInCyclesScaled = GetIsPaused() ? updInCycles : updInCycles * ms_fTimeScale; + double updInCyclesScaled = GetIsPaused() ? updInCycles : updInCycles * ms_fTimeScale; frameTime = updInCyclesScaled / (double)_nCyclesPerMS; @@ -117,8 +117,9 @@ void CTimer::Update(void) RsTimerType timer = RsTimer(); RsTimerType updInMs = timer - oldPcTimer; - - frameTime = (double)updInMs * ms_fTimeScale; + + // bugfix from VC + frameTime = GetIsPaused() ? (double)updInMs : (double)updInMs * ms_fTimeScale; oldPcTimer = timer; From 6cb8c11285d742e5ac262e15361fa25cf4567b27 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 26 Jun 2021 04:09:45 +0300 Subject: [PATCH 163/314] Fix premature CTimer calls --- src/core/Frontend.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 3057ceac..ec4e33ef 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -3528,9 +3528,15 @@ CMenuManager::InitialiseChangedLanguageSettings() { if (m_bFrontEnd_ReloadObrTxtGxt) { m_bFrontEnd_ReloadObrTxtGxt = false; +#ifdef FIX_BUGS + if (gGameState > GS_INIT_ONCE) +#endif CTimer::Stop(); TheText.Unload(); TheText.Load(); +#ifdef FIX_BUGS + if (gGameState > GS_INIT_ONCE) +#endif CTimer::Update(); CGame::frenchGame = false; CGame::germanGame = false; From fff899ec16420c3b501c1210f061b9400a0c68ff Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 26 Jun 2021 03:19:52 +0200 Subject: [PATCH 164/314] fix tabs in premake --- premake5.lua | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/premake5.lua b/premake5.lua index 973ac05d..7fc21907 100644 --- a/premake5.lua +++ b/premake5.lua @@ -110,7 +110,7 @@ workspace "re3" filter "configurations:Debug" defines { "DEBUG" } - + filter "configurations:not Debug" defines { "NDEBUG" } optimize "Speed" @@ -126,16 +126,16 @@ workspace "re3" filter { "platforms:linux*" } system "linux" - + filter { "platforms:bsd*" } system "bsd" filter { "platforms:macosx*" } system "macosx" - + filter { "platforms:*x86*" } architecture "x86" - + filter { "platforms:*amd64*" } architecture "amd64" @@ -153,21 +153,21 @@ workspace "re3" if(not _OPTIONS["with-librw"]) then libdirs { path.join(Librw, "lib/win-%{getarch(cfg.architecture)}-d3d9/%{cfg.buildcfg}") } end - + filter "platforms:*librw_gl3_glfw*" defines { "RW_GL3" } if(not _OPTIONS["with-librw"]) then libdirs { path.join(Librw, "lib/%{getsys(cfg.system)}-%{getarch(cfg.architecture)}-gl3/%{cfg.buildcfg}") } end - + filter "platforms:*x86-librw_gl3_glfw*" includedirs { path.join(_OPTIONS["glfwdir32"], "include") } - + filter "platforms:*amd64-librw_gl3_glfw*" includedirs { path.join(_OPTIONS["glfwdir64"], "include") } filter {} - + function setpaths (gamepath, exepath) if (gamepath) then postbuildcommands { @@ -191,7 +191,7 @@ project "librw" files { path.join(Librw, "src/*.*") } files { path.join(Librw, "src/*/*.*") } files { path.join(Librw, "src/gl/*/*.*") } - + filter { "platforms:*x86*" } architecture "x86" @@ -216,7 +216,7 @@ project "librw" filter "platforms:*gl3_glfw*" staticruntime "off" - + filter "platforms:*RW33*" flags { "ExcludeFromBuild" } filter {} @@ -291,7 +291,7 @@ project "re3" if(not _OPTIONS["no-git-hash"]) then defines { "USE_OUR_VERSIONING" } end - + if _OPTIONS["with-opus"] then includedirs { "vendor/ogg/include" } includedirs { "vendor/opus/include" } @@ -302,7 +302,7 @@ project "re3" defines { "AUDIO_MSS" } includedirs { "vendor/milessdk/include" } libdirs { "vendor/milessdk/lib" } - + if _OPTIONS["with-opus"] then filter "platforms:win*" libdirs { "vendor/ogg/win32/VS2015/Win32/%{cfg.buildcfg}" } @@ -311,15 +311,15 @@ project "re3" filter {} defines { "AUDIO_OPUS" } end - + filter "platforms:*oal" defines { "AUDIO_OAL" } - + filter {} if(os.getenv("GTA_III_RE_DIR")) then setpaths(os.getenv("GTA_III_RE_DIR") .. "/", "%(cfg.buildtarget.name)") end - + filter "platforms:win*" files { addSrcFiles("src/skel/win") } includedirs { "src/skel/win" } @@ -334,7 +334,7 @@ project "re3" if(not _OPTIONS["no-git-hash"]) then prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' } end - + filter "platforms:not win*" if(not _OPTIONS["no-git-hash"]) then prebuildcommands { '"%{prj.location}/../printHash.sh" "%{prj.location}/../src/extras/GitSHA1.cpp"' } @@ -342,17 +342,17 @@ project "re3" filter "platforms:win*glfw*" staticruntime "off" - + filter "platforms:win*oal" includedirs { "vendor/openal-soft/include" } includedirs { "vendor/libsndfile/include" } includedirs { "vendor/mpg123/include" } - + filter "platforms:win-x86*oal" libdirs { "vendor/mpg123/lib/Win32" } libdirs { "vendor/libsndfile/lib/Win32" } libdirs { "vendor/openal-soft/libs/Win32" } - + filter "platforms:win-amd64*oal" libdirs { "vendor/mpg123/lib/Win64" } libdirs { "vendor/libsndfile/lib/Win64" } @@ -360,7 +360,7 @@ project "re3" filter "platforms:linux*oal" links { "openal", "mpg123", "sndfile", "pthread", "X11" } - + filter "platforms:bsd*oal" links { "openal", "mpg123", "sndfile", "pthread", "X11" } @@ -368,7 +368,7 @@ project "re3" links { "openal", "mpg123", "sndfile", "pthread" } includedirs { "/usr/local/opt/openal-soft/include" } libdirs { "/usr/local/opt/openal-soft/lib" } - + if _OPTIONS["with-opus"] then filter {} links { "libogg" } @@ -382,7 +382,7 @@ project "re3" links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtcharse", "rpanisot" } defines { "RWLIBS" } linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text" - + filter "platforms:*librw*" defines { "LIBRW" } files { addSrcFiles("src/fakerw") } @@ -396,22 +396,22 @@ project "re3" filter "platforms:*d3d9*" defines { "USE_D3D9" } links { "d3d9" } - + filter "platforms:*x86*d3d*" includedirs { "sdk/dx8sdk/include" } libdirs { "sdk/dx8sdk/lib" } - + filter "platforms:win-x86*gl3_glfw*" libdirs { path.join(_OPTIONS["glfwdir32"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) } links { "opengl32", "glfw3" } - + filter "platforms:win-amd64*gl3_glfw*" libdirs { path.join(_OPTIONS["glfwdir64"], "lib-" .. string.gsub(_ACTION or '', "vs", "vc")) } links { "opengl32", "glfw3" } filter "platforms:linux*gl3_glfw*" links { "GL", "glfw" } - + filter "platforms:bsd*gl3_glfw*" links { "GL", "glfw", "sysinfo" } includedirs { "/usr/local/include" } From 036eff2c48298ee0485e57252962c82dee7e6379 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 26 Jun 2021 03:32:08 +0200 Subject: [PATCH 165/314] swap out codewarrior re3.mcp with xml export --- .gitignore | 1 + codewarrior/re3.mcp | Bin 228825 -> 0 bytes codewarrior/re3.mcp.xml | 15348 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 15349 insertions(+) delete mode 100644 codewarrior/re3.mcp create mode 100644 codewarrior/re3.mcp.xml diff --git a/.gitignore b/.gitignore index b4f221f2..38ad5d73 100644 --- a/.gitignore +++ b/.gitignore @@ -355,6 +355,7 @@ vendor/glfw-3.3.2.bin.WIN64/ sdk/ +codewarrior/re3.mcp codewarrior/re3_Data/ codewarrior/Release/ codewarrior/Debug/ diff --git a/codewarrior/re3.mcp b/codewarrior/re3.mcp deleted file mode 100644 index fc1f2104801b67071a082ccf49a25b143be9f6ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228825 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 diff --git a/codewarrior/re3.mcp.xml b/codewarrior/re3.mcp.xml new file mode 100644 index 00000000..b18e2bcc --- /dev/null +++ b/codewarrior/re3.mcp.xml @@ -0,0 +1,15348 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + Debug + + + + UserSourceTrees + + + AlwaysSearchUserPathsfalse + InterpretDOSAndUnixPathstrue + RequireFrameworkStyleIncludesfalse + UserSearchPaths + + SearchPath + Path + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\animation + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\audio + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\buildings + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\collision + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\control + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\core + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\entities + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\math + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\modelinfo + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\objects + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\peds + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\render + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\rw + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\save + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\skel + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\text + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\vehicles + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\weapons + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\vendor\milessdk\lib + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\vendor\milessdk\include + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\dx8sdk\Lib + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\rwsdk\lib\d3d8\release + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\rwsdk\include\d3d8 + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\extras + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SystemSearchPaths + + SearchPath + Path..\sdk\rwsdk\include\d3d8 + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\dx8sdk\Include + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + PathWin32-x86 Support\Headers\ + PathFormatWindows + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + PathWin32-x86 Support\Libraries\ + PathFormatWindows + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + PathMSL + PathFormatWindows + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\audio\eax + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + + + MWRuntimeSettings_WorkingDirectory + MWRuntimeSettings_CommandLine + MWRuntimeSettings_HostApplication + Path + PathFormatGeneric + PathRootAbsolute + + MWRuntimeSettings_EnvVars + + + LinkerWin32 x86 Linker + PreLinker + PostLinker + TargetnameDebug + OutputDirectory + Path + PathFormatWindows + PathRootProject + + SaveEntriesUsingRelativePathsfalse + + + FileMappings + + FileTypeTEXT + FileExtension.c + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cc + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cpp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.def + Compiler + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.h + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMaketrue + + + FileTypeTEXT + FileExtension.p + CompilerMW Pascal x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pas + CompilerMW Pascal x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.ppu + CompilerMW Pascal x86 + EditLanguage + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.rc + CompilerMW WinRC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.res + CompilerWinRes Import + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.doc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFilefalse + IgnoredByMaketrue + + + FileExtension.lib + CompilerLib Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.obj + CompilerObj Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.res + CompilerWinRes Import + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + + + CacheModDatestrue + ActivateBrowsertrue + DumpBrowserInfofalse + CacheSubprojectstrue + UseThirdPartyDebuggerfalse + DebuggerAppPath + Path + PathFormatGeneric + PathRootAbsolute + + DebuggerCmdLineArgs + DebuggerWorkingDir + Path + PathFormatGeneric + PathRootAbsolute + + + + LogSystemMessagesfalse + AutoTargetDLLsfalse + StopAtWatchpointstrue + PauseWhileRunningfalse + PauseInterval5 + PauseUIFlags0 + AltExePath + Path + PathFormatGeneric + PathRootAbsolute + + StopAtTempBPOnLaunchtrue + CacheSymbolicstrue + TempBPFunctionNamemain + TempBPType0 + + + Enabledfalse + ConnectionName + DownloadPath + LaunchRemoteAppfalse + RemoteAppPath + + + OtherExecutables + + + CustomColor1 + Red0 + Green32767 + Blue0 + + CustomColor2 + Red0 + Green32767 + Blue0 + + CustomColor3 + Red0 + Green32767 + Blue0 + + CustomColor4 + Red0 + Green32767 + Blue0 + + + + MWCodeGen_X86_processorPentiumII + MWCodeGen_X86_alignmentbytes8 + MWCodeGen_X86_exceptionsZeroOverhead + MWCodeGen_X86_extinst_mmx0 + MWCodeGen_X86_extinst_3dnow0 + MWCodeGen_X86_use_mmx_3dnow_convention0 + MWCodeGen_X86_machinecodelisting0 + MWCodeGen_X86_intrinsics0 + MWCodeGen_X86_syminfo0 + MWCodeGen_X86_codeviewinfo1 + MWCodeGen_X86_extinst_cmov_fcomi0 + MWCodeGen_X86_extinst_sse0 + + + MWDebugger_X86_Exceptions + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + PDisasmX86_showHeaderstrue + PDisasmX86_showSymTabtrue + PDisasmX86_showCodetrue + PDisasmX86_showSourcefalse + PDisasmX86_showHextrue + PDisasmX86_showRelocationtrue + PDisasmX86_showCommentsfalse + PDisasmX86_showDebugfalse + PDisasmX86_showExceptionsfalse + PDisasmX86_showDatatrue + PDisasmX86_showRawfalse + PDisasmX86_verbosefalse + + + MWFrontEnd_C_cplusplus1 + MWFrontEnd_C_checkprotos0 + MWFrontEnd_C_arm0 + MWFrontEnd_C_trigraphs0 + MWFrontEnd_C_onlystdkeywords0 + MWFrontEnd_C_enumsalwaysint1 + MWFrontEnd_C_mpwpointerstyle0 + MWFrontEnd_C_prefixname + MWFrontEnd_C_ansistrict0 + MWFrontEnd_C_mpwcnewline0 + MWFrontEnd_C_wchar_type1 + MWFrontEnd_C_enableexceptions1 + MWFrontEnd_C_dontreusestrings0 + MWFrontEnd_C_poolstrings1 + MWFrontEnd_C_dontinline1 + MWFrontEnd_C_useRTTI1 + MWFrontEnd_C_multibyteaware1 + MWFrontEnd_C_unsignedchars0 + MWFrontEnd_C_autoinline0 + MWFrontEnd_C_booltruefalse1 + MWFrontEnd_C_direct_to_som0 + MWFrontEnd_C_som_env_check0 + MWFrontEnd_C_alwaysinline0 + MWFrontEnd_C_inlinelevel0 + MWFrontEnd_C_ecplusplus0 + MWFrontEnd_C_objective_c0 + MWFrontEnd_C_defer_codegen0 + + + MWLinker_X86_entrypointusageDefault + MWLinker_X86_entrypoint + MWLinker_X86_subsystemWinGUI + MWLinker_X86_subsysmajorid4 + MWLinker_X86_subsysminorid0 + MWLinker_X86_usrmajorid0 + MWLinker_X86_usrminorid0 + MWLinker_X86_commandfile + MWLinker_X86_generatemap0 + MWLinker_X86_linksym0 + MWLinker_X86_linkCV1 + + + MWProject_X86_typeApplication + MWProject_X86_outfileDebug\gta3.exe + MWProject_X86_baseaddress4194304 + MWProject_X86_maxstacksize1024 + MWProject_X86_minstacksize4 + MWProject_X86_size1024 + MWProject_X86_minsize4 + MWProject_X86_importlib + + + MWWarning_C_warn_illpragma0 + MWWarning_C_warn_emptydecl0 + MWWarning_C_warn_possunwant1 + MWWarning_C_warn_unusedvar1 + MWWarning_C_warn_unusedarg0 + MWWarning_C_warn_extracomma1 + MWWarning_C_pedantic0 + MWWarning_C_warningerrors0 + MWWarning_C_warn_hidevirtual1 + MWWarning_C_warn_implicitconv0 + MWWarning_C_warn_notinlined0 + MWWarning_C_warn_structclass0 + + + MWWinRC_prefixnameResourcePrefix.h + + + GlobalOptimizer_X86__optimizationlevelLevel0 + GlobalOptimizer_X86__optforSize + + + + Name + Comdlg32.lib + MacOS + Library + + + + Name + Gdi32.lib + MacOS + Library + + + + Name + Kernel32.lib + MacOS + Library + + + + Name + User32.lib + MacOS + Library + + + + Name + MSL_All_x86_D.lib + MacOS + Unknown + Debug + + + Name + AnimationId.h + Windows + Text + + + + Name + AnimBlendAssocGroup.cpp + Windows + Text + Debug + + + Name + AnimBlendAssocGroup.h + Windows + Text + + + + Name + AnimBlendAssociation.cpp + Windows + Text + Debug + + + Name + AnimBlendAssociation.h + Windows + Text + + + + Name + AnimBlendClumpData.cpp + Windows + Text + Debug + + + Name + AnimBlendClumpData.h + Windows + Text + + + + Name + AnimBlendHierarchy.cpp + Windows + Text + Debug + + + Name + AnimBlendHierarchy.h + Windows + Text + + + + Name + AnimBlendList.h + Windows + Text + + + + Name + AnimBlendNode.cpp + Windows + Text + Debug + + + Name + AnimBlendNode.h + Windows + Text + + + + Name + AnimBlendSequence.cpp + Windows + Text + Debug + + + Name + AnimBlendSequence.h + Windows + Text + + + + Name + AnimManager.cpp + Windows + Text + Debug + + + Name + AnimManager.h + Windows + Text + + + + Name + Bones.cpp + Windows + Text + Debug + + + Name + Bones.h + Windows + Text + + + + Name + CutsceneMgr.cpp + Windows + Text + Debug + + + Name + CutsceneMgr.h + Windows + Text + + + + Name + FrameUpdate.cpp + Windows + Text + Debug + + + Name + RpAnimBlend.cpp + Windows + Text + Debug + + + Name + RpAnimBlend.h + Windows + Text + + + + Name + audio_enums.h + Windows + Text + + + + Name + AudioCollision.cpp + Windows + Text + Debug + + + Name + AudioCollision.h + Windows + Text + + + + Name + AudioLogic.cpp + Windows + Text + + + + Name + AudioManager.cpp + Windows + Text + Debug + + + Name + AudioManager.h + Windows + Text + + + + Name + AudioSamples.h + Windows + Text + + + + Name + AudioScriptObject.cpp + Windows + Text + Debug + + + Name + AudioScriptObject.h + Windows + Text + + + + Name + DMAudio.cpp + Windows + Text + Debug + + + Name + DMAudio.h + Windows + Text + + + + Name + MusicManager.cpp + Windows + Text + Debug + + + Name + MusicManager.h + Windows + Text + + + + Name + PolRadio.cpp + Windows + Text + Debug + + + Name + PolRadio.h + Windows + Text + + + + Name + sampman.h + Windows + Text + + + + Name + sampman_miles.cpp + Windows + Text + Debug + + + Name + soundlist.h + Windows + Text + + + + Name + eax.h + Windows + Text + + + + Name + eax-util.cpp + Windows + Text + Debug + + + Name + eax-util.h + Windows + Text + + + + Name + Building.cpp + Windows + Text + Debug + + + Name + Building.h + Windows + Text + + + + Name + Solid.h + Windows + Text + + + + Name + Treadable.cpp + Windows + Text + Debug + + + Name + Treadable.h + Windows + Text + + + + Name + ColBox.cpp + Windows + Text + Debug + + + Name + ColBox.h + Windows + Text + + + + Name + ColLine.cpp + Windows + Text + Debug + + + Name + ColLine.h + Windows + Text + + + + Name + Collision.cpp + Windows + Text + Debug + + + Name + Collision.h + Windows + Text + + + + Name + ColModel.cpp + Windows + Text + Debug + + + Name + ColModel.h + Windows + Text + + + + Name + ColPoint.cpp + Windows + Text + Debug + + + Name + ColPoint.h + Windows + Text + + + + Name + ColSphere.cpp + Windows + Text + Debug + + + Name + ColSphere.h + Windows + Text + + + + Name + ColTriangle.cpp + Windows + Text + Debug + + + Name + ColTriangle.h + Windows + Text + + + + Name + CompressedVector.h + Windows + Text + + + + Name + TempColModels.cpp + Windows + Text + Debug + + + Name + TempColModels.h + Windows + Text + + + + Name + VuCollision.cpp + Windows + Text + Debug + + + Name + VuCollision.h + Windows + Text + + + + Name + AutoPilot.cpp + Windows + Text + Debug + + + Name + AutoPilot.h + Windows + Text + + + + Name + Bridge.cpp + Windows + Text + Debug + + + Name + Bridge.h + Windows + Text + + + + Name + CarAI.cpp + Windows + Text + Debug + + + Name + CarAI.h + Windows + Text + + + + Name + CarCtrl.cpp + Windows + Text + Debug + + + Name + CarCtrl.h + Windows + Text + + + + Name + Curves.cpp + Windows + Text + Debug + + + Name + Curves.h + Windows + Text + + + + Name + Darkel.cpp + Windows + Text + Debug + + + Name + Darkel.h + Windows + Text + + + + Name + GameLogic.cpp + Windows + Text + Debug + + + Name + GameLogic.h + Windows + Text + + + + Name + Garages.cpp + Windows + Text + Debug + + + Name + Garages.h + Windows + Text + + + + Name + NameGrid.cpp + Windows + Text + Debug + + + Name + NameGrid.h + Windows + Text + + + + Name + OnscreenTimer.cpp + Windows + Text + Debug + + + Name + OnscreenTimer.h + Windows + Text + + + + Name + PathFind.cpp + Windows + Text + Debug + + + Name + PathFind.h + Windows + Text + + + + Name + Phones.cpp + Windows + Text + Debug + + + Name + Phones.h + Windows + Text + + + + Name + Pickups.cpp + Windows + Text + Debug + + + Name + Pickups.h + Windows + Text + + + + Name + PowerPoints.cpp + Windows + Text + Debug + + + Name + PowerPoints.h + Windows + Text + + + + Name + Record.cpp + Windows + Text + Debug + + + Name + Record.h + Windows + Text + + + + Name + Remote.cpp + Windows + Text + Debug + + + Name + Remote.h + Windows + Text + + + + Name + Replay.cpp + Windows + Text + Debug + + + Name + Replay.h + Windows + Text + + + + Name + Restart.cpp + Windows + Text + Debug + + + Name + Restart.h + Windows + Text + + + + Name + RoadBlocks.cpp + Windows + Text + Debug + + + Name + RoadBlocks.h + Windows + Text + + + + Name + SceneEdit.cpp + Windows + Text + Debug + + + Name + SceneEdit.h + Windows + Text + + + + Name + Script.cpp + Windows + Text + Debug + + + Name + Script.h + Windows + Text + + + + Name + Script2.cpp + Windows + Text + Debug + + + Name + Script3.cpp + Windows + Text + Debug + + + Name + Script4.cpp + Windows + Text + Debug + + + Name + Script5.cpp + Windows + Text + Debug + + + Name + Script6.cpp + Windows + Text + Debug + + + Name + ScriptCommands.h + Windows + Text + + + + Name + TrafficLights.cpp + Windows + Text + Debug + + + Name + TrafficLights.h + Windows + Text + + + + Name + Accident.cpp + Windows + Text + Debug + + + Name + Accident.h + Windows + Text + + + + Name + AnimViewer.cpp + Windows + Text + Debug + + + Name + AnimViewer.h + Windows + Text + + + + Name + Cam.cpp + Windows + Text + Debug + + + Name + Camera.cpp + Windows + Text + Debug + + + Name + Camera.h + Windows + Text + + + + Name + CdStream.cpp + Windows + Text + Debug + + + Name + CdStream.h + Windows + Text + + + + Name + CdStreamPosix.cpp + Windows + Text + Debug + + + Name + Clock.cpp + Windows + Text + Debug + + + Name + Clock.h + Windows + Text + + + + Name + common.h + Windows + Text + + + + Name + config.h + Windows + Text + + + + Name + ControllerConfig.cpp + Windows + Text + Debug + + + Name + ControllerConfig.h + Windows + Text + + + + Name + Crime.h + Windows + Text + + + + Name + Debug.cpp + Windows + Text + Debug + + + Name + Debug.h + Windows + Text + + + + Name + Directory.cpp + Windows + Text + Debug + + + Name + Directory.h + Windows + Text + + + + Name + EventList.cpp + Windows + Text + Debug + + + Name + EventList.h + Windows + Text + + + + Name + FileLoader.cpp + Windows + Text + Debug + + + Name + FileLoader.h + Windows + Text + + + + Name + FileMgr.cpp + Windows + Text + Debug + + + Name + FileMgr.h + Windows + Text + + + + Name + Fire.cpp + Windows + Text + Debug + + + Name + Fire.h + Windows + Text + + + + Name + Frontend.cpp + Windows + Text + Debug + + + Name + Frontend.h + Windows + Text + + + + Name + Frontend_PS2.cpp + Windows + Text + Debug + + + Name + Frontend_PS2.h + Windows + Text + + + + Name + FrontEndControls.cpp + Windows + Text + Debug + + + Name + FrontEndControls.h + Windows + Text + + + + Name + FrontendTriggers.h + Windows + Text + + + + Name + Game.cpp + Windows + Text + Debug + + + Name + Game.h + Windows + Text + + + + Name + General.h + Windows + Text + + + + Name + IniFile.cpp + Windows + Text + Debug + + + Name + IniFile.h + Windows + Text + + + + Name + Lists.cpp + Windows + Text + Debug + + + Name + Lists.h + Windows + Text + + + + Name + main.cpp + Windows + Text + Debug + + + Name + main.h + Windows + Text + + + + Name + MenuScreens.cpp + Windows + Text + Debug + + + Name + MenuScreensCustom.cpp + Windows + Text + Debug + + + Name + obrstr.cpp + Windows + Text + Debug + + + Name + obrstr.h + Windows + Text + + + + Name + Pad.cpp + Windows + Text + Debug + + + Name + Pad.h + Windows + Text + + + + Name + Placeable.cpp + Windows + Text + Debug + + + Name + Placeable.h + Windows + Text + + + + Name + PlayerInfo.cpp + Windows + Text + Debug + + + Name + PlayerInfo.h + Windows + Text + + + + Name + Pools.cpp + Windows + Text + Debug + + + Name + Pools.h + Windows + Text + + + + Name + Profile.cpp + Windows + Text + Debug + + + Name + Profile.h + Windows + Text + + + + Name + Radar.cpp + Windows + Text + Debug + + + Name + Radar.h + Windows + Text + + + + Name + Range2D.cpp + Windows + Text + Debug + + + Name + Range2D.h + Windows + Text + + + + Name + Range3D.cpp + Windows + Text + Debug + + + Name + Range3D.h + Windows + Text + + + + Name + re3.cpp + Windows + Text + Debug + + + Name + References.cpp + Windows + Text + Debug + + + Name + References.h + Windows + Text + + + + Name + Stats.cpp + Windows + Text + Debug + + + Name + Stats.h + Windows + Text + + + + Name + Streaming.cpp + Windows + Text + Debug + + + Name + Streaming.h + Windows + Text + + + + Name + SurfaceTable.cpp + Windows + Text + Debug + + + Name + SurfaceTable.h + Windows + Text + + + + Name + templates.h + Windows + Text + + + + Name + timebars.cpp + Windows + Text + Debug + + + Name + timebars.h + Windows + Text + + + + Name + Timer.cpp + Windows + Text + Debug + + + Name + Timer.h + Windows + Text + + + + Name + TimeStep.cpp + Windows + Text + Debug + + + Name + TimeStep.h + Windows + Text + + + + Name + User.cpp + Windows + Text + Debug + + + Name + User.h + Windows + Text + + + + Name + Wanted.cpp + Windows + Text + Debug + + + Name + Wanted.h + Windows + Text + + + + Name + World.cpp + Windows + Text + Debug + + + Name + World.h + Windows + Text + + + + Name + ZoneCull.cpp + Windows + Text + Debug + + + Name + ZoneCull.h + Windows + Text + + + + Name + Zones.cpp + Windows + Text + Debug + + + Name + Zones.h + Windows + Text + + + + Name + Dummy.cpp + Windows + Text + Debug + + + Name + Dummy.h + Windows + Text + + + + Name + Entity.cpp + Windows + Text + Debug + + + Name + Entity.h + Windows + Text + + + + Name + Physical.cpp + Windows + Text + Debug + + + Name + Physical.h + Windows + Text + + + + Name + math.cpp + Windows + Text + Debug + + + Name + maths.h + Windows + Text + + + + Name + Matrix.cpp + Windows + Text + Debug + + + Name + Matrix.h + Windows + Text + + + + Name + Quaternion.cpp + Windows + Text + Debug + + + Name + Quaternion.h + Windows + Text + + + + Name + Rect.cpp + Windows + Text + Debug + + + Name + Rect.h + Windows + Text + + + + Name + Vector.cpp + Windows + Text + Debug + + + Name + Vector.h + Windows + Text + + + + Name + Vector2D.h + Windows + Text + + + + Name + VuVector.h + Windows + Text + + + + Name + BaseModelInfo.cpp + Windows + Text + Debug + + + Name + BaseModelInfo.h + Windows + Text + + + + Name + ClumpModelInfo.cpp + Windows + Text + Debug + + + Name + ClumpModelInfo.h + Windows + Text + + + + Name + MloModelInfo.cpp + Windows + Text + Debug + + + Name + MloModelInfo.h + Windows + Text + + + + Name + ModelIndices.cpp + Windows + Text + Debug + + + Name + ModelIndices.h + Windows + Text + + + + Name + ModelInfo.cpp + Windows + Text + Debug + + + Name + ModelInfo.h + Windows + Text + + + + Name + PedModelInfo.cpp + Windows + Text + Debug + + + Name + PedModelInfo.h + Windows + Text + + + + Name + SimpleModelInfo.cpp + Windows + Text + Debug + + + Name + SimpleModelInfo.h + Windows + Text + + + + Name + TimeModelInfo.cpp + Windows + Text + Debug + + + Name + TimeModelInfo.h + Windows + Text + + + + Name + VehicleModelInfo.cpp + Windows + Text + Debug + + + Name + VehicleModelInfo.h + Windows + Text + + + + Name + XtraCompsModelInfo.h + Windows + Text + + + + Name + CutsceneHead.cpp + Windows + Text + Debug + + + Name + CutsceneHead.h + Windows + Text + + + + Name + CutsceneObject.cpp + Windows + Text + Debug + + + Name + CutsceneObject.h + Windows + Text + + + + Name + DummyObject.cpp + Windows + Text + Debug + + + Name + DummyObject.h + Windows + Text + + + + Name + Object.cpp + Windows + Text + Debug + + + Name + Object.h + Windows + Text + + + + Name + ObjectData.cpp + Windows + Text + Debug + + + Name + ObjectData.h + Windows + Text + + + + Name + ParticleObject.cpp + Windows + Text + Debug + + + Name + ParticleObject.h + Windows + Text + + + + Name + Projectile.cpp + Windows + Text + Debug + + + Name + Projectile.h + Windows + Text + + + + Name + CivilianPed.cpp + Windows + Text + Debug + + + Name + CivilianPed.h + Windows + Text + + + + Name + CopPed.cpp + Windows + Text + Debug + + + Name + CopPed.h + Windows + Text + + + + Name + DummyPed.h + Windows + Text + + + + Name + EmergencyPed.cpp + Windows + Text + Debug + + + Name + EmergencyPed.h + Windows + Text + + + + Name + Gangs.cpp + Windows + Text + Debug + + + Name + Gangs.h + Windows + Text + + + + Name + Ped.cpp + Windows + Text + Debug + + + Name + Ped.h + Windows + Text + + + + Name + PedAI.cpp + Windows + Text + Debug + + + Name + PedChat.cpp + Windows + Text + Debug + + + Name + PedDebug.cpp + Windows + Text + Debug + + + Name + PedFight.cpp + Windows + Text + Debug + + + Name + PedIK.cpp + Windows + Text + Debug + + + Name + PedIK.h + Windows + Text + + + + Name + PedPlacement.cpp + Windows + Text + Debug + + + Name + PedPlacement.h + Windows + Text + + + + Name + PedRoutes.cpp + Windows + Text + Debug + + + Name + PedRoutes.h + Windows + Text + + + + Name + PedType.cpp + Windows + Text + Debug + + + Name + PedType.h + Windows + Text + + + + Name + PlayerPed.cpp + Windows + Text + Debug + + + Name + PlayerPed.h + Windows + Text + + + + Name + Population.cpp + Windows + Text + Debug + + + Name + Population.h + Windows + Text + + + + Name + 2dEffect.h + Windows + Text + + + + Name + Antennas.cpp + Windows + Text + Debug + + + Name + Antennas.h + Windows + Text + + + + Name + Clouds.cpp + Windows + Text + Debug + + + Name + Clouds.h + Windows + Text + + + + Name + Console.cpp + Windows + Text + Debug + + + Name + Console.h + Windows + Text + + + + Name + Coronas.cpp + Windows + Text + Debug + + + Name + Coronas.h + Windows + Text + + + + Name + Credits.cpp + Windows + Text + Debug + + + Name + Credits.h + Windows + Text + + + + Name + Draw.cpp + Windows + Text + Debug + + + Name + Draw.h + Windows + Text + + + + Name + Fluff.cpp + Windows + Text + Debug + + + Name + Fluff.h + Windows + Text + + + + Name + Font.cpp + Windows + Text + Debug + + + Name + Font.h + Windows + Text + + + + Name + Glass.cpp + Windows + Text + Debug + + + Name + Glass.h + Windows + Text + + + + Name + Hud.cpp + Windows + Text + Debug + + + Name + Hud.h + Windows + Text + + + + Name + Instance.cpp + Windows + Text + Debug + + + Name + Instance.h + Windows + Text + + + + Name + Lines.cpp + Windows + Text + Debug + + + Name + Lines.h + Windows + Text + + + + Name + MBlur.cpp + Windows + Text + Debug + + + Name + MBlur.h + Windows + Text + + + + Name + Particle.cpp + Windows + Text + Debug + + + Name + Particle.h + Windows + Text + + + + Name + ParticleMgr.cpp + Windows + Text + Debug + + + Name + ParticleMgr.h + Windows + Text + + + + Name + ParticleType.h + Windows + Text + + + + Name + PlayerSkin.cpp + Windows + Text + Debug + + + Name + PlayerSkin.h + Windows + Text + + + + Name + PointLights.cpp + Windows + Text + Debug + + + Name + PointLights.h + Windows + Text + + + + Name + RenderBuffer.cpp + Windows + Text + Debug + + + Name + RenderBuffer.h + Windows + Text + + + + Name + Renderer.cpp + Windows + Text + Debug + + + Name + Renderer.h + Windows + Text + + + + Name + Rubbish.cpp + Windows + Text + Debug + + + Name + Rubbish.h + Windows + Text + + + + Name + Shadows.cpp + Windows + Text + Debug + + + Name + Shadows.h + Windows + Text + + + + Name + Skidmarks.cpp + Windows + Text + Debug + + + Name + Skidmarks.h + Windows + Text + + + + Name + SpecialFX.cpp + Windows + Text + Debug + + + Name + SpecialFX.h + Windows + Text + + + + Name + Sprite.cpp + Windows + Text + Debug + + + Name + Sprite.h + Windows + Text + + + + Name + Sprite2d.cpp + Windows + Text + Debug + + + Name + Sprite2d.h + Windows + Text + + + + Name + TexList.cpp + Windows + Text + Debug + + + Name + TexList.h + Windows + Text + + + + Name + Timecycle.cpp + Windows + Text + Debug + + + Name + Timecycle.h + Windows + Text + + + + Name + WaterCannon.cpp + Windows + Text + Debug + + + Name + WaterCannon.h + Windows + Text + + + + Name + WaterLevel.cpp + Windows + Text + Debug + + + Name + WaterLevel.h + Windows + Text + + + + Name + Weather.cpp + Windows + Text + Debug + + + Name + Weather.h + Windows + Text + + + + Name + ClumpRead.cpp + Windows + Text + Debug + + + Name + Lights.cpp + Windows + Text + Debug + + + Name + Lights.h + Windows + Text + + + + Name + MemoryHeap.cpp + Windows + Text + Debug + + + Name + MemoryHeap.h + Windows + Text + + + + Name + MemoryMgr.cpp + Windows + Text + Debug + + + Name + MemoryMgr.h + Windows + Text + + + + Name + NodeName.cpp + Windows + Text + Debug + + + Name + NodeName.h + Windows + Text + + + + Name + RwHelper.cpp + Windows + Text + Debug + + + Name + RwHelper.h + Windows + Text + + + + Name + RwMatFX.cpp + Windows + Text + Debug + + + Name + RwPS2AlphaTest.cpp + Windows + Text + Debug + + + Name + TexRead.cpp + Windows + Text + Debug + + + Name + TexturePools.cpp + Windows + Text + Debug + + + Name + TexturePools.h + Windows + Text + + + + Name + TxdStore.cpp + Windows + Text + Debug + + + Name + TxdStore.h + Windows + Text + + + + Name + VisibilityPlugins.cpp + Windows + Text + Debug + + + Name + VisibilityPlugins.h + Windows + Text + + + + Name + Date.cpp + Windows + Text + Debug + + + Name + Date.h + Windows + Text + + + + Name + GenericGameStorage.cpp + Windows + Text + Debug + + + Name + GenericGameStorage.h + Windows + Text + + + + Name + MemoryCard.cpp + Windows + Text + Debug + + + Name + MemoryCard.h + Windows + Text + + + + Name + PCSave.cpp + Windows + Text + Debug + + + Name + PCSave.h + Windows + Text + + + + Name + crossplatform.cpp + Windows + Text + Debug + + + Name + crossplatform.h + Windows + Text + + + + Name + events.cpp + Windows + Text + Debug + + + Name + events.h + Windows + Text + + + + Name + platform.h + Windows + Text + + + + Name + skeleton.cpp + Windows + Text + Debug + + + Name + skeleton.h + Windows + Text + + + + Name + resource.h + Windows + Text + + + + Name + win.cpp + Windows + Text + Debug + + + Name + win.h + Windows + Text + + + + Name + win.rc + Windows + Text + Debug + + + Name + Messages.cpp + Windows + Text + Debug + + + Name + Messages.h + Windows + Text + + + + Name + Pager.cpp + Windows + Text + Debug + + + Name + Pager.h + Windows + Text + + + + Name + Text.cpp + Windows + Text + Debug + + + Name + Text.h + Windows + Text + + + + Name + Automobile.cpp + Windows + Text + Debug + + + Name + Automobile.h + Windows + Text + + + + Name + Bike.h + Windows + Text + + + + Name + Boat.cpp + Windows + Text + Debug + + + Name + Boat.h + Windows + Text + + + + Name + CarGen.cpp + Windows + Text + Debug + + + Name + CarGen.h + Windows + Text + + + + Name + Cranes.cpp + Windows + Text + Debug + + + Name + Cranes.h + Windows + Text + + + + Name + DamageManager.cpp + Windows + Text + Debug + + + Name + DamageManager.h + Windows + Text + + + + Name + Door.cpp + Windows + Text + Debug + + + Name + Door.h + Windows + Text + + + + Name + Floater.cpp + Windows + Text + Debug + + + Name + Floater.h + Windows + Text + + + + Name + HandlingMgr.cpp + Windows + Text + Debug + + + Name + HandlingMgr.h + Windows + Text + + + + Name + Heli.cpp + Windows + Text + Debug + + + Name + Heli.h + Windows + Text + + + + Name + Plane.cpp + Windows + Text + Debug + + + Name + Plane.h + Windows + Text + + + + Name + Train.cpp + Windows + Text + Debug + + + Name + Train.h + Windows + Text + + + + Name + Transmission.cpp + Windows + Text + Debug + + + Name + Transmission.h + Windows + Text + + + + Name + Vehicle.cpp + Windows + Text + Debug + + + Name + Vehicle.h + Windows + Text + + + + Name + BulletInfo.cpp + Windows + Text + Debug + + + Name + BulletInfo.h + Windows + Text + + + + Name + Explosion.cpp + Windows + Text + Debug + + + Name + Explosion.h + Windows + Text + + + + Name + ProjectileInfo.cpp + Windows + Text + Debug + + + Name + ProjectileInfo.h + Windows + Text + + + + Name + ShotInfo.cpp + Windows + Text + Debug + + + Name + ShotInfo.h + Windows + Text + + + + Name + Weapon.cpp + Windows + Text + Debug + + + Name + Weapon.h + Windows + Text + + + + Name + WeaponEffects.cpp + Windows + Text + Debug + + + Name + WeaponEffects.h + Windows + Text + + + + Name + WeaponInfo.cpp + Windows + Text + Debug + + + Name + WeaponInfo.h + Windows + Text + + + + Name + WeaponType.h + Windows + Text + + + + Name + mss32.lib + Windows + Library + Debug + + + Name + d3d8.lib + Windows + Library + Debug + + + Name + ddraw.lib + Windows + Library + Debug + + + Name + dxguid.lib + Windows + Library + Debug + + + Name + strmiids.lib + Windows + Library + Debug + + + Name + dinput8.lib + Windows + Library + Debug + + + Name + winmm.lib + Windows + Library + Debug + + + Name + rwcore.lib + Windows + Library + Debug + + + Name + rpworld.lib + Windows + Library + Debug + + + Name + rpmatfx.lib + Windows + Library + Debug + + + Name + rpskin.lib + Windows + Library + Debug + + + Name + rphanim.lib + Windows + Library + Debug + + + Name + rtbmp.lib + Windows + Library + Debug + + + Name + rtquat.lib + Windows + Library + Debug + + + Name + rtcharse.lib + Windows + Library + Debug + + + Name + ole32.lib + Windows + Library + Debug + + + Name + shell32.lib + Windows + Library + Debug + + + Name + uuid.lib + Windows + Library + Debug + + + + + Name + AnimationId.h + Windows + + + Name + AnimBlendAssocGroup.cpp + Windows + + + Name + AnimBlendAssocGroup.h + Windows + + + Name + AnimBlendAssociation.cpp + Windows + + + Name + AnimBlendAssociation.h + Windows + + + Name + AnimBlendClumpData.cpp + Windows + + + Name + AnimBlendClumpData.h + Windows + + + Name + AnimBlendHierarchy.cpp + Windows + + + Name + AnimBlendHierarchy.h + Windows + + + Name + AnimBlendList.h + Windows + + + Name + AnimBlendNode.cpp + Windows + + + Name + AnimBlendNode.h + Windows + + + Name + AnimBlendSequence.cpp + Windows + + + Name + AnimBlendSequence.h + Windows + + + Name + AnimManager.cpp + Windows + + + Name + AnimManager.h + Windows + + + Name + Bones.cpp + Windows + + + Name + Bones.h + Windows + + + Name + CutsceneMgr.cpp + Windows + + + Name + CutsceneMgr.h + Windows + + + Name + FrameUpdate.cpp + Windows + + + Name + RpAnimBlend.cpp + Windows + + + Name + RpAnimBlend.h + Windows + + + Name + audio_enums.h + Windows + + + Name + AudioCollision.cpp + Windows + + + Name + AudioCollision.h + Windows + + + Name + AudioLogic.cpp + Windows + + + Name + AudioManager.cpp + Windows + + + Name + AudioManager.h + Windows + + + Name + AudioSamples.h + Windows + + + Name + AudioScriptObject.cpp + Windows + + + Name + AudioScriptObject.h + Windows + + + Name + DMAudio.cpp + Windows + + + Name + DMAudio.h + Windows + + + Name + MusicManager.cpp + Windows + + + Name + MusicManager.h + Windows + + + Name + PolRadio.cpp + Windows + + + Name + PolRadio.h + Windows + + + Name + sampman.h + Windows + + + Name + sampman_miles.cpp + Windows + + + Name + soundlist.h + Windows + + + Name + eax.h + Windows + + + Name + eax-util.cpp + Windows + + + Name + eax-util.h + Windows + + + Name + Building.cpp + Windows + + + Name + Building.h + Windows + + + Name + Solid.h + Windows + + + Name + Treadable.cpp + Windows + + + Name + Treadable.h + Windows + + + Name + ColBox.cpp + Windows + + + Name + ColBox.h + Windows + + + Name + ColLine.cpp + Windows + + + Name + ColLine.h + Windows + + + Name + Collision.cpp + Windows + + + Name + Collision.h + Windows + + + Name + ColModel.cpp + Windows + + + Name + ColModel.h + Windows + + + Name + ColPoint.cpp + Windows + + + Name + ColPoint.h + Windows + + + Name + ColSphere.cpp + Windows + + + Name + ColSphere.h + Windows + + + Name + ColTriangle.cpp + Windows + + + Name + ColTriangle.h + Windows + + + Name + CompressedVector.h + Windows + + + Name + TempColModels.cpp + Windows + + + Name + TempColModels.h + Windows + + + Name + VuCollision.cpp + Windows + + + Name + VuCollision.h + Windows + + + Name + AutoPilot.cpp + Windows + + + Name + AutoPilot.h + Windows + + + Name + Bridge.cpp + Windows + + + Name + Bridge.h + Windows + + + Name + CarAI.cpp + Windows + + + Name + CarAI.h + Windows + + + Name + CarCtrl.cpp + Windows + + + Name + CarCtrl.h + Windows + + + Name + Curves.cpp + Windows + + + Name + Curves.h + Windows + + + Name + Darkel.cpp + Windows + + + Name + Darkel.h + Windows + + + Name + GameLogic.cpp + Windows + + + Name + GameLogic.h + Windows + + + Name + Garages.cpp + Windows + + + Name + Garages.h + Windows + + + Name + NameGrid.cpp + Windows + + + Name + NameGrid.h + Windows + + + Name + OnscreenTimer.cpp + Windows + + + Name + OnscreenTimer.h + Windows + + + Name + PathFind.cpp + Windows + + + Name + PathFind.h + Windows + + + Name + Phones.cpp + Windows + + + Name + Phones.h + Windows + + + Name + Pickups.cpp + Windows + + + Name + Pickups.h + Windows + + + Name + PowerPoints.cpp + Windows + + + Name + PowerPoints.h + Windows + + + Name + Record.cpp + Windows + + + Name + Record.h + Windows + + + Name + Remote.cpp + Windows + + + Name + Remote.h + Windows + + + Name + Replay.cpp + Windows + + + Name + Replay.h + Windows + + + Name + Restart.cpp + Windows + + + Name + Restart.h + Windows + + + Name + RoadBlocks.cpp + Windows + + + Name + RoadBlocks.h + Windows + + + Name + SceneEdit.cpp + Windows + + + Name + SceneEdit.h + Windows + + + Name + Script.cpp + Windows + + + Name + Script.h + Windows + + + Name + Script2.cpp + Windows + + + Name + Script3.cpp + Windows + + + Name + Script4.cpp + Windows + + + Name + Script5.cpp + Windows + + + Name + Script6.cpp + Windows + + + Name + ScriptCommands.h + Windows + + + Name + TrafficLights.cpp + Windows + + + Name + TrafficLights.h + Windows + + + Name + Accident.cpp + Windows + + + Name + Accident.h + Windows + + + Name + AnimViewer.cpp + Windows + + + Name + AnimViewer.h + Windows + + + Name + Cam.cpp + Windows + + + Name + Camera.cpp + Windows + + + Name + Camera.h + Windows + + + Name + CdStream.cpp + Windows + + + Name + CdStream.h + Windows + + + Name + CdStreamPosix.cpp + Windows + + + Name + Clock.cpp + Windows + + + Name + Clock.h + Windows + + + Name + common.h + Windows + + + Name + config.h + Windows + + + Name + ControllerConfig.cpp + Windows + + + Name + ControllerConfig.h + Windows + + + Name + Crime.h + Windows + + + Name + Debug.cpp + Windows + + + Name + Debug.h + Windows + + + Name + Directory.cpp + Windows + + + Name + Directory.h + Windows + + + Name + EventList.cpp + Windows + + + Name + EventList.h + Windows + + + Name + FileLoader.cpp + Windows + + + Name + FileLoader.h + Windows + + + Name + FileMgr.cpp + Windows + + + Name + FileMgr.h + Windows + + + Name + Fire.cpp + Windows + + + Name + Fire.h + Windows + + + Name + Frontend.cpp + Windows + + + Name + Frontend.h + Windows + + + Name + Frontend_PS2.cpp + Windows + + + Name + Frontend_PS2.h + Windows + + + Name + FrontEndControls.cpp + Windows + + + Name + FrontEndControls.h + Windows + + + Name + FrontendTriggers.h + Windows + + + Name + Game.cpp + Windows + + + Name + Game.h + Windows + + + Name + General.h + Windows + + + Name + IniFile.cpp + Windows + + + Name + IniFile.h + Windows + + + Name + Lists.cpp + Windows + + + Name + Lists.h + Windows + + + Name + main.cpp + Windows + + + Name + main.h + Windows + + + Name + MenuScreens.cpp + Windows + + + Name + MenuScreensCustom.cpp + Windows + + + Name + obrstr.cpp + Windows + + + Name + obrstr.h + Windows + + + Name + Pad.cpp + Windows + + + Name + Pad.h + Windows + + + Name + Placeable.cpp + Windows + + + Name + Placeable.h + Windows + + + Name + PlayerInfo.cpp + Windows + + + Name + PlayerInfo.h + Windows + + + Name + Pools.cpp + Windows + + + Name + Pools.h + Windows + + + Name + Profile.cpp + Windows + + + Name + Profile.h + Windows + + + Name + Radar.cpp + Windows + + + Name + Radar.h + Windows + + + Name + Range2D.cpp + Windows + + + Name + Range2D.h + Windows + + + Name + Range3D.cpp + Windows + + + Name + Range3D.h + Windows + + + Name + re3.cpp + Windows + + + Name + References.cpp + Windows + + + Name + References.h + Windows + + + Name + Stats.cpp + Windows + + + Name + Stats.h + Windows + + + Name + Streaming.cpp + Windows + + + Name + Streaming.h + Windows + + + Name + SurfaceTable.cpp + Windows + + + Name + SurfaceTable.h + Windows + + + Name + templates.h + Windows + + + Name + timebars.cpp + Windows + + + Name + timebars.h + Windows + + + Name + Timer.cpp + Windows + + + Name + Timer.h + Windows + + + Name + TimeStep.cpp + Windows + + + Name + TimeStep.h + Windows + + + Name + User.cpp + Windows + + + Name + User.h + Windows + + + Name + Wanted.cpp + Windows + + + Name + Wanted.h + Windows + + + Name + World.cpp + Windows + + + Name + World.h + Windows + + + Name + ZoneCull.cpp + Windows + + + Name + ZoneCull.h + Windows + + + Name + Zones.cpp + Windows + + + Name + Zones.h + Windows + + + Name + Dummy.cpp + Windows + + + Name + Dummy.h + Windows + + + Name + Entity.cpp + Windows + + + Name + Entity.h + Windows + + + Name + Physical.cpp + Windows + + + Name + Physical.h + Windows + + + Name + math.cpp + Windows + + + Name + maths.h + Windows + + + Name + Matrix.cpp + Windows + + + Name + Matrix.h + Windows + + + Name + Quaternion.cpp + Windows + + + Name + Quaternion.h + Windows + + + Name + Rect.cpp + Windows + + + Name + Rect.h + Windows + + + Name + Vector.cpp + Windows + + + Name + Vector.h + Windows + + + Name + Vector2D.h + Windows + + + Name + VuVector.h + Windows + + + Name + BaseModelInfo.cpp + Windows + + + Name + BaseModelInfo.h + Windows + + + Name + ClumpModelInfo.cpp + Windows + + + Name + ClumpModelInfo.h + Windows + + + Name + MloModelInfo.cpp + Windows + + + Name + MloModelInfo.h + Windows + + + Name + ModelIndices.cpp + Windows + + + Name + ModelIndices.h + Windows + + + Name + ModelInfo.cpp + Windows + + + Name + ModelInfo.h + Windows + + + Name + PedModelInfo.cpp + Windows + + + Name + PedModelInfo.h + Windows + + + Name + SimpleModelInfo.cpp + Windows + + + Name + SimpleModelInfo.h + Windows + + + Name + TimeModelInfo.cpp + Windows + + + Name + TimeModelInfo.h + Windows + + + Name + VehicleModelInfo.cpp + Windows + + + Name + VehicleModelInfo.h + Windows + + + Name + XtraCompsModelInfo.h + Windows + + + Name + CutsceneHead.cpp + Windows + + + Name + CutsceneHead.h + Windows + + + Name + CutsceneObject.cpp + Windows + + + Name + CutsceneObject.h + Windows + + + Name + DummyObject.cpp + Windows + + + Name + DummyObject.h + Windows + + + Name + Object.cpp + Windows + + + Name + Object.h + Windows + + + Name + ObjectData.cpp + Windows + + + Name + ObjectData.h + Windows + + + Name + ParticleObject.cpp + Windows + + + Name + ParticleObject.h + Windows + + + Name + Projectile.cpp + Windows + + + Name + Projectile.h + Windows + + + Name + CivilianPed.cpp + Windows + + + Name + CivilianPed.h + Windows + + + Name + CopPed.cpp + Windows + + + Name + CopPed.h + Windows + + + Name + DummyPed.h + Windows + + + Name + EmergencyPed.cpp + Windows + + + Name + EmergencyPed.h + Windows + + + Name + Gangs.cpp + Windows + + + Name + Gangs.h + Windows + + + Name + Ped.cpp + Windows + + + Name + Ped.h + Windows + + + Name + PedAI.cpp + Windows + + + Name + PedChat.cpp + Windows + + + Name + PedDebug.cpp + Windows + + + Name + PedFight.cpp + Windows + + + Name + PedIK.cpp + Windows + + + Name + PedIK.h + Windows + + + Name + PedPlacement.cpp + Windows + + + Name + PedPlacement.h + Windows + + + Name + PedRoutes.cpp + Windows + + + Name + PedRoutes.h + Windows + + + Name + PedType.cpp + Windows + + + Name + PedType.h + Windows + + + Name + PlayerPed.cpp + Windows + + + Name + PlayerPed.h + Windows + + + Name + Population.cpp + Windows + + + Name + Population.h + Windows + + + Name + 2dEffect.h + Windows + + + Name + Antennas.cpp + Windows + + + Name + Antennas.h + Windows + + + Name + Clouds.cpp + Windows + + + Name + Clouds.h + Windows + + + Name + Console.cpp + Windows + + + Name + Console.h + Windows + + + Name + Coronas.cpp + Windows + + + Name + Coronas.h + Windows + + + Name + Credits.cpp + Windows + + + Name + Credits.h + Windows + + + Name + Draw.cpp + Windows + + + Name + Draw.h + Windows + + + Name + Fluff.cpp + Windows + + + Name + Fluff.h + Windows + + + Name + Font.cpp + Windows + + + Name + Font.h + Windows + + + Name + Glass.cpp + Windows + + + Name + Glass.h + Windows + + + Name + Hud.cpp + Windows + + + Name + Hud.h + Windows + + + Name + Instance.cpp + Windows + + + Name + Instance.h + Windows + + + Name + Lines.cpp + Windows + + + Name + Lines.h + Windows + + + Name + MBlur.cpp + Windows + + + Name + MBlur.h + Windows + + + Name + Particle.cpp + Windows + + + Name + Particle.h + Windows + + + Name + ParticleMgr.cpp + Windows + + + Name + ParticleMgr.h + Windows + + + Name + ParticleType.h + Windows + + + Name + PlayerSkin.cpp + Windows + + + Name + PlayerSkin.h + Windows + + + Name + PointLights.cpp + Windows + + + Name + PointLights.h + Windows + + + Name + RenderBuffer.cpp + Windows + + + Name + RenderBuffer.h + Windows + + + Name + Renderer.cpp + Windows + + + Name + Renderer.h + Windows + + + Name + Rubbish.cpp + Windows + + + Name + Rubbish.h + Windows + + + Name + Shadows.cpp + Windows + + + Name + Shadows.h + Windows + + + Name + Skidmarks.cpp + Windows + + + Name + Skidmarks.h + Windows + + + Name + SpecialFX.cpp + Windows + + + Name + SpecialFX.h + Windows + + + Name + Sprite.cpp + Windows + + + Name + Sprite.h + Windows + + + Name + Sprite2d.cpp + Windows + + + Name + Sprite2d.h + Windows + + + Name + TexList.cpp + Windows + + + Name + TexList.h + Windows + + + Name + Timecycle.cpp + Windows + + + Name + Timecycle.h + Windows + + + Name + WaterCannon.cpp + Windows + + + Name + WaterCannon.h + Windows + + + Name + WaterLevel.cpp + Windows + + + Name + WaterLevel.h + Windows + + + Name + Weather.cpp + Windows + + + Name + Weather.h + Windows + + + Name + ClumpRead.cpp + Windows + + + Name + Lights.cpp + Windows + + + Name + Lights.h + Windows + + + Name + MemoryHeap.cpp + Windows + + + Name + MemoryHeap.h + Windows + + + Name + MemoryMgr.cpp + Windows + + + Name + MemoryMgr.h + Windows + + + Name + NodeName.cpp + Windows + + + Name + NodeName.h + Windows + + + Name + RwHelper.cpp + Windows + + + Name + RwHelper.h + Windows + + + Name + RwMatFX.cpp + Windows + + + Name + RwPS2AlphaTest.cpp + Windows + + + Name + TexRead.cpp + Windows + + + Name + TexturePools.cpp + Windows + + + Name + TexturePools.h + Windows + + + Name + TxdStore.cpp + Windows + + + Name + TxdStore.h + Windows + + + Name + VisibilityPlugins.cpp + Windows + + + Name + VisibilityPlugins.h + Windows + + + Name + Date.cpp + Windows + + + Name + Date.h + Windows + + + Name + GenericGameStorage.cpp + Windows + + + Name + GenericGameStorage.h + Windows + + + Name + MemoryCard.cpp + Windows + + + Name + MemoryCard.h + Windows + + + Name + PCSave.cpp + Windows + + + Name + PCSave.h + Windows + + + Name + crossplatform.cpp + Windows + + + Name + crossplatform.h + Windows + + + Name + events.cpp + Windows + + + Name + events.h + Windows + + + Name + platform.h + Windows + + + Name + skeleton.cpp + Windows + + + Name + skeleton.h + Windows + + + Name + resource.h + Windows + + + Name + win.cpp + Windows + + + Name + win.h + Windows + + + Name + win.rc + Windows + + + Name + Messages.cpp + Windows + + + Name + Messages.h + Windows + + + Name + Pager.cpp + Windows + + + Name + Pager.h + Windows + + + Name + Text.cpp + Windows + + + Name + Text.h + Windows + + + Name + Automobile.cpp + Windows + + + Name + Automobile.h + Windows + + + Name + Bike.h + Windows + + + Name + Boat.cpp + Windows + + + Name + Boat.h + Windows + + + Name + CarGen.cpp + Windows + + + Name + CarGen.h + Windows + + + Name + Cranes.cpp + Windows + + + Name + Cranes.h + Windows + + + Name + DamageManager.cpp + Windows + + + Name + DamageManager.h + Windows + + + Name + Door.cpp + Windows + + + Name + Door.h + Windows + + + Name + Floater.cpp + Windows + + + Name + Floater.h + Windows + + + Name + HandlingMgr.cpp + Windows + + + Name + HandlingMgr.h + Windows + + + Name + Heli.cpp + Windows + + + Name + Heli.h + Windows + + + Name + Plane.cpp + Windows + + + Name + Plane.h + Windows + + + Name + Train.cpp + Windows + + + Name + Train.h + Windows + + + Name + Transmission.cpp + Windows + + + Name + Transmission.h + Windows + + + Name + Vehicle.cpp + Windows + + + Name + Vehicle.h + Windows + + + Name + BulletInfo.cpp + Windows + + + Name + BulletInfo.h + Windows + + + Name + Explosion.cpp + Windows + + + Name + Explosion.h + Windows + + + Name + ProjectileInfo.cpp + Windows + + + Name + ProjectileInfo.h + Windows + + + Name + ShotInfo.cpp + Windows + + + Name + ShotInfo.h + Windows + + + Name + Weapon.cpp + Windows + + + Name + Weapon.h + Windows + + + Name + WeaponEffects.cpp + Windows + + + Name + WeaponEffects.h + Windows + + + Name + WeaponInfo.cpp + Windows + + + Name + WeaponInfo.h + Windows + + + Name + WeaponType.h + Windows + + + Name + mss32.lib + Windows + + + Name + d3d8.lib + Windows + + + Name + ddraw.lib + Windows + + + Name + dxguid.lib + Windows + + + Name + strmiids.lib + Windows + + + Name + dinput8.lib + Windows + + + Name + winmm.lib + Windows + + + Name + rwcore.lib + Windows + + + Name + rpworld.lib + Windows + + + Name + rpmatfx.lib + Windows + + + Name + rpskin.lib + Windows + + + Name + rphanim.lib + Windows + + + Name + rtbmp.lib + Windows + + + Name + rtquat.lib + Windows + + + Name + rtcharse.lib + Windows + + + Name + ole32.lib + Windows + + + Name + shell32.lib + Windows + + + Name + uuid.lib + Windows + + + Name + MSL_All_x86_D.lib + MacOS + + + Name + Comdlg32.lib + MacOS + + + Name + Gdi32.lib + MacOS + + + Name + Kernel32.lib + MacOS + + + Name + User32.lib + MacOS + + + + + Release + + + + UserSourceTrees + + + AlwaysSearchUserPathsfalse + InterpretDOSAndUnixPathstrue + RequireFrameworkStyleIncludesfalse + UserSearchPaths + + SearchPath + Path + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\animation + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\audio + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\buildings + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\collision + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\control + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\core + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\entities + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\math + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\modelinfo + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\objects + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\peds + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\render + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\rw + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\save + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\skel + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\text + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\vehicles + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\weapons + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\vendor\milessdk\lib + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\vendor\milessdk\include + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\dx8sdk\Lib + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\rwsdk\lib\d3d8\release + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\rwsdk\include\d3d8 + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\extras + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SystemSearchPaths + + SearchPath + Path..\sdk\rwsdk\include\d3d8 + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\sdk\dx8sdk\Include + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + PathWin32-x86 Support\Headers\ + PathFormatWindows + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + PathWin32-x86 Support\Libraries\ + PathFormatWindows + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + PathMSL + PathFormatWindows + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\src\audio\eax + PathFormatWindows + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + + + MWRuntimeSettings_WorkingDirectory + MWRuntimeSettings_CommandLine + MWRuntimeSettings_HostApplication + Path + PathFormatGeneric + PathRootAbsolute + + MWRuntimeSettings_EnvVars + + + LinkerWin32 x86 Linker + PreLinker + PostLinker + TargetnameRelease + OutputDirectory + Path + PathFormatWindows + PathRootProject + + SaveEntriesUsingRelativePathsfalse + + + FileMappings + + FileTypeTEXT + FileExtension.c + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cc + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cpp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.def + Compiler + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.h + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMaketrue + + + FileTypeTEXT + FileExtension.p + CompilerMW Pascal x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pas + CompilerMW Pascal x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.ppu + CompilerMW Pascal x86 + EditLanguage + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.rc + CompilerMW WinRC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.res + CompilerWinRes Import + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.doc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFilefalse + IgnoredByMaketrue + + + FileExtension.lib + CompilerLib Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.obj + CompilerObj Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.res + CompilerWinRes Import + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + + + CacheModDatestrue + ActivateBrowserfalse + DumpBrowserInfofalse + CacheSubprojectstrue + UseThirdPartyDebuggerfalse + DebuggerAppPath + Path + PathFormatGeneric + PathRootAbsolute + + DebuggerCmdLineArgs + DebuggerWorkingDir + Path + PathFormatGeneric + PathRootAbsolute + + + + LogSystemMessagesfalse + AutoTargetDLLsfalse + StopAtWatchpointstrue + PauseWhileRunningfalse + PauseInterval5 + PauseUIFlags0 + AltExePath + Path + PathFormatGeneric + PathRootAbsolute + + StopAtTempBPOnLaunchtrue + CacheSymbolicstrue + TempBPFunctionNamemain + TempBPType0 + + + Enabledfalse + ConnectionName + DownloadPath + LaunchRemoteAppfalse + RemoteAppPath + + + OtherExecutables + + + CustomColor1 + Red0 + Green32767 + Blue0 + + CustomColor2 + Red0 + Green32767 + Blue0 + + CustomColor3 + Red0 + Green32767 + Blue0 + + CustomColor4 + Red0 + Green32767 + Blue0 + + + + MWCodeGen_X86_processorPentiumII + MWCodeGen_X86_alignmentbytes8 + MWCodeGen_X86_exceptionsZeroOverhead + MWCodeGen_X86_extinst_mmx0 + MWCodeGen_X86_extinst_3dnow0 + MWCodeGen_X86_use_mmx_3dnow_convention0 + MWCodeGen_X86_machinecodelisting0 + MWCodeGen_X86_intrinsics1 + MWCodeGen_X86_syminfo0 + MWCodeGen_X86_codeviewinfo1 + MWCodeGen_X86_extinst_cmov_fcomi0 + MWCodeGen_X86_extinst_sse0 + + + MWDebugger_X86_Exceptions + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + PDisasmX86_showHeaderstrue + PDisasmX86_showSymTabtrue + PDisasmX86_showCodetrue + PDisasmX86_showSourcefalse + PDisasmX86_showHextrue + PDisasmX86_showRelocationtrue + PDisasmX86_showCommentsfalse + PDisasmX86_showDebugfalse + PDisasmX86_showExceptionsfalse + PDisasmX86_showDatatrue + PDisasmX86_showRawfalse + PDisasmX86_verbosefalse + + + MWFrontEnd_C_cplusplus1 + MWFrontEnd_C_checkprotos0 + MWFrontEnd_C_arm0 + MWFrontEnd_C_trigraphs0 + MWFrontEnd_C_onlystdkeywords0 + MWFrontEnd_C_enumsalwaysint1 + MWFrontEnd_C_mpwpointerstyle0 + MWFrontEnd_C_prefixname + MWFrontEnd_C_ansistrict0 + MWFrontEnd_C_mpwcnewline0 + MWFrontEnd_C_wchar_type1 + MWFrontEnd_C_enableexceptions1 + MWFrontEnd_C_dontreusestrings0 + MWFrontEnd_C_poolstrings1 + MWFrontEnd_C_dontinline0 + MWFrontEnd_C_useRTTI1 + MWFrontEnd_C_multibyteaware1 + MWFrontEnd_C_unsignedchars0 + MWFrontEnd_C_autoinline0 + MWFrontEnd_C_booltruefalse1 + MWFrontEnd_C_direct_to_som0 + MWFrontEnd_C_som_env_check0 + MWFrontEnd_C_alwaysinline0 + MWFrontEnd_C_inlinelevel0 + MWFrontEnd_C_ecplusplus0 + MWFrontEnd_C_objective_c0 + MWFrontEnd_C_defer_codegen0 + + + MWLinker_X86_entrypointusageDefault + MWLinker_X86_entrypoint + MWLinker_X86_subsystemWinGUI + MWLinker_X86_subsysmajorid4 + MWLinker_X86_subsysminorid0 + MWLinker_X86_usrmajorid0 + MWLinker_X86_usrminorid0 + MWLinker_X86_commandfile + MWLinker_X86_generatemap0 + MWLinker_X86_linksym0 + MWLinker_X86_linkCV1 + + + MWProject_X86_typeApplication + MWProject_X86_outfileRelease\gta3.exe + MWProject_X86_baseaddress4194304 + MWProject_X86_maxstacksize1024 + MWProject_X86_minstacksize4 + MWProject_X86_size1024 + MWProject_X86_minsize4 + MWProject_X86_importlib + + + MWWarning_C_warn_illpragma0 + MWWarning_C_warn_emptydecl0 + MWWarning_C_warn_possunwant1 + MWWarning_C_warn_unusedvar1 + MWWarning_C_warn_unusedarg0 + MWWarning_C_warn_extracomma1 + MWWarning_C_pedantic0 + MWWarning_C_warningerrors0 + MWWarning_C_warn_hidevirtual1 + MWWarning_C_warn_implicitconv0 + MWWarning_C_warn_notinlined0 + MWWarning_C_warn_structclass0 + + + MWWinRC_prefixnameResourcePrefix.h + + + GlobalOptimizer_X86__optimizationlevelLevel4 + GlobalOptimizer_X86__optforSpeed + + + + Name + MSL_All_x86.lib + MacOS + Library + + + + Name + Comdlg32.lib + MacOS + Library + + + + Name + Gdi32.lib + MacOS + Library + + + + Name + Kernel32.lib + MacOS + Library + + + + Name + User32.lib + MacOS + Library + + + + Name + AnimationId.h + Windows + Text + + + + Name + AnimBlendAssocGroup.cpp + Windows + Text + Debug + + + Name + AnimBlendAssocGroup.h + Windows + Text + + + + Name + AnimBlendAssociation.cpp + Windows + Text + Debug + + + Name + AnimBlendAssociation.h + Windows + Text + + + + Name + AnimBlendClumpData.cpp + Windows + Text + Debug + + + Name + AnimBlendClumpData.h + Windows + Text + + + + Name + AnimBlendHierarchy.cpp + Windows + Text + Debug + + + Name + AnimBlendHierarchy.h + Windows + Text + + + + Name + AnimBlendList.h + Windows + Text + + + + Name + AnimBlendNode.cpp + Windows + Text + Debug + + + Name + AnimBlendNode.h + Windows + Text + + + + Name + AnimBlendSequence.cpp + Windows + Text + Debug + + + Name + AnimBlendSequence.h + Windows + Text + + + + Name + AnimManager.cpp + Windows + Text + Debug + + + Name + AnimManager.h + Windows + Text + + + + Name + Bones.cpp + Windows + Text + Debug + + + Name + Bones.h + Windows + Text + + + + Name + CutsceneMgr.cpp + Windows + Text + Debug + + + Name + CutsceneMgr.h + Windows + Text + + + + Name + FrameUpdate.cpp + Windows + Text + Debug + + + Name + RpAnimBlend.cpp + Windows + Text + Debug + + + Name + RpAnimBlend.h + Windows + Text + + + + Name + audio_enums.h + Windows + Text + + + + Name + AudioCollision.cpp + Windows + Text + Debug + + + Name + AudioCollision.h + Windows + Text + + + + Name + AudioLogic.cpp + Windows + Text + + + + Name + AudioManager.cpp + Windows + Text + Debug + + + Name + AudioManager.h + Windows + Text + + + + Name + AudioSamples.h + Windows + Text + + + + Name + AudioScriptObject.cpp + Windows + Text + Debug + + + Name + AudioScriptObject.h + Windows + Text + + + + Name + DMAudio.cpp + Windows + Text + Debug + + + Name + DMAudio.h + Windows + Text + + + + Name + MusicManager.cpp + Windows + Text + Debug + + + Name + MusicManager.h + Windows + Text + + + + Name + PolRadio.cpp + Windows + Text + Debug + + + Name + PolRadio.h + Windows + Text + + + + Name + sampman.h + Windows + Text + + + + Name + sampman_miles.cpp + Windows + Text + Debug + + + Name + soundlist.h + Windows + Text + + + + Name + eax.h + Windows + Text + + + + Name + eax-util.cpp + Windows + Text + Debug + + + Name + eax-util.h + Windows + Text + + + + Name + Building.cpp + Windows + Text + Debug + + + Name + Building.h + Windows + Text + + + + Name + Solid.h + Windows + Text + + + + Name + Treadable.cpp + Windows + Text + Debug + + + Name + Treadable.h + Windows + Text + + + + Name + ColBox.cpp + Windows + Text + Debug + + + Name + ColBox.h + Windows + Text + + + + Name + ColLine.cpp + Windows + Text + Debug + + + Name + ColLine.h + Windows + Text + + + + Name + Collision.cpp + Windows + Text + Debug + + + Name + Collision.h + Windows + Text + + + + Name + ColModel.cpp + Windows + Text + Debug + + + Name + ColModel.h + Windows + Text + + + + Name + ColPoint.cpp + Windows + Text + Debug + + + Name + ColPoint.h + Windows + Text + + + + Name + ColSphere.cpp + Windows + Text + Debug + + + Name + ColSphere.h + Windows + Text + + + + Name + ColTriangle.cpp + Windows + Text + Debug + + + Name + ColTriangle.h + Windows + Text + + + + Name + CompressedVector.h + Windows + Text + + + + Name + TempColModels.cpp + Windows + Text + Debug + + + Name + TempColModels.h + Windows + Text + + + + Name + VuCollision.cpp + Windows + Text + Debug + + + Name + VuCollision.h + Windows + Text + + + + Name + AutoPilot.cpp + Windows + Text + Debug + + + Name + AutoPilot.h + Windows + Text + + + + Name + Bridge.cpp + Windows + Text + Debug + + + Name + Bridge.h + Windows + Text + + + + Name + CarAI.cpp + Windows + Text + Debug + + + Name + CarAI.h + Windows + Text + + + + Name + CarCtrl.cpp + Windows + Text + Debug + + + Name + CarCtrl.h + Windows + Text + + + + Name + Curves.cpp + Windows + Text + Debug + + + Name + Curves.h + Windows + Text + + + + Name + Darkel.cpp + Windows + Text + Debug + + + Name + Darkel.h + Windows + Text + + + + Name + GameLogic.cpp + Windows + Text + Debug + + + Name + GameLogic.h + Windows + Text + + + + Name + Garages.cpp + Windows + Text + Debug + + + Name + Garages.h + Windows + Text + + + + Name + NameGrid.cpp + Windows + Text + Debug + + + Name + NameGrid.h + Windows + Text + + + + Name + OnscreenTimer.cpp + Windows + Text + Debug + + + Name + OnscreenTimer.h + Windows + Text + + + + Name + PathFind.cpp + Windows + Text + Debug + + + Name + PathFind.h + Windows + Text + + + + Name + Phones.cpp + Windows + Text + Debug + + + Name + Phones.h + Windows + Text + + + + Name + Pickups.cpp + Windows + Text + Debug + + + Name + Pickups.h + Windows + Text + + + + Name + PowerPoints.cpp + Windows + Text + Debug + + + Name + PowerPoints.h + Windows + Text + + + + Name + Record.cpp + Windows + Text + Debug + + + Name + Record.h + Windows + Text + + + + Name + Remote.cpp + Windows + Text + Debug + + + Name + Remote.h + Windows + Text + + + + Name + Replay.cpp + Windows + Text + Debug + + + Name + Replay.h + Windows + Text + + + + Name + Restart.cpp + Windows + Text + Debug + + + Name + Restart.h + Windows + Text + + + + Name + RoadBlocks.cpp + Windows + Text + Debug + + + Name + RoadBlocks.h + Windows + Text + + + + Name + SceneEdit.cpp + Windows + Text + Debug + + + Name + SceneEdit.h + Windows + Text + + + + Name + Script.cpp + Windows + Text + Debug + + + Name + Script.h + Windows + Text + + + + Name + Script2.cpp + Windows + Text + Debug + + + Name + Script3.cpp + Windows + Text + Debug + + + Name + Script4.cpp + Windows + Text + Debug + + + Name + Script5.cpp + Windows + Text + Debug + + + Name + Script6.cpp + Windows + Text + Debug + + + Name + ScriptCommands.h + Windows + Text + + + + Name + TrafficLights.cpp + Windows + Text + Debug + + + Name + TrafficLights.h + Windows + Text + + + + Name + Accident.cpp + Windows + Text + Debug + + + Name + Accident.h + Windows + Text + + + + Name + AnimViewer.cpp + Windows + Text + Debug + + + Name + AnimViewer.h + Windows + Text + + + + Name + Cam.cpp + Windows + Text + Debug + + + Name + Camera.cpp + Windows + Text + Debug + + + Name + Camera.h + Windows + Text + + + + Name + CdStream.cpp + Windows + Text + Debug + + + Name + CdStream.h + Windows + Text + + + + Name + CdStreamPosix.cpp + Windows + Text + Debug + + + Name + Clock.cpp + Windows + Text + Debug + + + Name + Clock.h + Windows + Text + + + + Name + common.h + Windows + Text + + + + Name + config.h + Windows + Text + + + + Name + ControllerConfig.cpp + Windows + Text + Debug + + + Name + ControllerConfig.h + Windows + Text + + + + Name + Crime.h + Windows + Text + + + + Name + Debug.cpp + Windows + Text + Debug + + + Name + Debug.h + Windows + Text + + + + Name + Directory.cpp + Windows + Text + Debug + + + Name + Directory.h + Windows + Text + + + + Name + EventList.cpp + Windows + Text + Debug + + + Name + EventList.h + Windows + Text + + + + Name + FileLoader.cpp + Windows + Text + Debug + + + Name + FileLoader.h + Windows + Text + + + + Name + FileMgr.cpp + Windows + Text + Debug + + + Name + FileMgr.h + Windows + Text + + + + Name + Fire.cpp + Windows + Text + Debug + + + Name + Fire.h + Windows + Text + + + + Name + Frontend.cpp + Windows + Text + Debug + + + Name + Frontend.h + Windows + Text + + + + Name + Frontend_PS2.cpp + Windows + Text + Debug + + + Name + Frontend_PS2.h + Windows + Text + + + + Name + FrontEndControls.cpp + Windows + Text + Debug + + + Name + FrontEndControls.h + Windows + Text + + + + Name + FrontendTriggers.h + Windows + Text + + + + Name + Game.cpp + Windows + Text + Debug + + + Name + Game.h + Windows + Text + + + + Name + General.h + Windows + Text + + + + Name + IniFile.cpp + Windows + Text + Debug + + + Name + IniFile.h + Windows + Text + + + + Name + Lists.cpp + Windows + Text + Debug + + + Name + Lists.h + Windows + Text + + + + Name + main.cpp + Windows + Text + Debug + + + Name + main.h + Windows + Text + + + + Name + MenuScreens.cpp + Windows + Text + Debug + + + Name + MenuScreensCustom.cpp + Windows + Text + Debug + + + Name + obrstr.cpp + Windows + Text + Debug + + + Name + obrstr.h + Windows + Text + + + + Name + Pad.cpp + Windows + Text + Debug + + + Name + Pad.h + Windows + Text + + + + Name + Placeable.cpp + Windows + Text + Debug + + + Name + Placeable.h + Windows + Text + + + + Name + PlayerInfo.cpp + Windows + Text + Debug + + + Name + PlayerInfo.h + Windows + Text + + + + Name + Pools.cpp + Windows + Text + Debug + + + Name + Pools.h + Windows + Text + + + + Name + Profile.cpp + Windows + Text + Debug + + + Name + Profile.h + Windows + Text + + + + Name + Radar.cpp + Windows + Text + Debug + + + Name + Radar.h + Windows + Text + + + + Name + Range2D.cpp + Windows + Text + Debug + + + Name + Range2D.h + Windows + Text + + + + Name + Range3D.cpp + Windows + Text + Debug + + + Name + Range3D.h + Windows + Text + + + + Name + re3.cpp + Windows + Text + Debug + + + Name + References.cpp + Windows + Text + Debug + + + Name + References.h + Windows + Text + + + + Name + Stats.cpp + Windows + Text + Debug + + + Name + Stats.h + Windows + Text + + + + Name + Streaming.cpp + Windows + Text + Debug + + + Name + Streaming.h + Windows + Text + + + + Name + SurfaceTable.cpp + Windows + Text + Debug + + + Name + SurfaceTable.h + Windows + Text + + + + Name + templates.h + Windows + Text + + + + Name + timebars.cpp + Windows + Text + Debug + + + Name + timebars.h + Windows + Text + + + + Name + Timer.cpp + Windows + Text + Debug + + + Name + Timer.h + Windows + Text + + + + Name + TimeStep.cpp + Windows + Text + Debug + + + Name + TimeStep.h + Windows + Text + + + + Name + User.cpp + Windows + Text + Debug + + + Name + User.h + Windows + Text + + + + Name + Wanted.cpp + Windows + Text + Debug + + + Name + Wanted.h + Windows + Text + + + + Name + World.cpp + Windows + Text + Debug + + + Name + World.h + Windows + Text + + + + Name + ZoneCull.cpp + Windows + Text + Debug + + + Name + ZoneCull.h + Windows + Text + + + + Name + Zones.cpp + Windows + Text + Debug + + + Name + Zones.h + Windows + Text + + + + Name + Dummy.cpp + Windows + Text + Debug + + + Name + Dummy.h + Windows + Text + + + + Name + Entity.cpp + Windows + Text + Debug + + + Name + Entity.h + Windows + Text + + + + Name + Physical.cpp + Windows + Text + Debug + + + Name + Physical.h + Windows + Text + + + + Name + math.cpp + Windows + Text + Debug + + + Name + maths.h + Windows + Text + + + + Name + Matrix.cpp + Windows + Text + Debug + + + Name + Matrix.h + Windows + Text + + + + Name + Quaternion.cpp + Windows + Text + Debug + + + Name + Quaternion.h + Windows + Text + + + + Name + Rect.cpp + Windows + Text + Debug + + + Name + Rect.h + Windows + Text + + + + Name + Vector.cpp + Windows + Text + Debug + + + Name + Vector.h + Windows + Text + + + + Name + Vector2D.h + Windows + Text + + + + Name + VuVector.h + Windows + Text + + + + Name + BaseModelInfo.cpp + Windows + Text + Debug + + + Name + BaseModelInfo.h + Windows + Text + + + + Name + ClumpModelInfo.cpp + Windows + Text + Debug + + + Name + ClumpModelInfo.h + Windows + Text + + + + Name + MloModelInfo.cpp + Windows + Text + Debug + + + Name + MloModelInfo.h + Windows + Text + + + + Name + ModelIndices.cpp + Windows + Text + Debug + + + Name + ModelIndices.h + Windows + Text + + + + Name + ModelInfo.cpp + Windows + Text + Debug + + + Name + ModelInfo.h + Windows + Text + + + + Name + PedModelInfo.cpp + Windows + Text + Debug + + + Name + PedModelInfo.h + Windows + Text + + + + Name + SimpleModelInfo.cpp + Windows + Text + Debug + + + Name + SimpleModelInfo.h + Windows + Text + + + + Name + TimeModelInfo.cpp + Windows + Text + Debug + + + Name + TimeModelInfo.h + Windows + Text + + + + Name + VehicleModelInfo.cpp + Windows + Text + Debug + + + Name + VehicleModelInfo.h + Windows + Text + + + + Name + XtraCompsModelInfo.h + Windows + Text + + + + Name + CutsceneHead.cpp + Windows + Text + Debug + + + Name + CutsceneHead.h + Windows + Text + + + + Name + CutsceneObject.cpp + Windows + Text + Debug + + + Name + CutsceneObject.h + Windows + Text + + + + Name + DummyObject.cpp + Windows + Text + Debug + + + Name + DummyObject.h + Windows + Text + + + + Name + Object.cpp + Windows + Text + Debug + + + Name + Object.h + Windows + Text + + + + Name + ObjectData.cpp + Windows + Text + Debug + + + Name + ObjectData.h + Windows + Text + + + + Name + ParticleObject.cpp + Windows + Text + Debug + + + Name + ParticleObject.h + Windows + Text + + + + Name + Projectile.cpp + Windows + Text + Debug + + + Name + Projectile.h + Windows + Text + + + + Name + CivilianPed.cpp + Windows + Text + Debug + + + Name + CivilianPed.h + Windows + Text + + + + Name + CopPed.cpp + Windows + Text + Debug + + + Name + CopPed.h + Windows + Text + + + + Name + DummyPed.h + Windows + Text + + + + Name + EmergencyPed.cpp + Windows + Text + Debug + + + Name + EmergencyPed.h + Windows + Text + + + + Name + Gangs.cpp + Windows + Text + Debug + + + Name + Gangs.h + Windows + Text + + + + Name + Ped.cpp + Windows + Text + Debug + + + Name + Ped.h + Windows + Text + + + + Name + PedAI.cpp + Windows + Text + Debug + + + Name + PedChat.cpp + Windows + Text + Debug + + + Name + PedDebug.cpp + Windows + Text + Debug + + + Name + PedFight.cpp + Windows + Text + Debug + + + Name + PedIK.cpp + Windows + Text + Debug + + + Name + PedIK.h + Windows + Text + + + + Name + PedPlacement.cpp + Windows + Text + Debug + + + Name + PedPlacement.h + Windows + Text + + + + Name + PedRoutes.cpp + Windows + Text + Debug + + + Name + PedRoutes.h + Windows + Text + + + + Name + PedType.cpp + Windows + Text + Debug + + + Name + PedType.h + Windows + Text + + + + Name + PlayerPed.cpp + Windows + Text + Debug + + + Name + PlayerPed.h + Windows + Text + + + + Name + Population.cpp + Windows + Text + Debug + + + Name + Population.h + Windows + Text + + + + Name + 2dEffect.h + Windows + Text + + + + Name + Antennas.cpp + Windows + Text + Debug + + + Name + Antennas.h + Windows + Text + + + + Name + Clouds.cpp + Windows + Text + Debug + + + Name + Clouds.h + Windows + Text + + + + Name + Console.cpp + Windows + Text + Debug + + + Name + Console.h + Windows + Text + + + + Name + Coronas.cpp + Windows + Text + Debug + + + Name + Coronas.h + Windows + Text + + + + Name + Credits.cpp + Windows + Text + Debug + + + Name + Credits.h + Windows + Text + + + + Name + Draw.cpp + Windows + Text + Debug + + + Name + Draw.h + Windows + Text + + + + Name + Fluff.cpp + Windows + Text + Debug + + + Name + Fluff.h + Windows + Text + + + + Name + Font.cpp + Windows + Text + Debug + + + Name + Font.h + Windows + Text + + + + Name + Glass.cpp + Windows + Text + Debug + + + Name + Glass.h + Windows + Text + + + + Name + Hud.cpp + Windows + Text + Debug + + + Name + Hud.h + Windows + Text + + + + Name + Instance.cpp + Windows + Text + Debug + + + Name + Instance.h + Windows + Text + + + + Name + Lines.cpp + Windows + Text + Debug + + + Name + Lines.h + Windows + Text + + + + Name + MBlur.cpp + Windows + Text + Debug + + + Name + MBlur.h + Windows + Text + + + + Name + Particle.cpp + Windows + Text + Debug + + + Name + Particle.h + Windows + Text + + + + Name + ParticleMgr.cpp + Windows + Text + Debug + + + Name + ParticleMgr.h + Windows + Text + + + + Name + ParticleType.h + Windows + Text + + + + Name + PlayerSkin.cpp + Windows + Text + Debug + + + Name + PlayerSkin.h + Windows + Text + + + + Name + PointLights.cpp + Windows + Text + Debug + + + Name + PointLights.h + Windows + Text + + + + Name + RenderBuffer.cpp + Windows + Text + Debug + + + Name + RenderBuffer.h + Windows + Text + + + + Name + Renderer.cpp + Windows + Text + Debug + + + Name + Renderer.h + Windows + Text + + + + Name + Rubbish.cpp + Windows + Text + Debug + + + Name + Rubbish.h + Windows + Text + + + + Name + Shadows.cpp + Windows + Text + Debug + + + Name + Shadows.h + Windows + Text + + + + Name + Skidmarks.cpp + Windows + Text + Debug + + + Name + Skidmarks.h + Windows + Text + + + + Name + SpecialFX.cpp + Windows + Text + Debug + + + Name + SpecialFX.h + Windows + Text + + + + Name + Sprite.cpp + Windows + Text + Debug + + + Name + Sprite.h + Windows + Text + + + + Name + Sprite2d.cpp + Windows + Text + Debug + + + Name + Sprite2d.h + Windows + Text + + + + Name + TexList.cpp + Windows + Text + Debug + + + Name + TexList.h + Windows + Text + + + + Name + Timecycle.cpp + Windows + Text + Debug + + + Name + Timecycle.h + Windows + Text + + + + Name + WaterCannon.cpp + Windows + Text + Debug + + + Name + WaterCannon.h + Windows + Text + + + + Name + WaterLevel.cpp + Windows + Text + Debug + + + Name + WaterLevel.h + Windows + Text + + + + Name + Weather.cpp + Windows + Text + Debug + + + Name + Weather.h + Windows + Text + + + + Name + ClumpRead.cpp + Windows + Text + Debug + + + Name + Lights.cpp + Windows + Text + Debug + + + Name + Lights.h + Windows + Text + + + + Name + MemoryHeap.cpp + Windows + Text + Debug + + + Name + MemoryHeap.h + Windows + Text + + + + Name + MemoryMgr.cpp + Windows + Text + Debug + + + Name + MemoryMgr.h + Windows + Text + + + + Name + NodeName.cpp + Windows + Text + Debug + + + Name + NodeName.h + Windows + Text + + + + Name + RwHelper.cpp + Windows + Text + Debug + + + Name + RwHelper.h + Windows + Text + + + + Name + RwMatFX.cpp + Windows + Text + Debug + + + Name + RwPS2AlphaTest.cpp + Windows + Text + Debug + + + Name + TexRead.cpp + Windows + Text + Debug + + + Name + TexturePools.cpp + Windows + Text + Debug + + + Name + TexturePools.h + Windows + Text + + + + Name + TxdStore.cpp + Windows + Text + Debug + + + Name + TxdStore.h + Windows + Text + + + + Name + VisibilityPlugins.cpp + Windows + Text + Debug + + + Name + VisibilityPlugins.h + Windows + Text + + + + Name + Date.cpp + Windows + Text + Debug + + + Name + Date.h + Windows + Text + + + + Name + GenericGameStorage.cpp + Windows + Text + Debug + + + Name + GenericGameStorage.h + Windows + Text + + + + Name + MemoryCard.cpp + Windows + Text + Debug + + + Name + MemoryCard.h + Windows + Text + + + + Name + PCSave.cpp + Windows + Text + Debug + + + Name + PCSave.h + Windows + Text + + + + Name + crossplatform.cpp + Windows + Text + Debug + + + Name + crossplatform.h + Windows + Text + + + + Name + events.cpp + Windows + Text + Debug + + + Name + events.h + Windows + Text + + + + Name + platform.h + Windows + Text + + + + Name + skeleton.cpp + Windows + Text + Debug + + + Name + skeleton.h + Windows + Text + + + + Name + resource.h + Windows + Text + + + + Name + win.cpp + Windows + Text + Debug + + + Name + win.h + Windows + Text + + + + Name + win.rc + Windows + Text + Debug + + + Name + Messages.cpp + Windows + Text + Debug + + + Name + Messages.h + Windows + Text + + + + Name + Pager.cpp + Windows + Text + Debug + + + Name + Pager.h + Windows + Text + + + + Name + Text.cpp + Windows + Text + Debug + + + Name + Text.h + Windows + Text + + + + Name + Automobile.cpp + Windows + Text + Debug + + + Name + Automobile.h + Windows + Text + + + + Name + Bike.h + Windows + Text + + + + Name + Boat.cpp + Windows + Text + Debug + + + Name + Boat.h + Windows + Text + + + + Name + CarGen.cpp + Windows + Text + Debug + + + Name + CarGen.h + Windows + Text + + + + Name + Cranes.cpp + Windows + Text + Debug + + + Name + Cranes.h + Windows + Text + + + + Name + DamageManager.cpp + Windows + Text + Debug + + + Name + DamageManager.h + Windows + Text + + + + Name + Door.cpp + Windows + Text + Debug + + + Name + Door.h + Windows + Text + + + + Name + Floater.cpp + Windows + Text + Debug + + + Name + Floater.h + Windows + Text + + + + Name + HandlingMgr.cpp + Windows + Text + Debug + + + Name + HandlingMgr.h + Windows + Text + + + + Name + Heli.cpp + Windows + Text + Debug + + + Name + Heli.h + Windows + Text + + + + Name + Plane.cpp + Windows + Text + Debug + + + Name + Plane.h + Windows + Text + + + + Name + Train.cpp + Windows + Text + Debug + + + Name + Train.h + Windows + Text + + + + Name + Transmission.cpp + Windows + Text + Debug + + + Name + Transmission.h + Windows + Text + + + + Name + Vehicle.cpp + Windows + Text + Debug + + + Name + Vehicle.h + Windows + Text + + + + Name + BulletInfo.cpp + Windows + Text + Debug + + + Name + BulletInfo.h + Windows + Text + + + + Name + Explosion.cpp + Windows + Text + Debug + + + Name + Explosion.h + Windows + Text + + + + Name + ProjectileInfo.cpp + Windows + Text + Debug + + + Name + ProjectileInfo.h + Windows + Text + + + + Name + ShotInfo.cpp + Windows + Text + Debug + + + Name + ShotInfo.h + Windows + Text + + + + Name + Weapon.cpp + Windows + Text + Debug + + + Name + Weapon.h + Windows + Text + + + + Name + WeaponEffects.cpp + Windows + Text + Debug + + + Name + WeaponEffects.h + Windows + Text + + + + Name + WeaponInfo.cpp + Windows + Text + Debug + + + Name + WeaponInfo.h + Windows + Text + + + + Name + WeaponType.h + Windows + Text + + + + Name + mss32.lib + Windows + Library + Debug + + + Name + d3d8.lib + Windows + Library + Debug + + + Name + ddraw.lib + Windows + Library + Debug + + + Name + dxguid.lib + Windows + Library + Debug + + + Name + strmiids.lib + Windows + Library + Debug + + + Name + dinput8.lib + Windows + Library + Debug + + + Name + winmm.lib + Windows + Library + Debug + + + Name + rwcore.lib + Windows + Library + Debug + + + Name + rpworld.lib + Windows + Library + Debug + + + Name + rpmatfx.lib + Windows + Library + Debug + + + Name + rpskin.lib + Windows + Library + Debug + + + Name + rphanim.lib + Windows + Library + Debug + + + Name + rtbmp.lib + Windows + Library + Debug + + + Name + rtquat.lib + Windows + Library + Debug + + + Name + rtcharse.lib + Windows + Library + Debug + + + Name + ole32.lib + Windows + Library + Debug + + + Name + shell32.lib + Windows + Library + Debug + + + Name + uuid.lib + Windows + Library + Debug + + + + + Name + AnimationId.h + Windows + + + Name + AnimBlendAssocGroup.cpp + Windows + + + Name + AnimBlendAssocGroup.h + Windows + + + Name + AnimBlendAssociation.cpp + Windows + + + Name + AnimBlendAssociation.h + Windows + + + Name + AnimBlendClumpData.cpp + Windows + + + Name + AnimBlendClumpData.h + Windows + + + Name + AnimBlendHierarchy.cpp + Windows + + + Name + AnimBlendHierarchy.h + Windows + + + Name + AnimBlendList.h + Windows + + + Name + AnimBlendNode.cpp + Windows + + + Name + AnimBlendNode.h + Windows + + + Name + AnimBlendSequence.cpp + Windows + + + Name + AnimBlendSequence.h + Windows + + + Name + AnimManager.cpp + Windows + + + Name + AnimManager.h + Windows + + + Name + Bones.cpp + Windows + + + Name + Bones.h + Windows + + + Name + CutsceneMgr.cpp + Windows + + + Name + CutsceneMgr.h + Windows + + + Name + FrameUpdate.cpp + Windows + + + Name + RpAnimBlend.cpp + Windows + + + Name + RpAnimBlend.h + Windows + + + Name + audio_enums.h + Windows + + + Name + AudioCollision.cpp + Windows + + + Name + AudioCollision.h + Windows + + + Name + AudioLogic.cpp + Windows + + + Name + AudioManager.cpp + Windows + + + Name + AudioManager.h + Windows + + + Name + AudioSamples.h + Windows + + + Name + AudioScriptObject.cpp + Windows + + + Name + AudioScriptObject.h + Windows + + + Name + DMAudio.cpp + Windows + + + Name + DMAudio.h + Windows + + + Name + MusicManager.cpp + Windows + + + Name + MusicManager.h + Windows + + + Name + PolRadio.cpp + Windows + + + Name + PolRadio.h + Windows + + + Name + sampman.h + Windows + + + Name + sampman_miles.cpp + Windows + + + Name + soundlist.h + Windows + + + Name + eax.h + Windows + + + Name + eax-util.cpp + Windows + + + Name + eax-util.h + Windows + + + Name + Building.cpp + Windows + + + Name + Building.h + Windows + + + Name + Solid.h + Windows + + + Name + Treadable.cpp + Windows + + + Name + Treadable.h + Windows + + + Name + ColBox.cpp + Windows + + + Name + ColBox.h + Windows + + + Name + ColLine.cpp + Windows + + + Name + ColLine.h + Windows + + + Name + Collision.cpp + Windows + + + Name + Collision.h + Windows + + + Name + ColModel.cpp + Windows + + + Name + ColModel.h + Windows + + + Name + ColPoint.cpp + Windows + + + Name + ColPoint.h + Windows + + + Name + ColSphere.cpp + Windows + + + Name + ColSphere.h + Windows + + + Name + ColTriangle.cpp + Windows + + + Name + ColTriangle.h + Windows + + + Name + CompressedVector.h + Windows + + + Name + TempColModels.cpp + Windows + + + Name + TempColModels.h + Windows + + + Name + VuCollision.cpp + Windows + + + Name + VuCollision.h + Windows + + + Name + AutoPilot.cpp + Windows + + + Name + AutoPilot.h + Windows + + + Name + Bridge.cpp + Windows + + + Name + Bridge.h + Windows + + + Name + CarAI.cpp + Windows + + + Name + CarAI.h + Windows + + + Name + CarCtrl.cpp + Windows + + + Name + CarCtrl.h + Windows + + + Name + Curves.cpp + Windows + + + Name + Curves.h + Windows + + + Name + Darkel.cpp + Windows + + + Name + Darkel.h + Windows + + + Name + GameLogic.cpp + Windows + + + Name + GameLogic.h + Windows + + + Name + Garages.cpp + Windows + + + Name + Garages.h + Windows + + + Name + NameGrid.cpp + Windows + + + Name + NameGrid.h + Windows + + + Name + OnscreenTimer.cpp + Windows + + + Name + OnscreenTimer.h + Windows + + + Name + PathFind.cpp + Windows + + + Name + PathFind.h + Windows + + + Name + Phones.cpp + Windows + + + Name + Phones.h + Windows + + + Name + Pickups.cpp + Windows + + + Name + Pickups.h + Windows + + + Name + PowerPoints.cpp + Windows + + + Name + PowerPoints.h + Windows + + + Name + Record.cpp + Windows + + + Name + Record.h + Windows + + + Name + Remote.cpp + Windows + + + Name + Remote.h + Windows + + + Name + Replay.cpp + Windows + + + Name + Replay.h + Windows + + + Name + Restart.cpp + Windows + + + Name + Restart.h + Windows + + + Name + RoadBlocks.cpp + Windows + + + Name + RoadBlocks.h + Windows + + + Name + SceneEdit.cpp + Windows + + + Name + SceneEdit.h + Windows + + + Name + Script.cpp + Windows + + + Name + Script.h + Windows + + + Name + Script2.cpp + Windows + + + Name + Script3.cpp + Windows + + + Name + Script4.cpp + Windows + + + Name + Script5.cpp + Windows + + + Name + Script6.cpp + Windows + + + Name + ScriptCommands.h + Windows + + + Name + TrafficLights.cpp + Windows + + + Name + TrafficLights.h + Windows + + + Name + Accident.cpp + Windows + + + Name + Accident.h + Windows + + + Name + AnimViewer.cpp + Windows + + + Name + AnimViewer.h + Windows + + + Name + Cam.cpp + Windows + + + Name + Camera.cpp + Windows + + + Name + Camera.h + Windows + + + Name + CdStream.cpp + Windows + + + Name + CdStream.h + Windows + + + Name + CdStreamPosix.cpp + Windows + + + Name + Clock.cpp + Windows + + + Name + Clock.h + Windows + + + Name + common.h + Windows + + + Name + config.h + Windows + + + Name + ControllerConfig.cpp + Windows + + + Name + ControllerConfig.h + Windows + + + Name + Crime.h + Windows + + + Name + Debug.cpp + Windows + + + Name + Debug.h + Windows + + + Name + Directory.cpp + Windows + + + Name + Directory.h + Windows + + + Name + EventList.cpp + Windows + + + Name + EventList.h + Windows + + + Name + FileLoader.cpp + Windows + + + Name + FileLoader.h + Windows + + + Name + FileMgr.cpp + Windows + + + Name + FileMgr.h + Windows + + + Name + Fire.cpp + Windows + + + Name + Fire.h + Windows + + + Name + Frontend.cpp + Windows + + + Name + Frontend.h + Windows + + + Name + Frontend_PS2.cpp + Windows + + + Name + Frontend_PS2.h + Windows + + + Name + FrontEndControls.cpp + Windows + + + Name + FrontEndControls.h + Windows + + + Name + FrontendTriggers.h + Windows + + + Name + Game.cpp + Windows + + + Name + Game.h + Windows + + + Name + General.h + Windows + + + Name + IniFile.cpp + Windows + + + Name + IniFile.h + Windows + + + Name + Lists.cpp + Windows + + + Name + Lists.h + Windows + + + Name + main.cpp + Windows + + + Name + main.h + Windows + + + Name + MenuScreens.cpp + Windows + + + Name + MenuScreensCustom.cpp + Windows + + + Name + obrstr.cpp + Windows + + + Name + obrstr.h + Windows + + + Name + Pad.cpp + Windows + + + Name + Pad.h + Windows + + + Name + Placeable.cpp + Windows + + + Name + Placeable.h + Windows + + + Name + PlayerInfo.cpp + Windows + + + Name + PlayerInfo.h + Windows + + + Name + Pools.cpp + Windows + + + Name + Pools.h + Windows + + + Name + Profile.cpp + Windows + + + Name + Profile.h + Windows + + + Name + Radar.cpp + Windows + + + Name + Radar.h + Windows + + + Name + Range2D.cpp + Windows + + + Name + Range2D.h + Windows + + + Name + Range3D.cpp + Windows + + + Name + Range3D.h + Windows + + + Name + re3.cpp + Windows + + + Name + References.cpp + Windows + + + Name + References.h + Windows + + + Name + Stats.cpp + Windows + + + Name + Stats.h + Windows + + + Name + Streaming.cpp + Windows + + + Name + Streaming.h + Windows + + + Name + SurfaceTable.cpp + Windows + + + Name + SurfaceTable.h + Windows + + + Name + templates.h + Windows + + + Name + timebars.cpp + Windows + + + Name + timebars.h + Windows + + + Name + Timer.cpp + Windows + + + Name + Timer.h + Windows + + + Name + TimeStep.cpp + Windows + + + Name + TimeStep.h + Windows + + + Name + User.cpp + Windows + + + Name + User.h + Windows + + + Name + Wanted.cpp + Windows + + + Name + Wanted.h + Windows + + + Name + World.cpp + Windows + + + Name + World.h + Windows + + + Name + ZoneCull.cpp + Windows + + + Name + ZoneCull.h + Windows + + + Name + Zones.cpp + Windows + + + Name + Zones.h + Windows + + + Name + Dummy.cpp + Windows + + + Name + Dummy.h + Windows + + + Name + Entity.cpp + Windows + + + Name + Entity.h + Windows + + + Name + Physical.cpp + Windows + + + Name + Physical.h + Windows + + + Name + math.cpp + Windows + + + Name + maths.h + Windows + + + Name + Matrix.cpp + Windows + + + Name + Matrix.h + Windows + + + Name + Quaternion.cpp + Windows + + + Name + Quaternion.h + Windows + + + Name + Rect.cpp + Windows + + + Name + Rect.h + Windows + + + Name + Vector.cpp + Windows + + + Name + Vector.h + Windows + + + Name + Vector2D.h + Windows + + + Name + VuVector.h + Windows + + + Name + BaseModelInfo.cpp + Windows + + + Name + BaseModelInfo.h + Windows + + + Name + ClumpModelInfo.cpp + Windows + + + Name + ClumpModelInfo.h + Windows + + + Name + MloModelInfo.cpp + Windows + + + Name + MloModelInfo.h + Windows + + + Name + ModelIndices.cpp + Windows + + + Name + ModelIndices.h + Windows + + + Name + ModelInfo.cpp + Windows + + + Name + ModelInfo.h + Windows + + + Name + PedModelInfo.cpp + Windows + + + Name + PedModelInfo.h + Windows + + + Name + SimpleModelInfo.cpp + Windows + + + Name + SimpleModelInfo.h + Windows + + + Name + TimeModelInfo.cpp + Windows + + + Name + TimeModelInfo.h + Windows + + + Name + VehicleModelInfo.cpp + Windows + + + Name + VehicleModelInfo.h + Windows + + + Name + XtraCompsModelInfo.h + Windows + + + Name + CutsceneHead.cpp + Windows + + + Name + CutsceneHead.h + Windows + + + Name + CutsceneObject.cpp + Windows + + + Name + CutsceneObject.h + Windows + + + Name + DummyObject.cpp + Windows + + + Name + DummyObject.h + Windows + + + Name + Object.cpp + Windows + + + Name + Object.h + Windows + + + Name + ObjectData.cpp + Windows + + + Name + ObjectData.h + Windows + + + Name + ParticleObject.cpp + Windows + + + Name + ParticleObject.h + Windows + + + Name + Projectile.cpp + Windows + + + Name + Projectile.h + Windows + + + Name + CivilianPed.cpp + Windows + + + Name + CivilianPed.h + Windows + + + Name + CopPed.cpp + Windows + + + Name + CopPed.h + Windows + + + Name + DummyPed.h + Windows + + + Name + EmergencyPed.cpp + Windows + + + Name + EmergencyPed.h + Windows + + + Name + Gangs.cpp + Windows + + + Name + Gangs.h + Windows + + + Name + Ped.cpp + Windows + + + Name + Ped.h + Windows + + + Name + PedAI.cpp + Windows + + + Name + PedChat.cpp + Windows + + + Name + PedDebug.cpp + Windows + + + Name + PedFight.cpp + Windows + + + Name + PedIK.cpp + Windows + + + Name + PedIK.h + Windows + + + Name + PedPlacement.cpp + Windows + + + Name + PedPlacement.h + Windows + + + Name + PedRoutes.cpp + Windows + + + Name + PedRoutes.h + Windows + + + Name + PedType.cpp + Windows + + + Name + PedType.h + Windows + + + Name + PlayerPed.cpp + Windows + + + Name + PlayerPed.h + Windows + + + Name + Population.cpp + Windows + + + Name + Population.h + Windows + + + Name + 2dEffect.h + Windows + + + Name + Antennas.cpp + Windows + + + Name + Antennas.h + Windows + + + Name + Clouds.cpp + Windows + + + Name + Clouds.h + Windows + + + Name + Console.cpp + Windows + + + Name + Console.h + Windows + + + Name + Coronas.cpp + Windows + + + Name + Coronas.h + Windows + + + Name + Credits.cpp + Windows + + + Name + Credits.h + Windows + + + Name + Draw.cpp + Windows + + + Name + Draw.h + Windows + + + Name + Fluff.cpp + Windows + + + Name + Fluff.h + Windows + + + Name + Font.cpp + Windows + + + Name + Font.h + Windows + + + Name + Glass.cpp + Windows + + + Name + Glass.h + Windows + + + Name + Hud.cpp + Windows + + + Name + Hud.h + Windows + + + Name + Instance.cpp + Windows + + + Name + Instance.h + Windows + + + Name + Lines.cpp + Windows + + + Name + Lines.h + Windows + + + Name + MBlur.cpp + Windows + + + Name + MBlur.h + Windows + + + Name + Particle.cpp + Windows + + + Name + Particle.h + Windows + + + Name + ParticleMgr.cpp + Windows + + + Name + ParticleMgr.h + Windows + + + Name + ParticleType.h + Windows + + + Name + PlayerSkin.cpp + Windows + + + Name + PlayerSkin.h + Windows + + + Name + PointLights.cpp + Windows + + + Name + PointLights.h + Windows + + + Name + RenderBuffer.cpp + Windows + + + Name + RenderBuffer.h + Windows + + + Name + Renderer.cpp + Windows + + + Name + Renderer.h + Windows + + + Name + Rubbish.cpp + Windows + + + Name + Rubbish.h + Windows + + + Name + Shadows.cpp + Windows + + + Name + Shadows.h + Windows + + + Name + Skidmarks.cpp + Windows + + + Name + Skidmarks.h + Windows + + + Name + SpecialFX.cpp + Windows + + + Name + SpecialFX.h + Windows + + + Name + Sprite.cpp + Windows + + + Name + Sprite.h + Windows + + + Name + Sprite2d.cpp + Windows + + + Name + Sprite2d.h + Windows + + + Name + TexList.cpp + Windows + + + Name + TexList.h + Windows + + + Name + Timecycle.cpp + Windows + + + Name + Timecycle.h + Windows + + + Name + WaterCannon.cpp + Windows + + + Name + WaterCannon.h + Windows + + + Name + WaterLevel.cpp + Windows + + + Name + WaterLevel.h + Windows + + + Name + Weather.cpp + Windows + + + Name + Weather.h + Windows + + + Name + ClumpRead.cpp + Windows + + + Name + Lights.cpp + Windows + + + Name + Lights.h + Windows + + + Name + MemoryHeap.cpp + Windows + + + Name + MemoryHeap.h + Windows + + + Name + MemoryMgr.cpp + Windows + + + Name + MemoryMgr.h + Windows + + + Name + NodeName.cpp + Windows + + + Name + NodeName.h + Windows + + + Name + RwHelper.cpp + Windows + + + Name + RwHelper.h + Windows + + + Name + RwMatFX.cpp + Windows + + + Name + RwPS2AlphaTest.cpp + Windows + + + Name + TexRead.cpp + Windows + + + Name + TexturePools.cpp + Windows + + + Name + TexturePools.h + Windows + + + Name + TxdStore.cpp + Windows + + + Name + TxdStore.h + Windows + + + Name + VisibilityPlugins.cpp + Windows + + + Name + VisibilityPlugins.h + Windows + + + Name + Date.cpp + Windows + + + Name + Date.h + Windows + + + Name + GenericGameStorage.cpp + Windows + + + Name + GenericGameStorage.h + Windows + + + Name + MemoryCard.cpp + Windows + + + Name + MemoryCard.h + Windows + + + Name + PCSave.cpp + Windows + + + Name + PCSave.h + Windows + + + Name + crossplatform.cpp + Windows + + + Name + crossplatform.h + Windows + + + Name + events.cpp + Windows + + + Name + events.h + Windows + + + Name + platform.h + Windows + + + Name + skeleton.cpp + Windows + + + Name + skeleton.h + Windows + + + Name + resource.h + Windows + + + Name + win.cpp + Windows + + + Name + win.h + Windows + + + Name + win.rc + Windows + + + Name + Messages.cpp + Windows + + + Name + Messages.h + Windows + + + Name + Pager.cpp + Windows + + + Name + Pager.h + Windows + + + Name + Text.cpp + Windows + + + Name + Text.h + Windows + + + Name + Automobile.cpp + Windows + + + Name + Automobile.h + Windows + + + Name + Bike.h + Windows + + + Name + Boat.cpp + Windows + + + Name + Boat.h + Windows + + + Name + CarGen.cpp + Windows + + + Name + CarGen.h + Windows + + + Name + Cranes.cpp + Windows + + + Name + Cranes.h + Windows + + + Name + DamageManager.cpp + Windows + + + Name + DamageManager.h + Windows + + + Name + Door.cpp + Windows + + + Name + Door.h + Windows + + + Name + Floater.cpp + Windows + + + Name + Floater.h + Windows + + + Name + HandlingMgr.cpp + Windows + + + Name + HandlingMgr.h + Windows + + + Name + Heli.cpp + Windows + + + Name + Heli.h + Windows + + + Name + Plane.cpp + Windows + + + Name + Plane.h + Windows + + + Name + Train.cpp + Windows + + + Name + Train.h + Windows + + + Name + Transmission.cpp + Windows + + + Name + Transmission.h + Windows + + + Name + Vehicle.cpp + Windows + + + Name + Vehicle.h + Windows + + + Name + BulletInfo.cpp + Windows + + + Name + BulletInfo.h + Windows + + + Name + Explosion.cpp + Windows + + + Name + Explosion.h + Windows + + + Name + ProjectileInfo.cpp + Windows + + + Name + ProjectileInfo.h + Windows + + + Name + ShotInfo.cpp + Windows + + + Name + ShotInfo.h + Windows + + + Name + Weapon.cpp + Windows + + + Name + Weapon.h + Windows + + + Name + WeaponEffects.cpp + Windows + + + Name + WeaponEffects.h + Windows + + + Name + WeaponInfo.cpp + Windows + + + Name + WeaponInfo.h + Windows + + + Name + WeaponType.h + Windows + + + Name + mss32.lib + Windows + + + Name + d3d8.lib + Windows + + + Name + ddraw.lib + Windows + + + Name + dxguid.lib + Windows + + + Name + strmiids.lib + Windows + + + Name + dinput8.lib + Windows + + + Name + winmm.lib + Windows + + + Name + rwcore.lib + Windows + + + Name + rpworld.lib + Windows + + + Name + rpmatfx.lib + Windows + + + Name + rpskin.lib + Windows + + + Name + rphanim.lib + Windows + + + Name + rtbmp.lib + Windows + + + Name + rtquat.lib + Windows + + + Name + rtcharse.lib + Windows + + + Name + MSL_All_x86.lib + MacOS + + + Name + Comdlg32.lib + MacOS + + + Name + Gdi32.lib + MacOS + + + Name + Kernel32.lib + MacOS + + + Name + User32.lib + MacOS + + + Name + ole32.lib + Windows + + + Name + shell32.lib + Windows + + + Name + uuid.lib + Windows + + + + + + + Debug + Release + + + + animation + + Debug + Name + AnimationId.h + Windows + + + Debug + Name + AnimBlendAssocGroup.cpp + Windows + + + Debug + Name + AnimBlendAssocGroup.h + Windows + + + Debug + Name + AnimBlendAssociation.cpp + Windows + + + Debug + Name + AnimBlendAssociation.h + Windows + + + Debug + Name + AnimBlendClumpData.cpp + Windows + + + Debug + Name + AnimBlendClumpData.h + Windows + + + Debug + Name + AnimBlendHierarchy.cpp + Windows + + + Debug + Name + AnimBlendHierarchy.h + Windows + + + Debug + Name + AnimBlendList.h + Windows + + + Debug + Name + AnimBlendNode.cpp + Windows + + + Debug + Name + AnimBlendNode.h + Windows + + + Debug + Name + AnimBlendSequence.cpp + Windows + + + Debug + Name + AnimBlendSequence.h + Windows + + + Debug + Name + AnimManager.cpp + Windows + + + Debug + Name + AnimManager.h + Windows + + + Debug + Name + Bones.cpp + Windows + + + Debug + Name + Bones.h + Windows + + + Debug + Name + CutsceneMgr.cpp + Windows + + + Debug + Name + CutsceneMgr.h + Windows + + + Debug + Name + FrameUpdate.cpp + Windows + + + Debug + Name + RpAnimBlend.cpp + Windows + + + Debug + Name + RpAnimBlend.h + Windows + + + audio + + Debug + Name + audio_enums.h + Windows + + + Debug + Name + AudioCollision.cpp + Windows + + + Debug + Name + AudioCollision.h + Windows + + + Debug + Name + AudioLogic.cpp + Windows + + + Debug + Name + AudioManager.cpp + Windows + + + Debug + Name + AudioManager.h + Windows + + + Debug + Name + AudioSamples.h + Windows + + + Debug + Name + AudioScriptObject.cpp + Windows + + + Debug + Name + AudioScriptObject.h + Windows + + + Debug + Name + DMAudio.cpp + Windows + + + Debug + Name + DMAudio.h + Windows + + + Debug + Name + MusicManager.cpp + Windows + + + Debug + Name + MusicManager.h + Windows + + + Release + Name + PolRadio.cpp + Windows + + + Release + Name + PolRadio.h + Windows + + + Debug + Name + sampman.h + Windows + + + Debug + Name + sampman_miles.cpp + Windows + + + Debug + Name + soundlist.h + Windows + + + Debug + Name + eax.h + Windows + + + Debug + Name + eax-util.cpp + Windows + + + Debug + Name + eax-util.h + Windows + + + buildings + + Debug + Name + Building.cpp + Windows + + + Debug + Name + Building.h + Windows + + + Debug + Name + Solid.h + Windows + + + Debug + Name + Treadable.cpp + Windows + + + Debug + Name + Treadable.h + Windows + + + collision + + Debug + Name + ColBox.cpp + Windows + + + Debug + Name + ColBox.h + Windows + + + Debug + Name + ColLine.cpp + Windows + + + Debug + Name + ColLine.h + Windows + + + Debug + Name + Collision.cpp + Windows + + + Debug + Name + Collision.h + Windows + + + Debug + Name + ColModel.cpp + Windows + + + Debug + Name + ColModel.h + Windows + + + Debug + Name + ColPoint.cpp + Windows + + + Debug + Name + ColPoint.h + Windows + + + Debug + Name + ColSphere.cpp + Windows + + + Debug + Name + ColSphere.h + Windows + + + Debug + Name + ColTriangle.cpp + Windows + + + Debug + Name + ColTriangle.h + Windows + + + Debug + Name + CompressedVector.h + Windows + + + Debug + Name + TempColModels.cpp + Windows + + + Debug + Name + TempColModels.h + Windows + + + Debug + Name + VuCollision.cpp + Windows + + + Debug + Name + VuCollision.h + Windows + + + control + + Debug + Name + AutoPilot.cpp + Windows + + + Debug + Name + AutoPilot.h + Windows + + + Debug + Name + Bridge.cpp + Windows + + + Debug + Name + Bridge.h + Windows + + + Debug + Name + CarAI.cpp + Windows + + + Debug + Name + CarAI.h + Windows + + + Debug + Name + CarCtrl.cpp + Windows + + + Debug + Name + CarCtrl.h + Windows + + + Debug + Name + Curves.cpp + Windows + + + Debug + Name + Curves.h + Windows + + + Debug + Name + Darkel.cpp + Windows + + + Debug + Name + Darkel.h + Windows + + + Debug + Name + GameLogic.cpp + Windows + + + Debug + Name + GameLogic.h + Windows + + + Debug + Name + Garages.cpp + Windows + + + Debug + Name + Garages.h + Windows + + + Debug + Name + NameGrid.cpp + Windows + + + Debug + Name + NameGrid.h + Windows + + + Debug + Name + OnscreenTimer.cpp + Windows + + + Debug + Name + OnscreenTimer.h + Windows + + + Debug + Name + PathFind.cpp + Windows + + + Debug + Name + PathFind.h + Windows + + + Debug + Name + Phones.cpp + Windows + + + Debug + Name + Phones.h + Windows + + + Debug + Name + Pickups.cpp + Windows + + + Debug + Name + Pickups.h + Windows + + + Debug + Name + PowerPoints.cpp + Windows + + + Debug + Name + PowerPoints.h + Windows + + + Debug + Name + Record.cpp + Windows + + + Debug + Name + Record.h + Windows + + + Debug + Name + Remote.cpp + Windows + + + Debug + Name + Remote.h + Windows + + + Debug + Name + Replay.cpp + Windows + + + Debug + Name + Replay.h + Windows + + + Debug + Name + Restart.cpp + Windows + + + Debug + Name + Restart.h + Windows + + + Debug + Name + RoadBlocks.cpp + Windows + + + Debug + Name + RoadBlocks.h + Windows + + + Debug + Name + SceneEdit.cpp + Windows + + + Debug + Name + SceneEdit.h + Windows + + + Debug + Name + Script.cpp + Windows + + + Debug + Name + Script.h + Windows + + + Debug + Name + Script2.cpp + Windows + + + Debug + Name + Script3.cpp + Windows + + + Debug + Name + Script4.cpp + Windows + + + Debug + Name + Script5.cpp + Windows + + + Debug + Name + Script6.cpp + Windows + + + Debug + Name + ScriptCommands.h + Windows + + + Debug + Name + TrafficLights.cpp + Windows + + + Debug + Name + TrafficLights.h + Windows + + + core + + Debug + Name + Accident.cpp + Windows + + + Debug + Name + Accident.h + Windows + + + Debug + Name + AnimViewer.cpp + Windows + + + Debug + Name + AnimViewer.h + Windows + + + Debug + Name + Cam.cpp + Windows + + + Debug + Name + Camera.cpp + Windows + + + Debug + Name + Camera.h + Windows + + + Debug + Name + CdStream.cpp + Windows + + + Debug + Name + CdStream.h + Windows + + + Debug + Name + CdStreamPosix.cpp + Windows + + + Debug + Name + Clock.cpp + Windows + + + Debug + Name + Clock.h + Windows + + + Debug + Name + common.h + Windows + + + Debug + Name + config.h + Windows + + + Debug + Name + ControllerConfig.cpp + Windows + + + Debug + Name + ControllerConfig.h + Windows + + + Debug + Name + Crime.h + Windows + + + Debug + Name + Debug.cpp + Windows + + + Debug + Name + Debug.h + Windows + + + Debug + Name + Directory.cpp + Windows + + + Debug + Name + Directory.h + Windows + + + Debug + Name + EventList.cpp + Windows + + + Debug + Name + EventList.h + Windows + + + Debug + Name + FileLoader.cpp + Windows + + + Debug + Name + FileLoader.h + Windows + + + Debug + Name + FileMgr.cpp + Windows + + + Debug + Name + FileMgr.h + Windows + + + Debug + Name + Fire.cpp + Windows + + + Debug + Name + Fire.h + Windows + + + Debug + Name + Frontend.cpp + Windows + + + Debug + Name + Frontend.h + Windows + + + Debug + Name + Frontend_PS2.cpp + Windows + + + Debug + Name + Frontend_PS2.h + Windows + + + Debug + Name + FrontEndControls.cpp + Windows + + + Debug + Name + FrontEndControls.h + Windows + + + Debug + Name + FrontendTriggers.h + Windows + + + Debug + Name + Game.cpp + Windows + + + Debug + Name + Game.h + Windows + + + Debug + Name + General.h + Windows + + + Debug + Name + IniFile.cpp + Windows + + + Debug + Name + IniFile.h + Windows + + + Debug + Name + Lists.cpp + Windows + + + Debug + Name + Lists.h + Windows + + + Debug + Name + main.cpp + Windows + + + Debug + Name + main.h + Windows + + + Debug + Name + MenuScreens.cpp + Windows + + + Debug + Name + MenuScreensCustom.cpp + Windows + + + Debug + Name + obrstr.cpp + Windows + + + Debug + Name + obrstr.h + Windows + + + Debug + Name + Pad.cpp + Windows + + + Debug + Name + Pad.h + Windows + + + Debug + Name + Placeable.cpp + Windows + + + Debug + Name + Placeable.h + Windows + + + Debug + Name + PlayerInfo.cpp + Windows + + + Debug + Name + PlayerInfo.h + Windows + + + Debug + Name + Pools.cpp + Windows + + + Debug + Name + Pools.h + Windows + + + Debug + Name + Profile.cpp + Windows + + + Debug + Name + Profile.h + Windows + + + Debug + Name + Radar.cpp + Windows + + + Debug + Name + Radar.h + Windows + + + Debug + Name + Range2D.cpp + Windows + + + Debug + Name + Range2D.h + Windows + + + Debug + Name + Range3D.cpp + Windows + + + Debug + Name + Range3D.h + Windows + + + Debug + Name + re3.cpp + Windows + + + Debug + Name + References.cpp + Windows + + + Debug + Name + References.h + Windows + + + Debug + Name + Stats.cpp + Windows + + + Debug + Name + Stats.h + Windows + + + Debug + Name + Streaming.cpp + Windows + + + Debug + Name + Streaming.h + Windows + + + Debug + Name + SurfaceTable.cpp + Windows + + + Debug + Name + SurfaceTable.h + Windows + + + Debug + Name + templates.h + Windows + + + Debug + Name + timebars.cpp + Windows + + + Debug + Name + timebars.h + Windows + + + Debug + Name + Timer.cpp + Windows + + + Debug + Name + Timer.h + Windows + + + Debug + Name + TimeStep.cpp + Windows + + + Debug + Name + TimeStep.h + Windows + + + Debug + Name + User.cpp + Windows + + + Debug + Name + User.h + Windows + + + Debug + Name + Wanted.cpp + Windows + + + Debug + Name + Wanted.h + Windows + + + Debug + Name + World.cpp + Windows + + + Debug + Name + World.h + Windows + + + Debug + Name + ZoneCull.cpp + Windows + + + Debug + Name + ZoneCull.h + Windows + + + Debug + Name + Zones.cpp + Windows + + + Debug + Name + Zones.h + Windows + + + entities + + Debug + Name + Dummy.cpp + Windows + + + Debug + Name + Dummy.h + Windows + + + Debug + Name + Entity.cpp + Windows + + + Debug + Name + Entity.h + Windows + + + Debug + Name + Physical.cpp + Windows + + + Debug + Name + Physical.h + Windows + + + extras + + math + + Debug + Name + math.cpp + Windows + + + Debug + Name + maths.h + Windows + + + Debug + Name + Matrix.cpp + Windows + + + Debug + Name + Matrix.h + Windows + + + Debug + Name + Quaternion.cpp + Windows + + + Debug + Name + Quaternion.h + Windows + + + Debug + Name + Rect.cpp + Windows + + + Debug + Name + Rect.h + Windows + + + Debug + Name + Vector.cpp + Windows + + + Debug + Name + Vector.h + Windows + + + Debug + Name + Vector2D.h + Windows + + + Debug + Name + VuVector.h + Windows + + + modelinfo + + Debug + Name + BaseModelInfo.cpp + Windows + + + Debug + Name + BaseModelInfo.h + Windows + + + Debug + Name + ClumpModelInfo.cpp + Windows + + + Debug + Name + ClumpModelInfo.h + Windows + + + Debug + Name + MloModelInfo.cpp + Windows + + + Debug + Name + MloModelInfo.h + Windows + + + Debug + Name + ModelIndices.cpp + Windows + + + Debug + Name + ModelIndices.h + Windows + + + Debug + Name + ModelInfo.cpp + Windows + + + Debug + Name + ModelInfo.h + Windows + + + Debug + Name + PedModelInfo.cpp + Windows + + + Debug + Name + PedModelInfo.h + Windows + + + Debug + Name + SimpleModelInfo.cpp + Windows + + + Debug + Name + SimpleModelInfo.h + Windows + + + Debug + Name + TimeModelInfo.cpp + Windows + + + Debug + Name + TimeModelInfo.h + Windows + + + Debug + Name + VehicleModelInfo.cpp + Windows + + + Debug + Name + VehicleModelInfo.h + Windows + + + Debug + Name + XtraCompsModelInfo.h + Windows + + + objects + + Debug + Name + CutsceneHead.cpp + Windows + + + Debug + Name + CutsceneHead.h + Windows + + + Debug + Name + CutsceneObject.cpp + Windows + + + Debug + Name + CutsceneObject.h + Windows + + + Debug + Name + DummyObject.cpp + Windows + + + Debug + Name + DummyObject.h + Windows + + + Debug + Name + Object.cpp + Windows + + + Debug + Name + Object.h + Windows + + + Debug + Name + ObjectData.cpp + Windows + + + Debug + Name + ObjectData.h + Windows + + + Debug + Name + ParticleObject.cpp + Windows + + + Debug + Name + ParticleObject.h + Windows + + + Debug + Name + Projectile.cpp + Windows + + + Debug + Name + Projectile.h + Windows + + + peds + + Debug + Name + CivilianPed.cpp + Windows + + + Debug + Name + CivilianPed.h + Windows + + + Debug + Name + CopPed.cpp + Windows + + + Debug + Name + CopPed.h + Windows + + + Debug + Name + DummyPed.h + Windows + + + Debug + Name + EmergencyPed.cpp + Windows + + + Debug + Name + EmergencyPed.h + Windows + + + Debug + Name + Gangs.cpp + Windows + + + Debug + Name + Gangs.h + Windows + + + Debug + Name + Ped.cpp + Windows + + + Debug + Name + Ped.h + Windows + + + Debug + Name + PedAI.cpp + Windows + + + Debug + Name + PedChat.cpp + Windows + + + Debug + Name + PedDebug.cpp + Windows + + + Debug + Name + PedFight.cpp + Windows + + + Debug + Name + PedIK.cpp + Windows + + + Debug + Name + PedIK.h + Windows + + + Debug + Name + PedPlacement.cpp + Windows + + + Debug + Name + PedPlacement.h + Windows + + + Debug + Name + PedRoutes.cpp + Windows + + + Debug + Name + PedRoutes.h + Windows + + + Debug + Name + PedType.cpp + Windows + + + Debug + Name + PedType.h + Windows + + + Debug + Name + PlayerPed.cpp + Windows + + + Debug + Name + PlayerPed.h + Windows + + + Debug + Name + Population.cpp + Windows + + + Debug + Name + Population.h + Windows + + + render + + Debug + Name + 2dEffect.h + Windows + + + Debug + Name + Antennas.cpp + Windows + + + Debug + Name + Antennas.h + Windows + + + Debug + Name + Clouds.cpp + Windows + + + Debug + Name + Clouds.h + Windows + + + Debug + Name + Console.cpp + Windows + + + Debug + Name + Console.h + Windows + + + Debug + Name + Coronas.cpp + Windows + + + Debug + Name + Coronas.h + Windows + + + Debug + Name + Credits.cpp + Windows + + + Debug + Name + Credits.h + Windows + + + Debug + Name + Draw.cpp + Windows + + + Debug + Name + Draw.h + Windows + + + Debug + Name + Fluff.cpp + Windows + + + Debug + Name + Fluff.h + Windows + + + Debug + Name + Font.cpp + Windows + + + Debug + Name + Font.h + Windows + + + Debug + Name + Glass.cpp + Windows + + + Debug + Name + Glass.h + Windows + + + Debug + Name + Hud.cpp + Windows + + + Debug + Name + Hud.h + Windows + + + Debug + Name + Instance.cpp + Windows + + + Debug + Name + Instance.h + Windows + + + Debug + Name + Lines.cpp + Windows + + + Debug + Name + Lines.h + Windows + + + Debug + Name + MBlur.cpp + Windows + + + Debug + Name + MBlur.h + Windows + + + Debug + Name + Particle.cpp + Windows + + + Debug + Name + Particle.h + Windows + + + Debug + Name + ParticleMgr.cpp + Windows + + + Debug + Name + ParticleMgr.h + Windows + + + Debug + Name + ParticleType.h + Windows + + + Debug + Name + PlayerSkin.cpp + Windows + + + Debug + Name + PlayerSkin.h + Windows + + + Debug + Name + PointLights.cpp + Windows + + + Debug + Name + PointLights.h + Windows + + + Debug + Name + RenderBuffer.cpp + Windows + + + Debug + Name + RenderBuffer.h + Windows + + + Debug + Name + Renderer.cpp + Windows + + + Debug + Name + Renderer.h + Windows + + + Debug + Name + Rubbish.cpp + Windows + + + Debug + Name + Rubbish.h + Windows + + + Debug + Name + Shadows.cpp + Windows + + + Debug + Name + Shadows.h + Windows + + + Debug + Name + Skidmarks.cpp + Windows + + + Debug + Name + Skidmarks.h + Windows + + + Debug + Name + SpecialFX.cpp + Windows + + + Debug + Name + SpecialFX.h + Windows + + + Debug + Name + Sprite.cpp + Windows + + + Debug + Name + Sprite.h + Windows + + + Debug + Name + Sprite2d.cpp + Windows + + + Debug + Name + Sprite2d.h + Windows + + + Debug + Name + TexList.cpp + Windows + + + Debug + Name + TexList.h + Windows + + + Debug + Name + Timecycle.cpp + Windows + + + Debug + Name + Timecycle.h + Windows + + + Debug + Name + WaterCannon.cpp + Windows + + + Debug + Name + WaterCannon.h + Windows + + + Debug + Name + WaterLevel.cpp + Windows + + + Debug + Name + WaterLevel.h + Windows + + + Debug + Name + Weather.cpp + Windows + + + Debug + Name + Weather.h + Windows + + + rw + + Debug + Name + ClumpRead.cpp + Windows + + + Debug + Name + Lights.cpp + Windows + + + Debug + Name + Lights.h + Windows + + + Debug + Name + MemoryHeap.cpp + Windows + + + Debug + Name + MemoryHeap.h + Windows + + + Debug + Name + MemoryMgr.cpp + Windows + + + Debug + Name + MemoryMgr.h + Windows + + + Debug + Name + NodeName.cpp + Windows + + + Debug + Name + NodeName.h + Windows + + + Debug + Name + RwHelper.cpp + Windows + + + Debug + Name + RwHelper.h + Windows + + + Debug + Name + RwMatFX.cpp + Windows + + + Debug + Name + RwPS2AlphaTest.cpp + Windows + + + Debug + Name + TexRead.cpp + Windows + + + Debug + Name + TexturePools.cpp + Windows + + + Debug + Name + TexturePools.h + Windows + + + Debug + Name + TxdStore.cpp + Windows + + + Debug + Name + TxdStore.h + Windows + + + Debug + Name + VisibilityPlugins.cpp + Windows + + + Debug + Name + VisibilityPlugins.h + Windows + + + save + + Debug + Name + Date.cpp + Windows + + + Debug + Name + Date.h + Windows + + + Debug + Name + GenericGameStorage.cpp + Windows + + + Debug + Name + GenericGameStorage.h + Windows + + + Debug + Name + MemoryCard.cpp + Windows + + + Debug + Name + MemoryCard.h + Windows + + + Debug + Name + PCSave.cpp + Windows + + + Debug + Name + PCSave.h + Windows + + + skel + + Debug + Name + crossplatform.cpp + Windows + + + Debug + Name + crossplatform.h + Windows + + + Debug + Name + events.cpp + Windows + + + Debug + Name + events.h + Windows + + + Debug + Name + platform.h + Windows + + + Debug + Name + skeleton.cpp + Windows + + + Debug + Name + skeleton.h + Windows + + + Debug + Name + resource.h + Windows + + + Debug + Name + win.cpp + Windows + + + Debug + Name + win.h + Windows + + + Debug + Name + win.rc + Windows + + + text + + Debug + Name + Messages.cpp + Windows + + + Debug + Name + Messages.h + Windows + + + Debug + Name + Pager.cpp + Windows + + + Debug + Name + Pager.h + Windows + + + Debug + Name + Text.cpp + Windows + + + Debug + Name + Text.h + Windows + + + vehicles + + Debug + Name + Automobile.cpp + Windows + + + Debug + Name + Automobile.h + Windows + + + Debug + Name + Bike.h + Windows + + + Debug + Name + Boat.cpp + Windows + + + Debug + Name + Boat.h + Windows + + + Debug + Name + CarGen.cpp + Windows + + + Debug + Name + CarGen.h + Windows + + + Debug + Name + Cranes.cpp + Windows + + + Debug + Name + Cranes.h + Windows + + + Debug + Name + DamageManager.cpp + Windows + + + Debug + Name + DamageManager.h + Windows + + + Debug + Name + Door.cpp + Windows + + + Debug + Name + Door.h + Windows + + + Debug + Name + Floater.cpp + Windows + + + Debug + Name + Floater.h + Windows + + + Debug + Name + HandlingMgr.cpp + Windows + + + Debug + Name + HandlingMgr.h + Windows + + + Debug + Name + Heli.cpp + Windows + + + Debug + Name + Heli.h + Windows + + + Debug + Name + Plane.cpp + Windows + + + Debug + Name + Plane.h + Windows + + + Debug + Name + Train.cpp + Windows + + + Debug + Name + Train.h + Windows + + + Debug + Name + Transmission.cpp + Windows + + + Debug + Name + Transmission.h + Windows + + + Debug + Name + Vehicle.cpp + Windows + + + Debug + Name + Vehicle.h + Windows + + + weapons + + Debug + Name + BulletInfo.cpp + Windows + + + Debug + Name + BulletInfo.h + Windows + + + Debug + Name + Explosion.cpp + Windows + + + Debug + Name + Explosion.h + Windows + + + Debug + Name + ProjectileInfo.cpp + Windows + + + Debug + Name + ProjectileInfo.h + Windows + + + Debug + Name + ShotInfo.cpp + Windows + + + Debug + Name + ShotInfo.h + Windows + + + Debug + Name + Weapon.cpp + Windows + + + Debug + Name + Weapon.h + Windows + + + Debug + Name + WeaponEffects.cpp + Windows + + + Debug + Name + WeaponEffects.h + Windows + + + Debug + Name + WeaponInfo.cpp + Windows + + + Debug + Name + WeaponInfo.h + Windows + + + Debug + Name + WeaponType.h + Windows + + + RenderWare + + Debug + Name + rwcore.lib + Windows + + + Debug + Name + rpworld.lib + Windows + + + Debug + Name + rpmatfx.lib + Windows + + + Debug + Name + rpskin.lib + Windows + + + Debug + Name + rphanim.lib + Windows + + + Debug + Name + rtbmp.lib + Windows + + + Debug + Name + rtquat.lib + Windows + + + Debug + Name + rtcharse.lib + Windows + + + DirectX + + Debug + Name + d3d8.lib + Windows + + + Debug + Name + ddraw.lib + Windows + + + Debug + Name + dxguid.lib + Windows + + + Debug + Name + strmiids.lib + Windows + + + Debug + Name + dinput8.lib + Windows + + + Miles + + Debug + Name + mss32.lib + Windows + + + MSL ANSI Libraries + + Debug + Name + MSL_All_x86_D.lib + MacOS + + + Release + Name + MSL_All_x86.lib + MacOS + + + Win32 SDK Libraries + + Debug + Name + Gdi32.lib + MacOS + + + Debug + Name + Kernel32.lib + MacOS + + + Debug + Name + User32.lib + MacOS + + + Debug + Name + Comdlg32.lib + MacOS + + + Debug + Name + winmm.lib + Windows + + + Debug + Name + ole32.lib + Windows + + + Debug + Name + shell32.lib + Windows + + + Debug + Name + uuid.lib + Windows + + + + + From 171d9fd036d8b6c9a44c150554853f2f542f8f06 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 26 Jun 2021 13:13:07 +0200 Subject: [PATCH 166/314] fix screenshot name space --- src/core/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.cpp b/src/core/main.cpp index 6a773ba5..2a0a77ca 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -402,7 +402,7 @@ DoRWStuffEndOfFrame(void) } #else if (CPad::GetPad(1)->GetLeftShockJustDown() || CPad::GetPad(0)->GetFJustDown(11)) { - sprintf(s, "screen_%11lld.png", time(nil)); + sprintf(s, "screen_%011lld.png", time(nil)); RwGrabScreen(Scene.camera, s); } #endif From 2c92accb8ed515bc6539a01d5562aa72c9304010 Mon Sep 17 00:00:00 2001 From: Leandro Guedes Date: Sat, 26 Jun 2021 12:11:29 -0300 Subject: [PATCH 167/314] re3: Update Linux 64bit build download link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dea43575..d49258eb 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to - [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_d3d9-oal.zip) - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) - - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) + - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-18.04-gl3.zip) - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) - Extract the downloaded zip over your GTA 3 directory and run re3. The zip includes the gamefiles and in case of OpenAL the required dlls. From f3a931e1c99372ae4bc224ef482d4052a09580cb Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 26 Jun 2021 19:14:46 +0200 Subject: [PATCH 168/314] Revert "Revert "Redo ReadSaveBuf + common.h cleanup"" This reverts commit af7573ddbe38e0aaa485877e7ccb2e704b0f5a7f. --- src/audio/AudioScriptObject.cpp | 9 +- src/control/AutoPilot.cpp | 54 +++++----- src/control/Garages.cpp | 28 +++--- src/control/Phones.cpp | 11 ++- src/control/Pickups.cpp | 9 +- src/control/Restart.cpp | 30 +++--- src/control/Script5.cpp | 85 +++++++++------- src/core/Pools.cpp | 16 ++- src/core/Radar.cpp | 3 +- src/core/Zones.cpp | 28 +++--- src/core/common.h | 170 -------------------------------- src/entities/Entity.cpp | 6 +- src/extras/debugmenu.h | 114 +++++++++++++++++++++ src/peds/Gangs.cpp | 3 +- src/peds/Ped.cpp | 1 + src/peds/PedType.cpp | 3 +- src/peds/PlayerPed.cpp | 1 + src/render/Console.h | 2 + src/render/Particle.cpp | 1 + src/save/SaveBuf.h | 64 ++++++++++++ src/vehicles/Automobile.cpp | 3 +- src/vehicles/Boat.cpp | 1 + src/vehicles/CarGen.cpp | 20 ++-- src/vehicles/Cranes.cpp | 7 +- src/vehicles/Vehicle.cpp | 65 ++++++------ src/weapons/Weapon.cpp | 1 + 26 files changed, 398 insertions(+), 337 deletions(-) create mode 100644 src/save/SaveBuf.h diff --git a/src/audio/AudioScriptObject.cpp b/src/audio/AudioScriptObject.cpp index c74feb92..03efdea9 100644 --- a/src/audio/AudioScriptObject.cpp +++ b/src/audio/AudioScriptObject.cpp @@ -3,6 +3,7 @@ #include "AudioScriptObject.h" #include "Pools.h" #include "DMAudio.h" +#include "SaveBuf.h" cAudioScriptObject::cAudioScriptObject() { @@ -53,12 +54,14 @@ cAudioScriptObject::LoadAllAudioScriptObjects(uint8 *buf, uint32 size) CheckSaveHeader(buf, 'A', 'U', 'D', '\0', size - SAVE_HEADER_SIZE); - int32 pool_size = ReadSaveBuf(buf); + int32 pool_size; + ReadSaveBuf(&pool_size, buf); for (int32 i = 0; i < pool_size; i++) { - int handle = ReadSaveBuf(buf); + int32 handle; + ReadSaveBuf(&handle, buf); cAudioScriptObject *p = new(handle) cAudioScriptObject; assert(p != nil); - *p = ReadSaveBuf(buf); + ReadSaveBuf(p, buf); p->AudioEntity = DMAudio.CreateLoopingScriptObject(p); } diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 77cbd0b4..22a73179 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -5,6 +5,7 @@ #include "CarCtrl.h" #include "Curves.h" #include "PathFind.h" +#include "SaveBuf.h" void CAutoPilot::ModifySpeed(float speed) { @@ -88,39 +89,40 @@ void CAutoPilot::Save(uint8*& buf) void CAutoPilot::Load(uint8*& buf) { - m_nCurrentRouteNode = ReadSaveBuf(buf); - m_nNextRouteNode = ReadSaveBuf(buf); - m_nPrevRouteNode = ReadSaveBuf(buf); - m_nTimeEnteredCurve = ReadSaveBuf(buf); - m_nTimeToSpendOnCurrentCurve = ReadSaveBuf(buf); - m_nCurrentPathNodeInfo = ReadSaveBuf(buf); - m_nNextPathNodeInfo = ReadSaveBuf(buf); - m_nPreviousPathNodeInfo = ReadSaveBuf(buf); - m_nAntiReverseTimer = ReadSaveBuf(buf); - m_nTimeToStartMission = ReadSaveBuf(buf); - m_nPreviousDirection = ReadSaveBuf(buf); - m_nCurrentDirection = ReadSaveBuf(buf); - m_nNextDirection = ReadSaveBuf(buf); - m_nCurrentLane = ReadSaveBuf(buf); - m_nNextLane = ReadSaveBuf(buf); - m_nDrivingStyle = ReadSaveBuf(buf); - m_nCarMission = ReadSaveBuf(buf); - m_nTempAction = ReadSaveBuf(buf); - m_nTimeTempAction = ReadSaveBuf(buf); - m_fMaxTrafficSpeed = ReadSaveBuf(buf); - m_nCruiseSpeed = ReadSaveBuf(buf); - uint8 flags = ReadSaveBuf(buf); + ReadSaveBuf(&m_nCurrentRouteNode, buf); + ReadSaveBuf(&m_nNextRouteNode, buf); + ReadSaveBuf(&m_nPrevRouteNode, buf); + ReadSaveBuf(&m_nTimeEnteredCurve, buf); + ReadSaveBuf(&m_nTimeToSpendOnCurrentCurve, buf); + ReadSaveBuf(&m_nCurrentPathNodeInfo, buf); + ReadSaveBuf(&m_nNextPathNodeInfo, buf); + ReadSaveBuf(&m_nPreviousPathNodeInfo, buf); + ReadSaveBuf(&m_nAntiReverseTimer, buf); + ReadSaveBuf(&m_nTimeToStartMission, buf); + ReadSaveBuf(&m_nPreviousDirection, buf); + ReadSaveBuf(&m_nCurrentDirection, buf); + ReadSaveBuf(&m_nNextDirection, buf); + ReadSaveBuf(&m_nCurrentLane, buf); + ReadSaveBuf(&m_nNextLane, buf); + ReadSaveBuf(&m_nDrivingStyle, buf); + ReadSaveBuf(&m_nCarMission, buf); + ReadSaveBuf(&m_nTempAction, buf); + ReadSaveBuf(&m_nTimeTempAction, buf); + ReadSaveBuf(&m_fMaxTrafficSpeed, buf); + ReadSaveBuf(&m_nCruiseSpeed, buf); + uint8 flags; + ReadSaveBuf(&flags, buf); m_bSlowedDownBecauseOfCars = !!(flags & BIT(0)); m_bSlowedDownBecauseOfPeds = !!(flags & BIT(1)); m_bStayInCurrentLevel = !!(flags & BIT(2)); m_bStayInFastLane = !!(flags & BIT(3)); m_bIgnorePathfinding = !!(flags & BIT(4)); SkipSaveBuf(buf, 2); - m_vecDestinationCoors.x = ReadSaveBuf(buf); - m_vecDestinationCoors.y = ReadSaveBuf(buf); - m_vecDestinationCoors.z = ReadSaveBuf(buf); + ReadSaveBuf(&m_vecDestinationCoors.x, buf); + ReadSaveBuf(&m_vecDestinationCoors.y, buf); + ReadSaveBuf(&m_vecDestinationCoors.z, buf); SkipSaveBuf(buf, 32); - m_nPathFindNodesCount = ReadSaveBuf(buf); + ReadSaveBuf(&m_nPathFindNodesCount, buf); SkipSaveBuf(buf, 6); } #endif \ No newline at end of file diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 792d3bda..3410c881 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -24,6 +24,7 @@ #include "Vehicle.h" #include "Wanted.h" #include "World.h" +#include "SaveBuf.h" #define CRUSHER_GARAGE_X1 (1135.5f) #define CRUSHER_GARAGE_Y1 (57.0f) @@ -2361,22 +2362,25 @@ void CGarages::Load(uint8* buf, uint32 size) assert(size == 5484); #endif CloseHideOutGaragesBeforeSave(); - NumGarages = ReadSaveBuf(buf); - BombsAreFree = ReadSaveBuf(buf); - RespraysAreFree = ReadSaveBuf(buf); - CarsCollected = ReadSaveBuf(buf); - BankVansCollected = ReadSaveBuf(buf); - PoliceCarsCollected = ReadSaveBuf(buf); + ReadSaveBuf(&NumGarages, buf); + int32 tempInt; + ReadSaveBuf(&tempInt, buf); + BombsAreFree = tempInt ? true : false; + ReadSaveBuf(&tempInt, buf); + RespraysAreFree = tempInt ? true : false; + ReadSaveBuf(&CarsCollected, buf); + ReadSaveBuf(&BankVansCollected, buf); + ReadSaveBuf(&PoliceCarsCollected, buf); for (int i = 0; i < TOTAL_COLLECTCARS_GARAGES; i++) - CarTypesCollected[i] = ReadSaveBuf(buf); - LastTimeHelpMessage = ReadSaveBuf(buf); + ReadSaveBuf(&CarTypesCollected[i], buf); + ReadSaveBuf(&LastTimeHelpMessage, buf); for (int i = 0; i < NUM_GARAGE_STORED_CARS; i++) { - aCarsInSafeHouse1[i] = ReadSaveBuf(buf); - aCarsInSafeHouse2[i] = ReadSaveBuf(buf); - aCarsInSafeHouse3[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aCarsInSafeHouse1[i], buf); + ReadSaveBuf(&aCarsInSafeHouse2[i], buf); + ReadSaveBuf(&aCarsInSafeHouse3[i], buf); } for (int i = 0; i < NUM_GARAGES; i++) { - aGarages[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aGarages[i], buf); aGarages[i].m_pDoor1 = nil; aGarages[i].m_pDoor2 = nil; aGarages[i].m_pTarget = nil; diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp index ef7ecead..f9cb1421 100644 --- a/src/control/Phones.cpp +++ b/src/control/Phones.cpp @@ -13,6 +13,7 @@ #include "RpAnimBlend.h" #include "AnimBlendAssociation.h" #include "soundlist.h" +#include "SaveBuf.h" #ifdef FIX_BUGS #include "Replay.h" #endif @@ -212,8 +213,9 @@ void CPhoneInfo::Load(uint8 *buf, uint32 size) { INITSAVEBUF - int max = ReadSaveBuf(buf); - int scriptPhonesMax = ReadSaveBuf(buf); + int32 max, scriptPhonesMax; + ReadSaveBuf(&max, buf); + ReadSaveBuf(&scriptPhonesMax, buf); #ifdef PEDS_REPORT_CRIMES_ON_PHONE m_nMax = Min(NUMPHONES, max); @@ -223,7 +225,8 @@ INITSAVEBUF // We can do it without touching saves. We'll only load script phones, others are already loaded in Initialise for (int i = 0; i < 50; i++) { - CPhone phoneToLoad = ReadSaveBuf(buf); + CPhone phoneToLoad; + ReadSaveBuf(&phoneToLoad, buf); if (ignoreOtherPhones) continue; @@ -249,7 +252,7 @@ INITSAVEBUF m_nScriptPhonesMax = scriptPhonesMax; for (int i = 0; i < NUMPHONES; i++) { - m_aPhones[i] = ReadSaveBuf(buf); + ReadSaveBuf(&m_aPhones[i], buf); // It's saved as building pool index in save file, convert it to true entity if (m_aPhones[i].m_pEntity) { m_aPhones[i].m_pEntity = CPools::GetBuildingPool()->GetSlot((uintptr)m_aPhones[i].m_pEntity - 1); diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index a1e2a851..10175fba 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -23,6 +23,7 @@ #ifdef FIX_BUGS #include "Replay.h" #endif +#include "SaveBuf.h" #include "Script.h" #include "Shadows.h" #include "SpecialFX.h" @@ -999,18 +1000,18 @@ CPickups::Load(uint8 *buf, uint32 size) INITSAVEBUF for (int32 i = 0; i < NUMPICKUPS; i++) { - aPickUps[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aPickUps[i], buf); if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((uintptr)aPickUps[i].m_pObject - 1); } - CollectedPickUpIndex = ReadSaveBuf(buf); - ReadSaveBuf(buf); + ReadSaveBuf(&CollectedPickUpIndex, buf); + SkipSaveBuf(buf, 2); NumMessages = 0; for (uint16 i = 0; i < NUMCOLLECTEDPICKUPS; i++) - aPickUpsCollected[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aPickUpsCollected[i], buf); VALIDATESAVEBUF(size) } diff --git a/src/control/Restart.cpp b/src/control/Restart.cpp index 4ca18c3b..2f5e3d45 100644 --- a/src/control/Restart.cpp +++ b/src/control/Restart.cpp @@ -1,6 +1,7 @@ #include "common.h" #include "Restart.h" +#include "SaveBuf.h" #include "Zones.h" #include "PathFind.h" @@ -173,29 +174,28 @@ INITSAVEBUF CheckSaveHeader(buf, 'R','S','T','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_RESTART_POINTS; i++) { - HospitalRestartPoints[i] = ReadSaveBuf(buf); - HospitalRestartHeadings[i] = ReadSaveBuf(buf); + ReadSaveBuf(&HospitalRestartPoints[i], buf); + ReadSaveBuf(&HospitalRestartHeadings[i], buf); } for (int i = 0; i < NUM_RESTART_POINTS; i++) { - PoliceRestartPoints[i] = ReadSaveBuf(buf); - PoliceRestartHeadings[i] = ReadSaveBuf(buf); + ReadSaveBuf(&PoliceRestartPoints[i], buf); + ReadSaveBuf(&PoliceRestartHeadings[i], buf); } - NumberOfHospitalRestarts = ReadSaveBuf(buf); - NumberOfPoliceRestarts = ReadSaveBuf(buf); - bOverrideRestart = ReadSaveBuf(buf); + ReadSaveBuf(&NumberOfHospitalRestarts, buf); + ReadSaveBuf(&NumberOfPoliceRestarts, buf); + ReadSaveBuf(&bOverrideRestart, buf); // skip something unused - ReadSaveBuf(buf); - ReadSaveBuf(buf); + SkipSaveBuf(buf, 3); - OverridePosition = ReadSaveBuf(buf); - OverrideHeading = ReadSaveBuf(buf); - bFadeInAfterNextDeath = ReadSaveBuf(buf); - bFadeInAfterNextArrest = ReadSaveBuf(buf); - OverrideHospitalLevel = ReadSaveBuf(buf); - OverridePoliceStationLevel = ReadSaveBuf(buf); + ReadSaveBuf(&OverridePosition, buf); + ReadSaveBuf(&OverrideHeading, buf); + ReadSaveBuf(&bFadeInAfterNextDeath, buf); + ReadSaveBuf(&bFadeInAfterNextArrest, buf); + ReadSaveBuf(&OverrideHospitalLevel, buf); + ReadSaveBuf(&OverridePoliceStationLevel, buf); VALIDATESAVEBUF(size); } diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index c83c3edc..a9aec18e 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -12,6 +12,7 @@ #include "Pools.h" #include "Population.h" #include "RpAnimBlend.h" +#include "SaveBuf.h" #include "Shadows.h" #include "SpecialFX.h" #include "World.h" @@ -2002,21 +2003,25 @@ void CTheScripts::LoadAllScripts(uint8* buf, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buf, 'S', 'C', 'R', '\0', size - SAVE_HEADER_SIZE); - uint32 varSpace = ReadSaveBuf(buf); + uint32 varSpace, type, handle; + uint32 tmp; + + ReadSaveBuf(&varSpace, buf); for (uint32 i = 0; i < varSpace; i++) - ScriptSpace[i] = ReadSaveBuf(buf); - script_assert(ReadSaveBuf(buf) == SCRIPT_DATA_SIZE); - OnAMissionFlag = ReadSaveBuf(buf); + ReadSaveBuf(&ScriptSpace[i], buf); + ReadSaveBuf(&tmp, buf); + script_assert(tmp == SCRIPT_DATA_SIZE); + ReadSaveBuf(&OnAMissionFlag, buf); for (uint32 i = 0; i < MAX_NUM_CONTACTS; i++) { - OnAMissionForContactFlag[i] = ReadSaveBuf(buf); - BaseBriefIdForContact[i] = ReadSaveBuf(buf); + ReadSaveBuf(&OnAMissionForContactFlag[i], buf); + ReadSaveBuf(&BaseBriefIdForContact[i], buf); } for (uint32 i = 0; i < MAX_NUM_COLLECTIVES; i++) - CollectiveArray[i] = ReadSaveBuf(buf); - NextFreeCollectiveIndex = ReadSaveBuf(buf); + ReadSaveBuf(&CollectiveArray[i], buf); + ReadSaveBuf(&NextFreeCollectiveIndex, buf); for (uint32 i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) { - uint32 type = ReadSaveBuf(buf); - uint32 handle = ReadSaveBuf(buf); + ReadSaveBuf(&type, buf); + ReadSaveBuf(&handle, buf); switch (type) { case 0: BuildingSwapArray[i].m_pBuilding = nil; @@ -2030,14 +2035,14 @@ INITSAVEBUF default: script_assert(false); } - BuildingSwapArray[i].m_nNewModel = ReadSaveBuf(buf); - BuildingSwapArray[i].m_nOldModel = ReadSaveBuf(buf); + ReadSaveBuf(&BuildingSwapArray[i].m_nNewModel, buf); + ReadSaveBuf(&BuildingSwapArray[i].m_nOldModel, buf); if (BuildingSwapArray[i].m_pBuilding) BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nNewModel); } for (uint32 i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) { - uint32 type = ReadSaveBuf(buf); - uint32 handle = ReadSaveBuf(buf); + ReadSaveBuf(&type, buf); + ReadSaveBuf(&handle, buf); switch (type) { case 0: InvisibilitySettingArray[i] = nil; @@ -2060,14 +2065,20 @@ INITSAVEBUF if (InvisibilitySettingArray[i]) InvisibilitySettingArray[i]->bIsVisible = false; } - script_assert(ReadSaveBuf(buf) == bUsingAMultiScriptFile); - ReadSaveBuf(buf); - ReadSaveBuf(buf); - script_assert(ReadSaveBuf(buf) == MainScriptSize); - script_assert(ReadSaveBuf(buf) == LargestMissionScriptSize); - script_assert(ReadSaveBuf(buf) == NumberOfMissionScripts); - ReadSaveBuf(buf); - uint32 runningScripts = ReadSaveBuf(buf); + bool tmpBool; + ReadSaveBuf(&tmpBool, buf); + script_assert(tmpBool == bUsingAMultiScriptFile); + SkipSaveBuf(buf, 3); + ReadSaveBuf(&tmp, buf); + script_assert(tmp == MainScriptSize); + ReadSaveBuf(&tmp, buf); + script_assert(tmp == LargestMissionScriptSize); + uint16 tmp16; + ReadSaveBuf(&tmp16, buf); + script_assert(tmp16 == NumberOfMissionScripts); + SkipSaveBuf(buf, 2); + uint32 runningScripts; + ReadSaveBuf(&runningScripts, buf); for (uint32 i = 0; i < runningScripts; i++) StartNewScript(0)->Load(buf); VALIDATESAVEBUF(size) @@ -2115,35 +2126,35 @@ void CRunningScript::Load(uint8*& buf) #ifdef COMPATIBLE_SAVES SkipSaveBuf(buf, 8); for (int i = 0; i < 8; i++) - m_abScriptName[i] = ReadSaveBuf(buf); - m_nIp = ReadSaveBuf(buf); + ReadSaveBuf(&m_abScriptName[i], buf); + ReadSaveBuf(&m_nIp, buf); #ifdef CHECK_STRUCT_SIZES static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6"); #endif for (int i = 0; i < MAX_STACK_DEPTH; i++) - m_anStack[i] = ReadSaveBuf(buf); - m_nStackPointer = ReadSaveBuf(buf); + ReadSaveBuf(&m_anStack[i], buf); + ReadSaveBuf(&m_nStackPointer, buf); SkipSaveBuf(buf, 2); #ifdef CHECK_STRUCT_SIZES static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18"); #endif for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++) - m_anLocalVariables[i] = ReadSaveBuf(buf); - m_bCondResult = ReadSaveBuf(buf); - m_bIsMissionScript = ReadSaveBuf(buf); - m_bSkipWakeTime = ReadSaveBuf(buf); + ReadSaveBuf(&m_anLocalVariables[i], buf); + ReadSaveBuf(&m_bCondResult, buf); + ReadSaveBuf(&m_bIsMissionScript, buf); + ReadSaveBuf(&m_bSkipWakeTime, buf); SkipSaveBuf(buf, 1); - m_nWakeTime = ReadSaveBuf(buf); - m_nAndOrState = ReadSaveBuf(buf); - m_bNotFlag = ReadSaveBuf(buf); - m_bDeatharrestEnabled = ReadSaveBuf(buf); - m_bDeatharrestExecuted = ReadSaveBuf(buf); - m_bMissionFlag = ReadSaveBuf(buf); + ReadSaveBuf(&m_nWakeTime, buf); + ReadSaveBuf(&m_nAndOrState, buf); + ReadSaveBuf(&m_bNotFlag, buf); + ReadSaveBuf(&m_bDeatharrestEnabled, buf); + ReadSaveBuf(&m_bDeatharrestExecuted, buf); + ReadSaveBuf(&m_bMissionFlag, buf); SkipSaveBuf(buf, 2); #else CRunningScript* n = next; CRunningScript* p = prev; - *this = ReadSaveBuf(buf); + ReadSaveBuf(this, buf); next = n; prev = p; #endif diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 39cfb1d4..5cffe9e4 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -9,6 +9,7 @@ #endif #include "Population.h" #include "ProjectileInfo.h" +#include "SaveBuf.h" #include "Streaming.h" #include "Wanted.h" #include "World.h" @@ -130,14 +131,19 @@ CPools::MakeSureSlotInObjectPoolIsEmpty(int32 slot) void CPools::LoadVehiclePool(uint8* buf, uint32 size) { INITSAVEBUF - int nNumCars = ReadSaveBuf(buf); - int nNumBoats = ReadSaveBuf(buf); + int nNumCars, nNumBoats; + ReadSaveBuf(&nNumCars, buf); + ReadSaveBuf(&nNumBoats, buf); for (int i = 0; i < nNumCars + nNumBoats; i++) { - uint32 type = ReadSaveBuf(buf); - int16 model = ReadSaveBuf(buf); + uint32 type; + int16 model; + int32 slot; + + ReadSaveBuf(&type, buf); + ReadSaveBuf(&model, buf); CStreaming::RequestModel(model, STREAMFLAGS_DEPENDENCY); CStreaming::LoadAllRequestedModels(false); - int32 slot = ReadSaveBuf(buf); + ReadSaveBuf(&slot, buf); CVehicle* pVehicle; #ifdef COMPATIBLE_SAVES if (type == VEHICLE_TYPE_BOAT) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 8f2c1747..77d6cc7f 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -16,6 +16,7 @@ #include "Script.h" #include "TxdStore.h" #include "World.h" +#include "SaveBuf.h" #include "Streaming.h" #include "SpecialFX.h" @@ -1055,7 +1056,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'R', 'D', 'R', '\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUMRADARBLIPS; i++) - ms_RadarTrace[i] = ReadSaveBuf(buf); + ReadSaveBuf(&ms_RadarTrace[i], buf); VALIDATESAVEBUF(size); } diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp index cdae85e1..107b1db8 100644 --- a/src/core/Zones.cpp +++ b/src/core/Zones.cpp @@ -8,6 +8,7 @@ #include "Text.h" #include "World.h" #include "Timer.h" +#include "SaveBuf.h" eLevelName CTheZones::m_CurrLevel; CZone *CTheZones::m_pPlayersZone; @@ -696,17 +697,18 @@ void CTheZones::LoadAllZones(uint8 *buffer, uint32 size) { INITSAVEBUF - int i; + int32 i; CheckSaveHeader(buffer, 'Z', 'N', 'S', '\0', size - SAVE_HEADER_SIZE); - m_pPlayersZone = GetPointerForZoneIndex(ReadSaveBuf(buffer)); - m_CurrLevel = ReadSaveBuf(buffer); - FindIndex = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); + ReadSaveBuf(&i, buffer); + m_pPlayersZone = GetPointerForZoneIndex(i); + ReadSaveBuf(&m_CurrLevel, buffer); + ReadSaveBuf(&FindIndex, buffer); + SkipSaveBuf(buffer, 2); for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){ - ZoneArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&ZoneArray[i], buffer); ZoneArray[i].child = GetPointerForZoneIndex((uintptr)ZoneArray[i].child); ZoneArray[i].parent = GetPointerForZoneIndex((uintptr)ZoneArray[i].parent); @@ -714,13 +716,13 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++) - ZoneInfoArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&ZoneInfoArray[i], buffer); - TotalNumberOfZones = ReadSaveBuf(buffer); - TotalNumberOfZoneInfos = ReadSaveBuf(buffer); + ReadSaveBuf(&TotalNumberOfZones, buffer); + ReadSaveBuf(&TotalNumberOfZoneInfos, buffer); for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++){ - MapZoneArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&MapZoneArray[i], buffer); /* The call of GetPointerForZoneIndex is wrong, as it is @@ -736,10 +738,10 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) } for(i = 0; i < ARRAY_SIZE(AudioZoneArray); i++) - AudioZoneArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&AudioZoneArray[i], buffer); - TotalNumberOfMapZones = ReadSaveBuf(buffer); - NumberOfAudioZones = ReadSaveBuf(buffer); + ReadSaveBuf(&TotalNumberOfMapZones, buffer); + ReadSaveBuf(&NumberOfAudioZones, buffer); VALIDATESAVEBUF(size) } diff --git a/src/core/common.h b/src/core/common.h index e5077611..7207f08d 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -393,173 +393,3 @@ template struct check_size { #define STR(x) STRINGIFY(x) #define CONCAT_(x,y) x##y #define CONCAT(x,y) CONCAT_(x,y) - -#ifdef DEBUGMENU -// Tweaking stuff for debugmenu -#define TWEAKPATH ___tw___TWEAKPATH -#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; -#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); -#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); -#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); -#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); -#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); -#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); - -// interface -class CTweakVar -{ -public: - virtual void AddDBG(const char *path) = 0; -}; - -class CTweakVars -{ -public: - static void Add(CTweakVar *var); - static void AddDBG(const char *path); -}; - -class CTweakFunc : public CTweakVar -{ - const char *m_pPath, *m_pVarName; - void (*m_pFunc)(); -public: - CTweakFunc(void (*pFunc)(), const char *strName, const char *strPath) : - m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) - { - CTweakVars::Add(this); - } - - void AddDBG(const char *path); -}; - -class CTweakBool : public CTweakVar -{ - const char *m_pPath, *m_pVarName; - bool *m_pBoolVar; -public: - CTweakBool(bool *pBool, const char *strName, const char *strPath) : - m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) - { - CTweakVars::Add(this); - } - - void AddDBG(const char *path); -}; - -class CTweakSwitch : public CTweakVar -{ - const char *m_pPath, *m_pVarName; - void *m_pIntVar; - int32 m_nMin, m_nMax; - const char **m_aStr; - void (*m_pFunc)(); -public: - CTweakSwitch(void *pInt, const char *strName, int32 nMin, int32 nMax, const char **aStr, - void (*pFunc)(), const char *strPath) - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), - m_aStr(aStr) - { - CTweakVars::Add(this); - } - - void AddDBG(const char *path); -}; - -#define _TWEEKCLASS(name, type) \ - class name : public CTweakVar \ - { \ - public: \ - const char *m_pPath, *m_pVarName; \ - type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ - \ - name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ - const char *strPath) \ - : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ - m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ - \ - { \ - CTweakVars::Add(this); \ - } \ - \ - void AddDBG(const char *path); \ - }; - -_TWEEKCLASS(CTweakInt8, int8); -_TWEEKCLASS(CTweakUInt8, uint8); -_TWEEKCLASS(CTweakInt16, int16); -_TWEEKCLASS(CTweakUInt16, uint16); -_TWEEKCLASS(CTweakInt32, int32); -_TWEEKCLASS(CTweakUInt32, uint32); -_TWEEKCLASS(CTweakFloat, float); - -#undef _TWEEKCLASS -#endif - -#ifdef VALIDATE_SAVE_SIZE -extern int32 _saveBufCount; -#define INITSAVEBUF _saveBufCount = 0; -#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); -#else -#define INITSAVEBUF -#define VALIDATESAVEBUF(b) -#endif - -inline void SkipSaveBuf(uint8 *&buf, int32 skip) -{ - buf += skip; -#ifdef VALIDATE_SAVE_SIZE - _saveBufCount += skip; -#endif -} - -template -inline const T ReadSaveBuf(uint8 *&buf) -{ - T &value = *(T*)buf; - SkipSaveBuf(buf, sizeof(T)); - return value; -} - -template -inline T *WriteSaveBuf(uint8 *&buf, const T &value) -{ - T *p = (T*)buf; - *p = value; - SkipSaveBuf(buf, sizeof(T)); - return p; -} - - -#define SAVE_HEADER_SIZE (4*sizeof(char)+sizeof(uint32)) - -#define WriteSaveHeader(buf,a,b,c,d,size) \ - WriteSaveBuf(buf, a);\ - WriteSaveBuf(buf, b);\ - WriteSaveBuf(buf, c);\ - WriteSaveBuf(buf, d);\ - WriteSaveBuf(buf, size); - -#define CheckSaveHeader(buf,a,b,c,d,size)\ - assert(ReadSaveBuf(buf) == a);\ - assert(ReadSaveBuf(buf) == b);\ - assert(ReadSaveBuf(buf) == c);\ - assert(ReadSaveBuf(buf) == d);\ - assert(ReadSaveBuf(buf) == size); - - -void cprintf(char*, ...); diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index 9d5bf73c..a7f4bd45 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -22,6 +22,7 @@ #include "MemoryHeap.h" #include "Bones.h" #include "Debug.h" +#include "SaveBuf.h" int gBuildings; @@ -753,7 +754,8 @@ CEntity::SaveEntityFlags(uint8*& buf) void CEntity::LoadEntityFlags(uint8*& buf) { - uint32 tmp = ReadSaveBuf(buf); + uint32 tmp; + ReadSaveBuf(&tmp, buf); m_type = (tmp & ((BIT(3) - 1))); m_status = ((tmp >> 3) & (BIT(5) - 1)); @@ -784,7 +786,7 @@ CEntity::LoadEntityFlags(uint8*& buf) bZoneCulled = !!(tmp & BIT(30)); bZoneCulled2 = !!(tmp & BIT(31)); - tmp = ReadSaveBuf(buf); + ReadSaveBuf(&tmp, buf); bRemoveFromWorld = !!(tmp & BIT(0)); bHasHitWall = !!(tmp & BIT(1)); diff --git a/src/extras/debugmenu.h b/src/extras/debugmenu.h index c2198aca..45b65d04 100644 --- a/src/extras/debugmenu.h +++ b/src/extras/debugmenu.h @@ -2,6 +2,120 @@ #ifdef DEBUGMENU +// Tweaking stuff for debugmenu +#define TWEAKPATH ___tw___TWEAKPATH +#define SETTWEAKPATH(path) static const char *___tw___TWEAKPATH = path; +#define TWEAKFUNC(v) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKFUNCN(v, name) static CTweakFunc CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKBOOL(v) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), TWEAKPATH); +#define TWEAKBOOLN(v, name) static CTweakBool CONCAT(___tw___tweak, __COUNTER__)(&v, name, TWEAKPATH); +#define TWEAKINT32(v, lower, upper, step) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT32N(v, lower, upper, step, name) static CTweakInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT32(v, lower, upper, step) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT32N(v, lower, upper, step, name) static CTweakUInt32 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT16(v, lower, upper, step) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT16N(v, lower, upper, step, name) static CTweakInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT16(v, lower, upper, step) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT16N(v, lower, upper, step, name) static CTweakUInt16 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKINT8(v, lower, upper, step) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKINT8N(v, lower, upper, step, name) static CTweakInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKUINT8(v, lower, upper, step) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKUINT8N(v, lower, upper, step, name) static CTweakUInt8 CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKFLOAT(v, lower, upper, step) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, step, TWEAKPATH); +#define TWEAKFLOATN(v, lower, upper, step, name) static CTweakFloat CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, step, TWEAKPATH); +#define TWEAKSWITCH(v, lower, upper, str, f) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, STR(v), lower, upper, str, f, TWEAKPATH); +#define TWEAKSWITCHN(v, lower, upper, str, f, name) static CTweakSwitch CONCAT(___tw___tweak, __COUNTER__)(&v, name, lower, upper, str, f, TWEAKPATH); + +// interface +class CTweakVar +{ +public: + virtual void AddDBG(const char* path) = 0; +}; + +class CTweakVars +{ +public: + static void Add(CTweakVar* var); + static void AddDBG(const char* path); +}; + +class CTweakFunc : public CTweakVar +{ + const char* m_pPath, * m_pVarName; + void (*m_pFunc)(); +public: + CTweakFunc(void (*pFunc)(), const char* strName, const char* strPath) : + m_pPath(strPath), m_pVarName(strName), m_pFunc(pFunc) + { + CTweakVars::Add(this); + } + + void AddDBG(const char* path); +}; + +class CTweakBool : public CTweakVar +{ + const char* m_pPath, * m_pVarName; + bool* m_pBoolVar; +public: + CTweakBool(bool* pBool, const char* strName, const char* strPath) : + m_pPath(strPath), m_pVarName(strName), m_pBoolVar(pBool) + { + CTweakVars::Add(this); + } + + void AddDBG(const char* path); +}; + +class CTweakSwitch : public CTweakVar +{ + const char* m_pPath, * m_pVarName; + void* m_pIntVar; + int32 m_nMin, m_nMax; + const char** m_aStr; + void (*m_pFunc)(); +public: + CTweakSwitch(void* pInt, const char* strName, int32 nMin, int32 nMax, const char** aStr, + void (*pFunc)(), const char* strPath) + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), m_nMin(nMin), m_nMax(nMax), + m_aStr(aStr) + { + CTweakVars::Add(this); + } + + void AddDBG(const char* path); +}; + +#define _TWEEKCLASS(name, type) \ + class name : public CTweakVar \ + { \ + public: \ + const char *m_pPath, *m_pVarName; \ + type *m_pIntVar, m_nLoawerBound, m_nUpperBound, m_nStep; \ + \ + name(type *pInt, const char *strName, type nLower, type nUpper, type nStep, \ + const char *strPath) \ + : m_pPath(strPath), m_pVarName(strName), m_pIntVar(pInt), \ + m_nLoawerBound(nLower), m_nUpperBound(nUpper), m_nStep(nStep) \ + \ + { \ + CTweakVars::Add(this); \ + } \ + \ + void AddDBG(const char *path); \ + }; + +_TWEEKCLASS(CTweakInt8, int8); +_TWEEKCLASS(CTweakUInt8, uint8); +_TWEEKCLASS(CTweakInt16, int16); +_TWEEKCLASS(CTweakUInt16, uint16); +_TWEEKCLASS(CTweakInt32, int32); +_TWEEKCLASS(CTweakUInt32, uint32); +_TWEEKCLASS(CTweakFloat, float); + +#undef _TWEEKCLASS + typedef void (*TriggerFunc)(void); struct Menu; diff --git a/src/peds/Gangs.cpp b/src/peds/Gangs.cpp index 8859e61e..be29379c 100644 --- a/src/peds/Gangs.cpp +++ b/src/peds/Gangs.cpp @@ -3,6 +3,7 @@ #include "ModelIndices.h" #include "Gangs.h" #include "Weapon.h" +#include "SaveBuf.h" CGangInfo CGangs::Gang[NUM_GANGS]; @@ -72,6 +73,6 @@ INITSAVEBUF CheckSaveHeader(buf, 'G','N','G','\0', size - SAVE_HEADER_SIZE); for (int i = 0; i < NUM_GANGS; i++) - Gang[i] = ReadSaveBuf(buf); + ReadSaveBuf(&Gang[i], buf); VALIDATESAVEBUF(size); } diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 5b25c92e..977766c3 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -32,6 +32,7 @@ #include "Floater.h" #include "Range2D.h" #include "Wanted.h" +#include "SaveBuf.h" CPed *gapTempPedList[50]; uint16 gnNumTempPedList; diff --git a/src/peds/PedType.cpp b/src/peds/PedType.cpp index bacb1a78..dcd4c717 100644 --- a/src/peds/PedType.cpp +++ b/src/peds/PedType.cpp @@ -3,6 +3,7 @@ #include "General.h" #include "FileMgr.h" #include "PedType.h" +#include "SaveBuf.h" CPedType *CPedType::ms_apPedType[NUM_PEDTYPES]; CPedStats *CPedStats::ms_apPedStats[NUM_PEDSTATS]; @@ -201,7 +202,7 @@ INITSAVEBUF CheckSaveHeader(buf, 'P', 'T', 'P', '\0', size - SAVE_HEADER_SIZE); for(int i = 0; i < NUM_PEDTYPES; i++) - *ms_apPedType[i] = ReadSaveBuf(buf); + ReadSaveBuf(ms_apPedType[i], buf); VALIDATESAVEBUF(size) } diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 46578486..a67e2abc 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -16,6 +16,7 @@ #include "Pools.h" #include "Darkel.h" #include "CarCtrl.h" +#include "SaveBuf.h" #define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f diff --git a/src/render/Console.h b/src/render/Console.h index b4fa60c4..9f22236f 100644 --- a/src/render/Console.h +++ b/src/render/Console.h @@ -23,3 +23,5 @@ public: }; extern CConsole TheConsole; + +void cprintf(char*, ...); \ No newline at end of file diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index 07e80abe..c971955f 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -14,6 +14,7 @@ #include "ParticleObject.h" #include "Particle.h" #include "soundlist.h" +#include "debugmenu.h" #define MAX_PARTICLES_ON_SCREEN (1000) diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h new file mode 100644 index 00000000..ed48a650 --- /dev/null +++ b/src/save/SaveBuf.h @@ -0,0 +1,64 @@ +#pragma once + +#ifdef VALIDATE_SAVE_SIZE +extern int32 _saveBufCount; +#define INITSAVEBUF _saveBufCount = 0; +#define VALIDATESAVEBUF(b) assert(_saveBufCount == b); +#else +#define INITSAVEBUF +#define VALIDATESAVEBUF(b) +#endif + +inline void +SkipSaveBuf(uint8 *&buf, int32 skip) +{ + buf += skip; +#ifdef VALIDATE_SAVE_SIZE + _saveBufCount += skip; +#endif +} + +template +inline void +ReadSaveBuf(T* out, uint8 *&buf) +{ + *out = *(T *)buf; + SkipSaveBuf(buf, sizeof(T)); +} + +template +inline T * +WriteSaveBuf(uint8 *&buf, const T &value) +{ + T *p = (T *)buf; + *p = value; + SkipSaveBuf(buf, sizeof(T)); + return p; +} + +#define SAVE_HEADER_SIZE (4 * sizeof(char) + sizeof(uint32)) + +#define WriteSaveHeader(buf, a, b, c, d, size) \ + WriteSaveBuf(buf, a); \ + WriteSaveBuf(buf, b); \ + WriteSaveBuf(buf, c); \ + WriteSaveBuf(buf, d); \ + WriteSaveBuf(buf, (uint32)size); + +#ifdef VALIDATE_SAVE_SIZE +#define CheckSaveHeader(buf, a, b, c, d, size) { \ + char _C; uint32 _size;\ + ReadSaveBuf(&_C, buf);\ + assert(_C == a);\ + ReadSaveBuf(&_C, buf);\ + assert(_C == b);\ + ReadSaveBuf(&_C, buf);\ + assert(_C == c);\ + ReadSaveBuf(&_C, buf);\ + assert(_C == d);\ + ReadSaveBuf(&_size, buf);\ + assert(_size == size);\ + } +#else +#define CheckSaveHeader(buf, a, b, c, d, size) SkipSaveBuf(buf, 8); +#endif \ No newline at end of file diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index c29c0536..7be6ed0b 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -45,6 +45,7 @@ #include "Object.h" #include "Automobile.h" #include "Wanted.h" +#include "SaveBuf.h" bool bAllCarCheat; // unused @@ -4724,7 +4725,7 @@ void CAutomobile::Load(uint8*& buf) { CVehicle::Load(buf); - Damage = ReadSaveBuf(buf); + ReadSaveBuf(&Damage, buf); SkipSaveBuf(buf, 800 - sizeof(CDamageManager)); SetupDamageAfterLoad(); } diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index 4bbbadbd..bbe17f0b 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -19,6 +19,7 @@ #include "Pools.h" #include "Pad.h" #include "Boat.h" +#include "SaveBuf.h" #define INVALID_ORIENTATION (-9999.99f) diff --git a/src/vehicles/CarGen.cpp b/src/vehicles/CarGen.cpp index 7524444b..22b2fc60 100644 --- a/src/vehicles/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -13,6 +13,7 @@ #include "Timer.h" #include "Vehicle.h" #include "World.h" +#include "SaveBuf.h" uint8 CTheCarGenerators::ProcessCounter; uint32 CTheCarGenerators::NumOfCarGenerators; @@ -254,14 +255,17 @@ void CTheCarGenerators::LoadAllCarGenerators(uint8* buffer, uint32 size) Init(); INITSAVEBUF CheckSaveHeader(buffer, 'C','G','N','\0', size - SAVE_HEADER_SIZE); - assert(ReadSaveBuf(buffer) == nGeneralDataSize); - NumOfCarGenerators = ReadSaveBuf(buffer); - CurrentActiveCount = ReadSaveBuf(buffer); - ProcessCounter = ReadSaveBuf(buffer); - GenerateEvenIfPlayerIsCloseCounter = ReadSaveBuf(buffer); - ReadSaveBuf(buffer); // alignment - assert(ReadSaveBuf(buffer) == sizeof(CarGeneratorArray)); + uint32 tmp; + ReadSaveBuf(&tmp, buffer); + assert(tmp == nGeneralDataSize); + ReadSaveBuf(&NumOfCarGenerators, buffer); + ReadSaveBuf(&CurrentActiveCount, buffer); + ReadSaveBuf(&ProcessCounter, buffer); + ReadSaveBuf(&GenerateEvenIfPlayerIsCloseCounter, buffer); + SkipSaveBuf(buffer, 2); + ReadSaveBuf(&tmp, buffer); + assert(tmp == sizeof(CarGeneratorArray)); for (int i = 0; i < NUM_CARGENS; i++) - CarGeneratorArray[i] = ReadSaveBuf(buffer); + ReadSaveBuf(&CarGeneratorArray[i], buffer); VALIDATESAVEBUF(size) } diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index 0c7913af..0f1b8b4c 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -11,6 +11,7 @@ #include "Replay.h" #include "Object.h" #include "World.h" +#include "SaveBuf.h" #define MAX_DISTANCE_TO_FIND_CRANE (10.0f) #define CRANE_UPDATE_RADIUS (300.0f) @@ -653,10 +654,10 @@ void CCranes::Load(uint8* buf, uint32 size) { INITSAVEBUF - NumCranes = ReadSaveBuf(buf); - CarsCollectedMilitaryCrane = ReadSaveBuf(buf); + ReadSaveBuf(&NumCranes, buf); + ReadSaveBuf(&CarsCollectedMilitaryCrane, buf); for (int i = 0; i < NUM_CRANES; i++) - aCranes[i] = ReadSaveBuf(buf); + ReadSaveBuf(&aCranes[i], buf); for (int i = 0; i < NUM_CRANES; i++) { CCrane *pCrane = &aCranes[i]; if (pCrane->m_pCraneEntity != nil) diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index fee2eb10..86159c4e 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -18,6 +18,7 @@ #include "Radar.h" #include "Fire.h" #include "Darkel.h" +#include "SaveBuf.h" bool CVehicle::bWheelsOnlyCheat; bool CVehicle::bAllDodosCheat; @@ -1323,43 +1324,44 @@ CVehicle::Load(uint8*& buf) { CMatrix tmp; SkipSaveBuf(buf, 4); - tmp.GetRight().x = ReadSaveBuf(buf); - tmp.GetRight().y = ReadSaveBuf(buf); - tmp.GetRight().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetRight().x, buf); + ReadSaveBuf(&tmp.GetRight().y, buf); + ReadSaveBuf(&tmp.GetRight().z, buf); SkipSaveBuf(buf, 4); - tmp.GetForward().x = ReadSaveBuf(buf); - tmp.GetForward().y = ReadSaveBuf(buf); - tmp.GetForward().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetForward().x, buf); + ReadSaveBuf(&tmp.GetForward().y, buf); + ReadSaveBuf(&tmp.GetForward().z, buf); SkipSaveBuf(buf, 4); - tmp.GetUp().x = ReadSaveBuf(buf); - tmp.GetUp().y = ReadSaveBuf(buf); - tmp.GetUp().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetUp().x, buf); + ReadSaveBuf(&tmp.GetUp().y, buf); + ReadSaveBuf(&tmp.GetUp().z, buf); SkipSaveBuf(buf, 4); - tmp.GetPosition().x = ReadSaveBuf(buf); - tmp.GetPosition().y = ReadSaveBuf(buf); - tmp.GetPosition().z = ReadSaveBuf(buf); + ReadSaveBuf(&tmp.GetPosition().x, buf); + ReadSaveBuf(&tmp.GetPosition().y, buf); + ReadSaveBuf(&tmp.GetPosition().z, buf); m_matrix = tmp; SkipSaveBuf(buf, 16); LoadEntityFlags(buf); SkipSaveBuf(buf, 212); AutoPilot.Load(buf); - m_currentColour1 = ReadSaveBuf(buf); - m_currentColour2 = ReadSaveBuf(buf); + ReadSaveBuf(&m_currentColour1, buf); + ReadSaveBuf(&m_currentColour2, buf); SkipSaveBuf(buf, 2); - m_nAlarmState = ReadSaveBuf(buf); + ReadSaveBuf(&m_nAlarmState, buf); SkipSaveBuf(buf, 43); - m_nNumMaxPassengers = ReadSaveBuf(buf); + ReadSaveBuf(&m_nNumMaxPassengers, buf); SkipSaveBuf(buf, 2); - field_1D0[0] = ReadSaveBuf(buf); - field_1D0[1] = ReadSaveBuf(buf); - field_1D0[2] = ReadSaveBuf(buf); - field_1D0[3] = ReadSaveBuf(buf); + ReadSaveBuf(&field_1D0[0], buf); + ReadSaveBuf(&field_1D0[1], buf); + ReadSaveBuf(&field_1D0[2], buf); + ReadSaveBuf(&field_1D0[3], buf); SkipSaveBuf(buf, 8); - m_fSteerAngle = ReadSaveBuf(buf); - m_fGasPedal = ReadSaveBuf(buf); - m_fBrakePedal = ReadSaveBuf(buf); - VehicleCreatedBy = ReadSaveBuf(buf); - uint8 flags = ReadSaveBuf(buf); + ReadSaveBuf(&m_fSteerAngle, buf); + ReadSaveBuf(&m_fGasPedal, buf); + ReadSaveBuf(&m_fBrakePedal, buf); + ReadSaveBuf(&VehicleCreatedBy, buf); + uint8 flags; + ReadSaveBuf(&flags, buf); bIsLawEnforcer = !!(flags & BIT(0)); bIsLocked = !!(flags & BIT(3)); bEngineOn = !!(flags & BIT(4)); @@ -1367,16 +1369,17 @@ CVehicle::Load(uint8*& buf) bLightsOn = !!(flags & BIT(6)); bFreebies = !!(flags & BIT(7)); SkipSaveBuf(buf, 10); - m_fHealth = ReadSaveBuf(buf); - m_nCurrentGear = ReadSaveBuf(buf); + ReadSaveBuf(&m_fHealth, buf); + ReadSaveBuf(&m_nCurrentGear, buf); SkipSaveBuf(buf, 3); - m_fChangeGearTime = ReadSaveBuf(buf); + ReadSaveBuf(&m_fChangeGearTime, buf); SkipSaveBuf(buf, 4); - m_nTimeOfDeath = ReadSaveBuf(buf); + ReadSaveBuf(&m_nTimeOfDeath, buf); SkipSaveBuf(buf, 2); - m_nBombTimer = ReadSaveBuf(buf); + ReadSaveBuf(&m_nBombTimer, buf); SkipSaveBuf(buf, 12); - m_nDoorLock = (eCarLock)ReadSaveBuf(buf); + ReadSaveBuf(&flags, buf); + m_nDoorLock = (eCarLock)flags; SkipSaveBuf(buf, 99); } #endif diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index b3909a08..b4d04a4b 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -30,6 +30,7 @@ #include "WaterLevel.h" #include "WeaponInfo.h" #include "World.h" +#include "SaveBuf.h" uint16 gReloadSampleTime[WEAPONTYPE_LAST_WEAPONTYPE] = { From 4819d195d8c8723f73d76d9869fa9d4b5686e56f Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 26 Jun 2021 19:19:45 +0200 Subject: [PATCH 169/314] fix WriteSaveHeader --- src/save/SaveBuf.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h index ed48a650..1b79c956 100644 --- a/src/save/SaveBuf.h +++ b/src/save/SaveBuf.h @@ -38,15 +38,15 @@ WriteSaveBuf(uint8 *&buf, const T &value) #define SAVE_HEADER_SIZE (4 * sizeof(char) + sizeof(uint32)) -#define WriteSaveHeader(buf, a, b, c, d, size) \ - WriteSaveBuf(buf, a); \ - WriteSaveBuf(buf, b); \ - WriteSaveBuf(buf, c); \ - WriteSaveBuf(buf, d); \ - WriteSaveBuf(buf, (uint32)size); +#define WriteSaveHeader(buf, a, b, c, d, size) \ + WriteSaveBuf(buf, a); \ + WriteSaveBuf(buf, b); \ + WriteSaveBuf(buf, c); \ + WriteSaveBuf(buf, d); \ + WriteSaveBuf(buf, (uint32)(size)); #ifdef VALIDATE_SAVE_SIZE -#define CheckSaveHeader(buf, a, b, c, d, size) { \ +#define CheckSaveHeader(buf, a, b, c, d, size) do { \ char _C; uint32 _size;\ ReadSaveBuf(&_C, buf);\ assert(_C == a);\ @@ -58,7 +58,7 @@ WriteSaveBuf(uint8 *&buf, const T &value) assert(_C == d);\ ReadSaveBuf(&_size, buf);\ assert(_size == size);\ - } + } while(0) #else #define CheckSaveHeader(buf, a, b, c, d, size) SkipSaveBuf(buf, 8); #endif \ No newline at end of file From a92372887766aeb5fe0908d5ae6a221f1c19af30 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 27 Jun 2021 00:34:46 +0300 Subject: [PATCH 170/314] Fix map texture leak --- src/core/Frontend.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index ec4e33ef..84a1e771 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -3653,7 +3653,9 @@ CMenuManager::LoadAllTextures() #ifdef MENU_MAP static bool menuOptionAdded = false; for (int i = 0; i < ARRAY_SIZE(MapFilenames); i++) { - if (!menuOptionAdded && RwTextureRead(MapFilenames[i][0], MapFilenames[i][1])) { + RwTexture *firstTile; + if (!menuOptionAdded && (firstTile = RwTextureRead(MapFilenames[i][0], MapFilenames[i][1]))) { + RwTextureDestroy(firstTile); FrontendOptionSetCursor(MENUPAGE_PAUSE_MENU, 2, false); FrontendOptionAddBuiltinAction("FEG_MAP", MENUACTION_CHANGEMENU, MENUPAGE_MAP, SAVESLOT_NONE); menuOptionAdded = true; From 091a65996ef9eba0dfeb49508927ebb521c0f15b Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 27 Jun 2021 17:53:14 +0300 Subject: [PATCH 171/314] Use PS2-y global names on SampMan --- src/audio/AudioLogic.cpp | 122 ++++++++++---------- src/audio/oal/channel.cpp | 2 +- src/audio/sampman.h | 6 +- src/audio/sampman_miles.cpp | 196 ++++++++++++++++---------------- src/audio/sampman_null.cpp | 2 +- src/audio/sampman_oal.cpp | 218 ++++++++++++++++++------------------ 6 files changed, 273 insertions(+), 273 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 8472cda6..7fcab57d 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -58,69 +58,69 @@ enum LOADING_STATUS { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED, LOAD void cAudioManager::PreInitialiseGameSpecificSetup() const { - BankStartOffset[SFX_BANK_0] = SAMPLEBANK_START; + gBankStartOffset[SFX_BANK_0] = SAMPLEBANK_START; #ifdef GTA_PS2 - BankStartOffset[SFX_BANK_PACARD] = SFX_CAR_ACCEL_1; - BankStartOffset[SFX_BANK_PATHFINDER] = SFX_CAR_ACCEL_2; - BankStartOffset[SFX_BANK_PORSCHE] = SFX_CAR_ACCEL_3; - BankStartOffset[SFX_BANK_SPIDER] = SFX_CAR_ACCEL_4; - BankStartOffset[SFX_BANK_MERC] = SFX_CAR_ACCEL_5; - BankStartOffset[SFX_BANK_TRUCK] = SFX_CAR_ACCEL_6; - BankStartOffset[SFX_BANK_HOTROD] = SFX_CAR_ACCEL_7; - BankStartOffset[SFX_BANK_COBRA] = SFX_CAR_ACCEL_8; - BankStartOffset[SFX_BANK_NONE] = SFX_CAR_ACCEL_9; - BankStartOffset[SFX_BANK_FRONT_END_MENU] = SFX_PAGE_CHANGE_AND_BACK_LEFT; - BankStartOffset[SFX_BANK_TRAIN] = SFX_TRAIN_STATION_AMBIENCE_LOOP; - BankStartOffset[SFX_BANK_BUILDING_CLUB_1] = SFX_CLUB_1; - BankStartOffset[SFX_BANK_BUILDING_CLUB_2] = SFX_CLUB_2; - BankStartOffset[SFX_BANK_BUILDING_CLUB_3] = SFX_CLUB_3; - BankStartOffset[SFX_BANK_BUILDING_CLUB_4] = SFX_CLUB_4; - BankStartOffset[SFX_BANK_BUILDING_CLUB_5] = SFX_CLUB_5; - BankStartOffset[SFX_BANK_BUILDING_CLUB_6] = SFX_CLUB_6; - BankStartOffset[SFX_BANK_BUILDING_CLUB_7] = SFX_CLUB_7; - BankStartOffset[SFX_BANK_BUILDING_CLUB_8] = SFX_CLUB_8; - BankStartOffset[SFX_BANK_BUILDING_CLUB_9] = SFX_CLUB_9; - BankStartOffset[SFX_BANK_BUILDING_CLUB_10] = SFX_CLUB_10; - BankStartOffset[SFX_BANK_BUILDING_CLUB_11] = SFX_CLUB_11; - BankStartOffset[SFX_BANK_BUILDING_CLUB_12] = SFX_CLUB_12; - BankStartOffset[SFX_BANK_BUILDING_CLUB_RAGGA] = SFX_CLUB_RAGGA; - BankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_1] = SFX_STRIP_CLUB_1; - BankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_2] = SFX_STRIP_CLUB_2; - BankStartOffset[SFX_BANK_BUILDING_WORKSHOP] = SFX_WORKSHOP_1; - BankStartOffset[SFX_BANK_BUILDING_PIANO_BAR] = SFX_PIANO_BAR_1; - BankStartOffset[SFX_BANK_BUILDING_SAWMILL] = SFX_SAWMILL_LOOP; - BankStartOffset[SFX_BANK_BUILDING_DOG_FOOD_FACTORY] = SFX_DOG_FOOD_FACTORY; - BankStartOffset[SFX_BANK_BUILDING_LAUNDERETTE] = SFX_LAUNDERETTE_LOOP; - BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_CHINATOWN] = SFX_RESTAURANT_CHINATOWN; - BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_ITALY] = SFX_RESTAURANT_ITALY; - BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_1] = SFX_RESTAURANT_GENERIC_1; - BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_2] = SFX_RESTAURANT_GENERIC_2; - BankStartOffset[SFX_BANK_BUILDING_AIRPORT] = SFX_AIRPORT_ANNOUNCEMENT_1; - BankStartOffset[SFX_BANK_BUILDING_SHOP] = SFX_SHOP_LOOP; - BankStartOffset[SFX_BANK_BUILDING_CINEMA] = SFX_CINEMA_BASS_1; - BankStartOffset[SFX_BANK_BUILDING_DOCKS] = SFX_DOCKS_FOGHORN; - BankStartOffset[SFX_BANK_BUILDING_HOME] = SFX_HOME_1; - BankStartOffset[SFX_BANK_BUILDING_PORN_1] = SFX_PORN_1_LOOP; - BankStartOffset[SFX_BANK_BUILDING_PORN_2] = SFX_PORN_2_LOOP; - BankStartOffset[SFX_BANK_BUILDING_PORN_3] = SFX_PORN_3_LOOP; - BankStartOffset[SFX_BANK_BUILDING_POLICE_BALL] = SFX_POLICE_BALL_1; - BankStartOffset[SFX_BANK_BUILDING_BANK_ALARM] = SFX_BANK_ALARM_1; - BankStartOffset[SFX_BANK_BUILDING_RAVE_INDUSTRIAL] = SFX_RAVE_INDUSTRIAL; - BankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL] = SFX_RAVE_COMMERCIAL; - BankStartOffset[SFX_BANK_BUILDING_RAVE_SUBURBAN] = SFX_RAVE_SUBURBAN; - BankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL_2] = SFX_RAVE_COMMERCIAL_2; - BankStartOffset[SFX_BANK_BUILDING_39] = SFX_CLUB_1_1; - BankStartOffset[SFX_BANK_BUILDING_40] = SFX_CLUB_1_2; - BankStartOffset[SFX_BANK_BUILDING_41] = SFX_CLUB_1_3; - BankStartOffset[SFX_BANK_BUILDING_42] = SFX_CLUB_1_4; - BankStartOffset[SFX_BANK_BUILDING_43] = SFX_CLUB_1_5; - BankStartOffset[SFX_BANK_BUILDING_44] = SFX_CLUB_1_6; - BankStartOffset[SFX_BANK_BUILDING_45] = SFX_CLUB_1_7; - BankStartOffset[SFX_BANK_BUILDING_46] = SFX_CLUB_1_8; - BankStartOffset[SFX_BANK_BUILDING_47] = SFX_CLUB_1_9; - BankStartOffset[SFX_BANK_GENERIC_EXTRA] = SFX_EXPLOSION_1; + gBankStartOffset[SFX_BANK_PACARD] = SFX_CAR_ACCEL_1; + gBankStartOffset[SFX_BANK_PATHFINDER] = SFX_CAR_ACCEL_2; + gBankStartOffset[SFX_BANK_PORSCHE] = SFX_CAR_ACCEL_3; + gBankStartOffset[SFX_BANK_SPIDER] = SFX_CAR_ACCEL_4; + gBankStartOffset[SFX_BANK_MERC] = SFX_CAR_ACCEL_5; + gBankStartOffset[SFX_BANK_TRUCK] = SFX_CAR_ACCEL_6; + gBankStartOffset[SFX_BANK_HOTROD] = SFX_CAR_ACCEL_7; + gBankStartOffset[SFX_BANK_COBRA] = SFX_CAR_ACCEL_8; + gBankStartOffset[SFX_BANK_NONE] = SFX_CAR_ACCEL_9; + gBankStartOffset[SFX_BANK_FRONT_END_MENU] = SFX_PAGE_CHANGE_AND_BACK_LEFT; + gBankStartOffset[SFX_BANK_TRAIN] = SFX_TRAIN_STATION_AMBIENCE_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_1] = SFX_CLUB_1; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_2] = SFX_CLUB_2; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_3] = SFX_CLUB_3; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_4] = SFX_CLUB_4; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_5] = SFX_CLUB_5; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_6] = SFX_CLUB_6; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_7] = SFX_CLUB_7; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_8] = SFX_CLUB_8; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_9] = SFX_CLUB_9; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_10] = SFX_CLUB_10; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_11] = SFX_CLUB_11; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_12] = SFX_CLUB_12; + gBankStartOffset[SFX_BANK_BUILDING_CLUB_RAGGA] = SFX_CLUB_RAGGA; + gBankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_1] = SFX_STRIP_CLUB_1; + gBankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_2] = SFX_STRIP_CLUB_2; + gBankStartOffset[SFX_BANK_BUILDING_WORKSHOP] = SFX_WORKSHOP_1; + gBankStartOffset[SFX_BANK_BUILDING_PIANO_BAR] = SFX_PIANO_BAR_1; + gBankStartOffset[SFX_BANK_BUILDING_SAWMILL] = SFX_SAWMILL_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_DOG_FOOD_FACTORY] = SFX_DOG_FOOD_FACTORY; + gBankStartOffset[SFX_BANK_BUILDING_LAUNDERETTE] = SFX_LAUNDERETTE_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_CHINATOWN] = SFX_RESTAURANT_CHINATOWN; + gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_ITALY] = SFX_RESTAURANT_ITALY; + gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_1] = SFX_RESTAURANT_GENERIC_1; + gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_2] = SFX_RESTAURANT_GENERIC_2; + gBankStartOffset[SFX_BANK_BUILDING_AIRPORT] = SFX_AIRPORT_ANNOUNCEMENT_1; + gBankStartOffset[SFX_BANK_BUILDING_SHOP] = SFX_SHOP_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_CINEMA] = SFX_CINEMA_BASS_1; + gBankStartOffset[SFX_BANK_BUILDING_DOCKS] = SFX_DOCKS_FOGHORN; + gBankStartOffset[SFX_BANK_BUILDING_HOME] = SFX_HOME_1; + gBankStartOffset[SFX_BANK_BUILDING_PORN_1] = SFX_PORN_1_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_PORN_2] = SFX_PORN_2_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_PORN_3] = SFX_PORN_3_LOOP; + gBankStartOffset[SFX_BANK_BUILDING_POLICE_BALL] = SFX_POLICE_BALL_1; + gBankStartOffset[SFX_BANK_BUILDING_BANK_ALARM] = SFX_BANK_ALARM_1; + gBankStartOffset[SFX_BANK_BUILDING_RAVE_INDUSTRIAL] = SFX_RAVE_INDUSTRIAL; + gBankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL] = SFX_RAVE_COMMERCIAL; + gBankStartOffset[SFX_BANK_BUILDING_RAVE_SUBURBAN] = SFX_RAVE_SUBURBAN; + gBankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL_2] = SFX_RAVE_COMMERCIAL_2; + gBankStartOffset[SFX_BANK_BUILDING_39] = SFX_CLUB_1_1; + gBankStartOffset[SFX_BANK_BUILDING_40] = SFX_CLUB_1_2; + gBankStartOffset[SFX_BANK_BUILDING_41] = SFX_CLUB_1_3; + gBankStartOffset[SFX_BANK_BUILDING_42] = SFX_CLUB_1_4; + gBankStartOffset[SFX_BANK_BUILDING_43] = SFX_CLUB_1_5; + gBankStartOffset[SFX_BANK_BUILDING_44] = SFX_CLUB_1_6; + gBankStartOffset[SFX_BANK_BUILDING_45] = SFX_CLUB_1_7; + gBankStartOffset[SFX_BANK_BUILDING_46] = SFX_CLUB_1_8; + gBankStartOffset[SFX_BANK_BUILDING_47] = SFX_CLUB_1_9; + gBankStartOffset[SFX_BANK_GENERIC_EXTRA] = SFX_EXPLOSION_1; #endif // GTA_PS2 - BankStartOffset[SFX_BANK_PED_COMMENTS] = SAMPLEBANK_PED_START; + gBankStartOffset[SFX_BANK_PED_COMMENTS] = SAMPLEBANK_PED_START; } void diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index 04e7e529..2ae12fcf 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -17,7 +17,7 @@ bool bChannelsCreated = false; int32 CChannel::channelsThatNeedService = 0; -uint8 tempStereoBuffer[PED_BLOCKSIZE * 2]; +uint8 tempStereoBuffer[PED_BUFFERSIZE * 2]; void CChannel::InitChannels() diff --git a/src/audio/sampman.h b/src/audio/sampman.h index d1ad9a26..08e5dde0 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -96,7 +96,7 @@ enum }; #define MAX_PEDSFX 7 -#define PED_BLOCKSIZE 79000 +#define PED_BUFFERSIZE 79000 #define MAXPROVIDERS 64 @@ -130,7 +130,7 @@ class cSampleManager bool8 m_bInitialised; uint8 m_nNumberOfProviders; char *m_aAudioProviders[MAXPROVIDERS]; - tSample m_aSamples[TOTAL_AUDIO_SAMPLES]; + tSample m_aSampleDataTable[TOTAL_AUDIO_SAMPLES]; public: @@ -217,7 +217,7 @@ public: }; extern cSampleManager SampleManager; -extern uint32 BankStartOffset[MAX_SFX_BANKS]; +extern uint32 gBankStartOffset[MAX_SFX_BANKS]; #ifdef AUDIO_OAL extern int defaultProvider; diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index ddfaaa5f..3149b306 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -20,27 +20,27 @@ #pragma comment( lib, "mss32.lib" ) cSampleManager SampleManager; -uint32 BankStartOffset[MAX_SFX_BANKS]; +uint32 gBankStartOffset[MAX_SFX_BANKS]; /////////////////////////////////////////////////////////////// char SampleBankDescFilename[] = "AUDIO\\SFX.SDT"; char SampleBankDataFilename[] = "AUDIO\\SFX.RAW"; -FILE *fpSampleDescHandle; -FILE *fpSampleDataHandle; -bool8 bSampleBankLoaded [MAX_SFX_BANKS]; -int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; -int32 nSampleBankSize [MAX_SFX_BANKS]; -int32 nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; +FILE *gFileHandleSampleDesc; +FILE *gFileHandleSampleData; +bool8 gBankLoaded [MAX_SFX_BANKS]; +int32 gSampleBankDiscStartOffset [MAX_SFX_BANKS]; +int32 gSampleBankSize [MAX_SFX_BANKS]; +int32 gSampleBankMemoryStartAddress[MAX_SFX_BANKS]; int32 _nSampleDataEndOffset; -int32 nPedSlotSfx [MAX_PEDSFX]; -int32 nPedSlotSfxAddr[MAX_PEDSFX]; -uint8 nCurrentPedSlot; +int32 gPedSfx [MAX_PEDSFX]; +int32 gPedSfxAddr[MAX_PEDSFX]; +uint8 gCurPedIndex; -uint8 nChannelVolume[MAXCHANNELS+MAX2DCHANNELS]; +uint8 gChannelVolume[MAXCHANNELS+MAX2DCHANNELS]; -uint32 nStreamLength[TOTAL_STREAMED_SOUNDS]; +uint32 gStreamLength[TOTAL_STREAMED_SOUNDS]; /////////////////////////////////////////////////////////////// struct tMP3Entry @@ -851,11 +851,11 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { - m_aSamples[i].nOffset = 0; - m_aSamples[i].nSize = 0; - m_aSamples[i].nFrequency = 22050; - m_aSamples[i].nLoopStart = 0; - m_aSamples[i].nLoopEnd = -1; + m_aSampleDataTable[i].nOffset = 0; + m_aSampleDataTable[i].nSize = 0; + m_aSampleDataTable[i].nFrequency = 22050; + m_aSampleDataTable[i].nLoopStart = 0; + m_aSampleDataTable[i].nLoopEnd = -1; } m_nEffectsVolume = MAX_VOLUME; @@ -890,17 +890,17 @@ cSampleManager::Initialise(void) // banks TRACE("banks"); { - fpSampleDescHandle = NULL; - fpSampleDataHandle = NULL; + gFileHandleSampleDesc = NULL; + gFileHandleSampleData = NULL; _nSampleDataEndOffset = 0; for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - bSampleBankLoaded[i] = FALSE; - nSampleBankDiscStartOffset[i] = 0; - nSampleBankSize[i] = 0; - nSampleBankMemoryStartAddress[i] = 0; + gBankLoaded[i] = FALSE; + gSampleBankDiscStartOffset[i] = 0; + gSampleBankSize[i] = 0; + gSampleBankMemoryStartAddress[i] = 0; } } @@ -909,18 +909,18 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < MAX_PEDSFX; i++ ) { - nPedSlotSfx[i] = NO_SAMPLE; - nPedSlotSfxAddr[i] = 0; + gPedSfx[i] = NO_SAMPLE; + gPedSfxAddr[i] = 0; } - nCurrentPedSlot = 0; + gCurPedIndex = 0; } // channel volume TRACE("vol"); { for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ ) - nChannelVolume[i] = 0; + gChannelVolume[i] = 0; } TRACE("mss"); @@ -947,14 +947,14 @@ cSampleManager::Initialise(void) return FALSE; } - nSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(nSampleBankSize[SFX_BANK_0]); - if ( !nSampleBankMemoryStartAddress[SFX_BANK_0] ) + gSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(gSampleBankSize[SFX_BANK_0]); + if ( !gSampleBankMemoryStartAddress[SFX_BANK_0] ) { Terminate(); return FALSE; } - nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX); + gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BUFFERSIZE*MAX_PEDSFX); } @@ -962,7 +962,7 @@ cSampleManager::Initialise(void) TRACE("cache"); FILE *cacheFile = fopen("audio\\sound.cache", "rb"); if (cacheFile) { - fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fread(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); m_bInitialised = TRUE; }else { @@ -1016,7 +1016,7 @@ cSampleManager::Initialise(void) AIL_close_stream(mp3Stream[0]); mp3Stream[0] = NULL; - nStreamLength[i] = tatalms; + gStreamLength[i] = tatalms; } else { @@ -1115,7 +1115,7 @@ cSampleManager::Initialise(void) strcpy(m_szCDRomRootPath, rootpath); for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) - nStreamLength[i] = streamLength[i]; + gStreamLength[i] = streamLength[i]; _bUseHDDAudio = TRUE; } @@ -1125,7 +1125,7 @@ cSampleManager::Initialise(void) #endif #ifdef AUDIO_CACHE cacheFile = fopen("audio\\sound.cache", "wb"); - fwrite(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fwrite(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); } #endif @@ -1188,12 +1188,12 @@ cSampleManager::Initialise(void) if ( nNumMP3s != 0 ) { - nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; + gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; for ( tMP3Entry *e = _pMP3List; e != NULL; e = e->pNext ) { - e->nTrackStreamPos = nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; - nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; + e->nTrackStreamPos = gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; + gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; } time_t t = time(NULL); @@ -1270,16 +1270,16 @@ cSampleManager::Terminate(void) _DeleteMP3Entries(); - if ( nSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) + if ( gSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) { - AIL_mem_free_lock((void *)nSampleBankMemoryStartAddress[SFX_BANK_0]); - nSampleBankMemoryStartAddress[SFX_BANK_0] = 0; + AIL_mem_free_lock((void *)gSampleBankMemoryStartAddress[SFX_BANK_0]); + gSampleBankMemoryStartAddress[SFX_BANK_0] = 0; } - if ( nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) + if ( gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) { - AIL_mem_free_lock((void *)nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); - nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; + AIL_mem_free_lock((void *)gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); + gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; } if ( DIG ) @@ -1363,10 +1363,10 @@ cSampleManager::UpdateEffectsVolume(void) //[Y], cSampleManager::UpdateSoundBuff { if ( opened_samples[i] && GetChannelUsedFlag(i) ) { - if ( nChannelVolume[i] ) + if ( gChannelVolume[i] ) { AIL_set_3D_sample_volume(opened_samples[i], - m_nEffectsFadeVolume * nChannelVolume[i] * m_nEffectsVolume >> 14); + m_nEffectsFadeVolume * gChannelVolume[i] * m_nEffectsVolume >> 14); } } } @@ -1376,10 +1376,10 @@ cSampleManager::UpdateEffectsVolume(void) //[Y], cSampleManager::UpdateSoundBuff { if ( GetChannelUsedFlag(i - MAXCHANNELS) ) { - if ( nChannelVolume[i - MAXCHANNELS] ) + if ( gChannelVolume[i - MAXCHANNELS] ) { AIL_set_sample_volume(opened_2dsamples[i - MAXCHANNELS], - m_nEffectsFadeVolume * nChannelVolume[i - MAXCHANNELS] * m_nEffectsVolume >> 14); + m_nEffectsFadeVolume * gChannelVolume[i - MAXCHANNELS] * m_nEffectsVolume >> 14); } } } @@ -1433,13 +1433,13 @@ cSampleManager::LoadSampleBank(uint8 nBank) return FALSE; } - if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) + if ( fseek(gFileHandleSampleData, gSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank],fpSampleDataHandle) != nSampleBankSize[nBank] ) + if ( fread((void *)gSampleBankMemoryStartAddress[nBank], 1, gSampleBankSize[nBank],gFileHandleSampleData) != gSampleBankSize[nBank] ) return FALSE; - bSampleBankLoaded[nBank] = TRUE; + gBankLoaded[nBank] = TRUE; return TRUE; } @@ -1447,13 +1447,13 @@ cSampleManager::LoadSampleBank(uint8 nBank) void cSampleManager::UnloadSampleBank(uint8 nBank) { - bSampleBankLoaded[nBank] = FALSE; + gBankLoaded[nBank] = FALSE; } bool8 cSampleManager::IsSampleBankLoaded(uint8 nBank) { - return bSampleBankLoaded[nBank]; + return gBankLoaded[nBank]; } bool8 @@ -1463,12 +1463,12 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = nCurrentPedSlot - i - 1; + slot = gCurPedIndex - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(nPedSlotSfx); + slot += ARRAY_SIZE(gPedSfx); #endif - if ( nComment == nPedSlotSfx[slot] ) + if ( nComment == gPedSfx[slot] ) return TRUE; } @@ -1482,12 +1482,12 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = nCurrentPedSlot - i - 1; + slot = gCurPedIndex - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(nPedSlotSfx); + slot += ARRAY_SIZE(gPedSfx); #endif - if ( nComment == nPedSlotSfx[slot] ) + if ( nComment == gPedSfx[slot] ) return slot; } @@ -1522,17 +1522,17 @@ cSampleManager::LoadPedComment(uint32 nComment) } } - if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) + if ( fseek(gFileHandleSampleData, m_aSampleDataTable[nComment].nOffset, SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) + if ( fread((void *)(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE*gCurPedIndex), 1, m_aSampleDataTable[nComment].nSize, gFileHandleSampleData) != m_aSampleDataTable[nComment].nSize ) return FALSE; - nPedSlotSfxAddr[nCurrentPedSlot] = nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot; - nPedSlotSfx [nCurrentPedSlot] = nComment; + gPedSfxAddr[gCurPedIndex] = gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE*gCurPedIndex; + gPedSfx [gCurPedIndex] = nComment; - if ( ++nCurrentPedSlot >= MAX_PEDSFX ) - nCurrentPedSlot = 0; + if ( ++gCurPedIndex >= MAX_PEDSFX ) + gCurPedIndex = 0; return TRUE; } @@ -1540,10 +1540,10 @@ cSampleManager::LoadPedComment(uint32 nComment) int32 cSampleManager::GetBankContainingSound(uint32 offset) { - if ( offset >= BankStartOffset[SFX_BANK_PED_COMMENTS] ) + if ( offset >= gBankStartOffset[SFX_BANK_PED_COMMENTS] ) return SFX_BANK_PED_COMMENTS; - if ( offset >= BankStartOffset[SFX_BANK_0] ) + if ( offset >= gBankStartOffset[SFX_BANK_0] ) return SFX_BANK_0; return INVALID_SFX_BANK; @@ -1552,25 +1552,25 @@ cSampleManager::GetBankContainingSound(uint32 offset) int32 cSampleManager::GetSampleBaseFrequency(uint32 nSample) { - return m_aSamples[nSample].nFrequency; + return m_aSampleDataTable[nSample].nFrequency; } int32 cSampleManager::GetSampleLoopStartOffset(uint32 nSample) { - return m_aSamples[nSample].nLoopStart; + return m_aSampleDataTable[nSample].nLoopStart; } int32 cSampleManager::GetSampleLoopEndOffset(uint32 nSample) { - return m_aSamples[nSample].nLoopEnd; + return m_aSampleDataTable[nSample].nLoopEnd; } uint32 cSampleManager::GetSampleLength(uint32 nSample) { - return m_aSamples[nSample].nSize >> 1; + return m_aSampleDataTable[nSample].nSize >> 1; } bool8 @@ -1700,7 +1700,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( !IsSampleBankLoaded(nBank) ) return FALSE; - addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; + addr = gSampleBankMemoryStartAddress[nBank] + m_aSampleDataTable[nSfx].nOffset - m_aSampleDataTable[gBankStartOffset[nBank]].nOffset; } else { @@ -1709,14 +1709,14 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) int32 slot = _GetPedCommentSlot(nSfx); - addr = nPedSlotSfxAddr[slot]; + addr = gPedSfxAddr[slot]; } if ( b2d ) { if ( opened_2dsamples[nChannel - MAXCHANNELS] ) { - AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSamples[nSfx].nSize); + AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSampleDataTable[nSfx].nSize); return TRUE; } else @@ -1729,8 +1729,8 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) info.format = WAVE_FORMAT_PCM; info.data_ptr = (void *)addr; info.channels = 1; - info.data_len = m_aSamples[nSfx].nSize; - info.rate = m_aSamples[nSfx].nFrequency; + info.data_len = m_aSampleDataTable[nSfx].nSize; + info.rate = m_aSampleDataTable[nSfx].nFrequency; info.bits = 16; if ( AIL_set_3D_sample_info(opened_samples[nChannel], &info) == 0 ) @@ -1749,18 +1749,18 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - nChannelVolume[nChannel] = vol; + gChannelVolume[nChannel] = vol; // increase the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - nChannelVolume[nChannel] >>= 2; + gChannelVolume[nChannel] >>= 2; } if ( opened_samples[nChannel] ) - AIL_set_3D_sample_volume(opened_samples[nChannel], m_nEffectsFadeVolume*nChannelVolume[nChannel]*m_nEffectsVolume >> 14); + AIL_set_3D_sample_volume(opened_samples[nChannel], m_nEffectsFadeVolume*gChannelVolume[nChannel]*m_nEffectsVolume >> 14); } @@ -1788,14 +1788,14 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) { case CHANNEL_POLICE_RADIO: { - nChannelVolume[nChannel] = vol; + gChannelVolume[nChannel] = vol; // increase the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - nChannelVolume[nChannel] >>= 2; + gChannelVolume[nChannel] >>= 2; } if ( opened_2dsamples[nChannel - MAXCHANNELS] ) @@ -2065,7 +2065,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Just switched to MP3 player if ( !_bIsMp3Active && i == 0 ) { - if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + if ( nPos > gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) position = 0; tMP3Entry *e = _pMP3List; @@ -2253,7 +2253,7 @@ int32 cSampleManager::GetStreamedFileLength(uint8 nStream) { if ( m_bInitialised ) - return nStreamLength[nStream]; + return gStreamLength[nStream]; return 0; } @@ -2280,42 +2280,42 @@ cSampleManager::InitialiseSampleBanks(void) { int32 nBank = SFX_BANK_0; - fpSampleDescHandle = fopen(SampleBankDescFilename, "rb"); - if ( fpSampleDescHandle == NULL ) + gFileHandleSampleDesc = fopen(SampleBankDescFilename, "rb"); + if ( gFileHandleSampleDesc == NULL ) return FALSE; - fpSampleDataHandle = fopen(SampleBankDataFilename, "rb"); - if ( fpSampleDataHandle == NULL ) + gFileHandleSampleData = fopen(SampleBankDataFilename, "rb"); + if ( gFileHandleSampleData == NULL ) { - fclose(fpSampleDescHandle); - fpSampleDescHandle = NULL; + fclose(gFileHandleSampleDesc); + gFileHandleSampleDesc = NULL; return FALSE; } - fseek(fpSampleDataHandle, 0, SEEK_END); - _nSampleDataEndOffset = ftell(fpSampleDataHandle); - rewind(fpSampleDataHandle); + fseek(gFileHandleSampleData, 0, SEEK_END); + _nSampleDataEndOffset = ftell(gFileHandleSampleData); + rewind(gFileHandleSampleData); - fread(m_aSamples, sizeof(tSample), TOTAL_AUDIO_SAMPLES, fpSampleDescHandle); + fread(m_aSampleDataTable, sizeof(tSample), TOTAL_AUDIO_SAMPLES, gFileHandleSampleDesc); - fclose(fpSampleDescHandle); - fpSampleDescHandle = NULL; + fclose(gFileHandleSampleDesc); + gFileHandleSampleDesc = NULL; for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { #ifdef FIX_BUGS if (nBank >= MAX_SFX_BANKS) break; #endif - if ( BankStartOffset[nBank] == BankStartOffset[SFX_BANK_0] + i ) + if ( gBankStartOffset[nBank] == gBankStartOffset[SFX_BANK_0] + i ) { - nSampleBankDiscStartOffset[nBank] = m_aSamples[i].nOffset; + gSampleBankDiscStartOffset[nBank] = m_aSampleDataTable[i].nOffset; nBank++; } } - nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; - nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; + gSampleBankSize[SFX_BANK_0] = gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - gSampleBankDiscStartOffset[SFX_BANK_0]; + gSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; return TRUE; } diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp index 95603c72..8478d534 100644 --- a/src/audio/sampman_null.cpp +++ b/src/audio/sampman_null.cpp @@ -6,7 +6,7 @@ cSampleManager SampleManager; bool8 _bSampmanInitialised = FALSE; -uint32 BankStartOffset[MAX_SFX_BANKS]; +uint32 gBankStartOffset[MAX_SFX_BANKS]; uint32 nNumMP3s; cSampleManager::cSampleManager(void) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index f2771885..90f098ed 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -47,9 +47,9 @@ //TODO: fix eax3 reverb cSampleManager SampleManager; -bool8 _bSampmanInitialised = FALSE; +bool8 gInitialised = FALSE; -uint32 BankStartOffset[MAX_SFX_BANKS]; +uint32 gBankStartOffset[MAX_SFX_BANKS]; int prevprovider=-1; int curprovider=-1; @@ -79,26 +79,26 @@ int defaultProvider; char SampleBankDescFilename[] = "audio/sfx.SDT"; char SampleBankDataFilename[] = "audio/sfx.RAW"; -FILE *fpSampleDescHandle; +FILE *gFileHandleSampleDesc; #ifdef OPUS_SFX -OggOpusFile *fpSampleDataHandle; +OggOpusFile *gFileHandleSampleData; #else -FILE *fpSampleDataHandle; +FILE *gFileHandleSampleData; #endif -bool8 bSampleBankLoaded [MAX_SFX_BANKS]; -int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; -int32 nSampleBankSize [MAX_SFX_BANKS]; -uintptr nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; +bool8 gBankLoaded [MAX_SFX_BANKS]; +int32 gSampleBankDiscStartOffset [MAX_SFX_BANKS]; +int32 gSampleBankSize [MAX_SFX_BANKS]; +uintptr gSampleBankMemoryStartAddress[MAX_SFX_BANKS]; int32 _nSampleDataEndOffset; -int32 nPedSlotSfx [MAX_PEDSFX]; -int32 nPedSlotSfxAddr[MAX_PEDSFX]; -uint8 nCurrentPedSlot; +int32 gPedSfx [MAX_PEDSFX]; +int32 gPedSfxAddr[MAX_PEDSFX]; +uint8 gCurPedIndex; CChannel aChannel[NUM_CHANNELS]; -uint8 nChannelVolume[NUM_CHANNELS]; +uint8 gChannelVolume[NUM_CHANNELS]; -uint32 nStreamLength[TOTAL_STREAMED_SOUNDS]; +uint32 gStreamLength[TOTAL_STREAMED_SOUNDS]; ALuint ALStreamSources[MAX_STREAMS][2]; ALuint ALStreamBuffers[MAX_STREAMS][NUM_STREAMBUFFERS]; @@ -779,7 +779,7 @@ void cSampleManager::ReacquireDigitalHandle(void) bool8 cSampleManager::Initialise(void) { - if ( _bSampmanInitialised ) + if ( gInitialised ) return TRUE; EFXInit(); @@ -788,11 +788,11 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { - m_aSamples[i].nOffset = 0; - m_aSamples[i].nSize = 0; - m_aSamples[i].nFrequency = 22050; - m_aSamples[i].nLoopStart = 0; - m_aSamples[i].nLoopEnd = -1; + m_aSampleDataTable[i].nOffset = 0; + m_aSampleDataTable[i].nSize = 0; + m_aSampleDataTable[i].nFrequency = 22050; + m_aSampleDataTable[i].nLoopStart = 0; + m_aSampleDataTable[i].nLoopEnd = -1; } m_nEffectsVolume = MAX_VOLUME; @@ -820,31 +820,31 @@ cSampleManager::Initialise(void) } { - fpSampleDescHandle = NULL; - fpSampleDataHandle = NULL; + gFileHandleSampleDesc = NULL; + gFileHandleSampleData = NULL; for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - bSampleBankLoaded[i] = FALSE; - nSampleBankDiscStartOffset[i] = 0; - nSampleBankSize[i] = 0; - nSampleBankMemoryStartAddress[i] = 0; + gBankLoaded[i] = FALSE; + gSampleBankDiscStartOffset[i] = 0; + gSampleBankSize[i] = 0; + gSampleBankMemoryStartAddress[i] = 0; } } { for ( int32 i = 0; i < MAX_PEDSFX; i++ ) { - nPedSlotSfx[i] = NO_SAMPLE; - nPedSlotSfxAddr[i] = 0; + gPedSfx[i] = NO_SAMPLE; + gPedSfxAddr[i] = 0; } - nCurrentPedSlot = 0; + gCurPedIndex = 0; } { for ( int32 i = 0; i < NUM_CHANNELS; i++ ) - nChannelVolume[i] = 0; + gChannelVolume[i] = 0; } add_providers(); @@ -922,14 +922,14 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) - nStreamLength[i] = 0; + gStreamLength[i] = 0; } #ifdef AUDIO_CACHE FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb"); if (cacheFile) { debug("Loadind audio cache (If game crashes around here, then your cache is corrupted, remove audio/sound.cache)\n"); - fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fread(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); } else { @@ -944,7 +944,7 @@ cSampleManager::Initialise(void) delete aStream[0]; aStream[0] = NULL; - nStreamLength[i] = tatalms; + gStreamLength[i] = tatalms; } else USERERROR("Can't open '%s'\n", StreamedNameTable[i]); } @@ -952,7 +952,7 @@ cSampleManager::Initialise(void) cacheFile = fcaseopen("audio\\sound.cache", "wb"); if(cacheFile) { debug("Saving audio cache\n"); - fwrite(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fwrite(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); } else { debug("Cannot save audio cache\n"); @@ -967,17 +967,17 @@ cSampleManager::Initialise(void) return FALSE; } - nSampleBankMemoryStartAddress[SFX_BANK_0] = (uintptr)malloc(nSampleBankSize[SFX_BANK_0]); - ASSERT(nSampleBankMemoryStartAddress[SFX_BANK_0] != 0); + gSampleBankMemoryStartAddress[SFX_BANK_0] = (uintptr)malloc(gSampleBankSize[SFX_BANK_0]); + ASSERT(gSampleBankMemoryStartAddress[SFX_BANK_0] != 0); - if ( nSampleBankMemoryStartAddress[SFX_BANK_0] == 0 ) + if ( gSampleBankMemoryStartAddress[SFX_BANK_0] == 0 ) { Terminate(); return FALSE; } - nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BLOCKSIZE*MAX_PEDSFX); - ASSERT(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0); + gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BUFFERSIZE*MAX_PEDSFX); + ASSERT(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0); LoadSampleBank(SFX_BANK_0); } @@ -992,7 +992,7 @@ cSampleManager::Initialise(void) } { - _bSampmanInitialised = TRUE; + gInitialised = TRUE; if ( defaultProvider >= 0 && defaultProvider < m_nNumberOfProviders ) { @@ -1014,12 +1014,12 @@ cSampleManager::Initialise(void) if ( nNumMP3s != 0 ) { - nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; + gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; for ( tMP3Entry *e = _pMP3List; e != NULL; e = e->pNext ) { - e->nTrackStreamPos = nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; - nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; + e->nTrackStreamPos = gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; + gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; } time_t t = time(NULL); @@ -1130,19 +1130,19 @@ cSampleManager::Terminate(void) CStream::Terminate(); - if ( nSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) + if ( gSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) { - free((void *)nSampleBankMemoryStartAddress[SFX_BANK_0]); - nSampleBankMemoryStartAddress[SFX_BANK_0] = 0; + free((void *)gSampleBankMemoryStartAddress[SFX_BANK_0]); + gSampleBankMemoryStartAddress[SFX_BANK_0] = 0; } - if ( nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) + if ( gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) { - free((void *)nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); - nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; + free((void *)gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); + gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; } - _bSampmanInitialised = FALSE; + gInitialised = FALSE; } bool8 cSampleManager::CheckForAnAudioFileOnCD(void) @@ -1158,14 +1158,14 @@ char cSampleManager::GetCDAudioDriveLetter(void) void cSampleManager::UpdateEffectsVolume(void) { - if ( _bSampmanInitialised ) + if ( gInitialised ) { for ( int32 i = 0; i < NUM_CHANNELS; i++ ) { if ( GetChannelUsedFlag(i) ) { - if ( nChannelVolume[i] != 0 ) - aChannel[i].SetVolume(m_nEffectsFadeVolume*nChannelVolume[i]*m_nEffectsVolume >> 14); + if ( gChannelVolume[i] != 0 ) + aChannel[i].SetVolume(m_nEffectsFadeVolume*gChannelVolume[i]*m_nEffectsVolume >> 14); } } } @@ -1220,10 +1220,10 @@ cSampleManager::LoadSampleBank(uint8 nBank) #ifdef OPUS_SFX int samplesRead = 0; - int samplesSize = nSampleBankSize[nBank] / 2; - op_pcm_seek(fpSampleDataHandle, 0); + int samplesSize = gSampleBankSize[nBank] / 2; + op_pcm_seek(gFileHandleSampleData, 0); while (samplesSize > 0) { - int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[nBank] + samplesRead), samplesSize, NULL); + int size = op_read(gFileHandleSampleData, (opus_int16 *)(gSampleBankMemoryStartAddress[nBank] + samplesRead), samplesSize, NULL); if (size <= 0) { // huh? //assert(0); @@ -1233,13 +1233,13 @@ cSampleManager::LoadSampleBank(uint8 nBank) samplesSize -= size; } #else - if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) + if ( fseek(gFileHandleSampleData, gSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank], fpSampleDataHandle) != nSampleBankSize[nBank] ) + if ( fread((void *)gSampleBankMemoryStartAddress[nBank], 1, gSampleBankSize[nBank], gFileHandleSampleData) != gSampleBankSize[nBank] ) return FALSE; #endif - bSampleBankLoaded[nBank] = TRUE; + gBankLoaded[nBank] = TRUE; return TRUE; } @@ -1249,7 +1249,7 @@ cSampleManager::UnloadSampleBank(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); - bSampleBankLoaded[nBank] = FALSE; + gBankLoaded[nBank] = FALSE; } bool8 @@ -1257,7 +1257,7 @@ cSampleManager::IsSampleBankLoaded(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); - return bSampleBankLoaded[nBank]; + return gBankLoaded[nBank]; } bool8 @@ -1269,12 +1269,12 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = nCurrentPedSlot - i - 1; + slot = gCurPedIndex - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(nPedSlotSfx); + slot += ARRAY_SIZE(gPedSfx); #endif - if ( nComment == nPedSlotSfx[slot] ) + if ( nComment == gPedSfx[slot] ) return TRUE; } @@ -1289,12 +1289,12 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) for (int32 i = 0; i < _TODOCONST(3); i++) { - slot = nCurrentPedSlot - i - 1; + slot = gCurPedIndex - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(nPedSlotSfx); + slot += ARRAY_SIZE(gPedSfx); #endif - if (nComment == nPedSlotSfx[slot]) + if (nComment == gPedSfx[slot]) return slot; } @@ -1333,10 +1333,10 @@ cSampleManager::LoadPedComment(uint32 nComment) #ifdef OPUS_SFX int samplesRead = 0; - int samplesSize = m_aSamples[nComment].nSize / 2; - op_pcm_seek(fpSampleDataHandle, m_aSamples[nComment].nOffset / 2); + int samplesSize = m_aSampleDataTable[nComment].nSize / 2; + op_pcm_seek(gFileHandleSampleData, m_aSampleDataTable[nComment].nOffset / 2); while (samplesSize > 0) { - int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * nCurrentPedSlot + samplesRead), + int size = op_read(gFileHandleSampleData, (opus_int16 *)(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE * gCurPedIndex + samplesRead), samplesSize, NULL); if (size <= 0) { return FALSE; @@ -1345,17 +1345,17 @@ cSampleManager::LoadPedComment(uint32 nComment) samplesSize -= size; } #else - if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) + if ( fseek(gFileHandleSampleData, m_aSampleDataTable[nComment].nOffset, SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) + if ( fread((void *)(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE*gCurPedIndex), 1, m_aSampleDataTable[nComment].nSize, gFileHandleSampleData) != m_aSampleDataTable[nComment].nSize ) return FALSE; #endif - nPedSlotSfx[nCurrentPedSlot] = nComment; + gPedSfx[gCurPedIndex] = nComment; - if ( ++nCurrentPedSlot >= MAX_PEDSFX ) - nCurrentPedSlot = 0; + if ( ++gCurPedIndex >= MAX_PEDSFX ) + gCurPedIndex = 0; return TRUE; } @@ -1363,10 +1363,10 @@ cSampleManager::LoadPedComment(uint32 nComment) int32 cSampleManager::GetBankContainingSound(uint32 offset) { - if ( offset >= BankStartOffset[SFX_BANK_PED_COMMENTS] ) + if ( offset >= gBankStartOffset[SFX_BANK_PED_COMMENTS] ) return SFX_BANK_PED_COMMENTS; - if ( offset >= BankStartOffset[SFX_BANK_0] ) + if ( offset >= gBankStartOffset[SFX_BANK_0] ) return SFX_BANK_0; return INVALID_SFX_BANK; @@ -1376,28 +1376,28 @@ int32 cSampleManager::GetSampleBaseFrequency(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSamples[nSample].nFrequency; + return m_aSampleDataTable[nSample].nFrequency; } int32 cSampleManager::GetSampleLoopStartOffset(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSamples[nSample].nLoopStart; + return m_aSampleDataTable[nSample].nLoopStart; } int32 cSampleManager::GetSampleLoopEndOffset(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSamples[nSample].nLoopEnd; + return m_aSampleDataTable[nSample].nLoopEnd; } uint32 cSampleManager::GetSampleLength(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSamples[nSample].nSize / sizeof(uint16); + return m_aSampleDataTable[nSample].nSize / sizeof(uint16); } bool8 cSampleManager::UpdateReverb(void) @@ -1496,7 +1496,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( !IsSampleBankLoaded(nBank) ) return FALSE; - addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; + addr = gSampleBankMemoryStartAddress[nBank] + m_aSampleDataTable[nSfx].nOffset - m_aSampleDataTable[gBankStartOffset[nBank]].nOffset; } else { @@ -1504,7 +1504,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) return FALSE; int32 slot = _GetPedCommentSlot(nSfx); - addr = (nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * slot); + addr = (gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE * slot); } if ( GetChannelUsedFlag(nChannel) ) @@ -1516,7 +1516,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) aChannel[nChannel].Reset(); if ( aChannel[nChannel].HasSource() ) { - aChannel[nChannel].SetSampleData ((void*)addr, m_aSamples[nSfx].nSize, m_aSamples[nSfx].nFrequency); + aChannel[nChannel].SetSampleData ((void*)addr, m_aSampleDataTable[nSfx].nSize, m_aSampleDataTable[nSfx].nFrequency); aChannel[nChannel].SetLoopPoints (0, -1); aChannel[nChannel].SetPitch (1.0f); return TRUE; @@ -1533,18 +1533,18 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - nChannelVolume[nChannel] = vol; + gChannelVolume[nChannel] = vol; // reduce channel volume when JB.MP3 or S4_BDBD.MP3 playing if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - nChannelVolume[nChannel] = vol / 4; + gChannelVolume[nChannel] = vol / 4; } // no idea, does this one looks like a bug or it's SetChannelVolume ? - aChannel[nChannel].SetVolume(m_nEffectsFadeVolume*nChannelVolume[nChannel]*m_nEffectsVolume >> 14); + aChannel[nChannel].SetVolume(m_nEffectsFadeVolume*gChannelVolume[nChannel]*m_nEffectsVolume >> 14); } void @@ -1573,14 +1573,14 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - nChannelVolume[nChannel] = vol; + gChannelVolume[nChannel] = vol; // reduce the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - nChannelVolume[nChannel] = vol / 4; + gChannelVolume[nChannel] = vol / 4; } aChannel[nChannel].SetVolume(m_nEffectsFadeVolume*vol*m_nEffectsVolume >> 14); @@ -1727,7 +1727,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Switched to MP3 player just now if ( !_bIsMp3Active && i == 0 ) { - if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + if ( nPos > gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) position = 0; tMP3Entry *e = _pMP3List; @@ -1935,7 +1935,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream) { ASSERT( nStream < TOTAL_STREAMED_SOUNDS ); - return nStreamLength[nStream]; + return gStreamLength[nStream]; } bool8 @@ -1977,47 +1977,47 @@ cSampleManager::InitialiseSampleBanks(void) { int32 nBank = SFX_BANK_0; - fpSampleDescHandle = fcaseopen(SampleBankDescFilename, "rb"); - if ( fpSampleDescHandle == NULL ) + gFileHandleSampleDesc = fcaseopen(SampleBankDescFilename, "rb"); + if ( gFileHandleSampleDesc == NULL ) return FALSE; #ifndef OPUS_SFX - fpSampleDataHandle = fcaseopen(SampleBankDataFilename, "rb"); - if ( fpSampleDataHandle == NULL ) + gFileHandleSampleData = fcaseopen(SampleBankDataFilename, "rb"); + if ( gFileHandleSampleData == NULL ) { - fclose(fpSampleDescHandle); - fpSampleDescHandle = NULL; + fclose(gFileHandleSampleDesc); + gFileHandleSampleDesc = NULL; return FALSE; } - fseek(fpSampleDataHandle, 0, SEEK_END); - int32 _nSampleDataEndOffset = ftell(fpSampleDataHandle); - rewind(fpSampleDataHandle); + fseek(gFileHandleSampleData, 0, SEEK_END); + int32 _nSampleDataEndOffset = ftell(gFileHandleSampleData); + rewind(gFileHandleSampleData); #else int e; - fpSampleDataHandle = op_open_file(SampleBankDataFilename, &e); + gFileHandleSampleData = op_open_file(SampleBankDataFilename, &e); #endif - fread(m_aSamples, sizeof(tSample), TOTAL_AUDIO_SAMPLES, fpSampleDescHandle); + fread(m_aSampleDataTable, sizeof(tSample), TOTAL_AUDIO_SAMPLES, gFileHandleSampleDesc); #ifdef OPUS_SFX - int32 _nSampleDataEndOffset = m_aSamples[TOTAL_AUDIO_SAMPLES - 1].nOffset + m_aSamples[TOTAL_AUDIO_SAMPLES - 1].nSize; + int32 _nSampleDataEndOffset = m_aSampleDataTable[TOTAL_AUDIO_SAMPLES - 1].nOffset + m_aSampleDataTable[TOTAL_AUDIO_SAMPLES - 1].nSize; #endif - fclose(fpSampleDescHandle); - fpSampleDescHandle = NULL; + fclose(gFileHandleSampleDesc); + gFileHandleSampleDesc = NULL; for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { #ifdef FIX_BUGS if (nBank >= MAX_SFX_BANKS) break; #endif - if ( BankStartOffset[nBank] == BankStartOffset[SFX_BANK_0] + i ) + if ( gBankStartOffset[nBank] == gBankStartOffset[SFX_BANK_0] + i ) { - nSampleBankDiscStartOffset[nBank] = m_aSamples[i].nOffset; + gSampleBankDiscStartOffset[nBank] = m_aSampleDataTable[i].nOffset; nBank++; } } - nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; - nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; + gSampleBankSize[SFX_BANK_0] = gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - gSampleBankDiscStartOffset[SFX_BANK_0]; + gSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; return TRUE; } From 53a4b6936be05b5920c4b66b9d30c81c8dc2f21c Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 27 Jun 2021 17:59:43 +0300 Subject: [PATCH 172/314] Revert "Use PS2-y global names on SampMan" We know that they changed all those names on PC. This reverts commit 091a65996ef9eba0dfeb49508927ebb521c0f15b. --- src/audio/AudioLogic.cpp | 122 ++++++++++---------- src/audio/oal/channel.cpp | 2 +- src/audio/sampman.h | 6 +- src/audio/sampman_miles.cpp | 196 ++++++++++++++++---------------- src/audio/sampman_null.cpp | 2 +- src/audio/sampman_oal.cpp | 218 ++++++++++++++++++------------------ 6 files changed, 273 insertions(+), 273 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 7fcab57d..8472cda6 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -58,69 +58,69 @@ enum LOADING_STATUS { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED, LOAD void cAudioManager::PreInitialiseGameSpecificSetup() const { - gBankStartOffset[SFX_BANK_0] = SAMPLEBANK_START; + BankStartOffset[SFX_BANK_0] = SAMPLEBANK_START; #ifdef GTA_PS2 - gBankStartOffset[SFX_BANK_PACARD] = SFX_CAR_ACCEL_1; - gBankStartOffset[SFX_BANK_PATHFINDER] = SFX_CAR_ACCEL_2; - gBankStartOffset[SFX_BANK_PORSCHE] = SFX_CAR_ACCEL_3; - gBankStartOffset[SFX_BANK_SPIDER] = SFX_CAR_ACCEL_4; - gBankStartOffset[SFX_BANK_MERC] = SFX_CAR_ACCEL_5; - gBankStartOffset[SFX_BANK_TRUCK] = SFX_CAR_ACCEL_6; - gBankStartOffset[SFX_BANK_HOTROD] = SFX_CAR_ACCEL_7; - gBankStartOffset[SFX_BANK_COBRA] = SFX_CAR_ACCEL_8; - gBankStartOffset[SFX_BANK_NONE] = SFX_CAR_ACCEL_9; - gBankStartOffset[SFX_BANK_FRONT_END_MENU] = SFX_PAGE_CHANGE_AND_BACK_LEFT; - gBankStartOffset[SFX_BANK_TRAIN] = SFX_TRAIN_STATION_AMBIENCE_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_1] = SFX_CLUB_1; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_2] = SFX_CLUB_2; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_3] = SFX_CLUB_3; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_4] = SFX_CLUB_4; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_5] = SFX_CLUB_5; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_6] = SFX_CLUB_6; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_7] = SFX_CLUB_7; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_8] = SFX_CLUB_8; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_9] = SFX_CLUB_9; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_10] = SFX_CLUB_10; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_11] = SFX_CLUB_11; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_12] = SFX_CLUB_12; - gBankStartOffset[SFX_BANK_BUILDING_CLUB_RAGGA] = SFX_CLUB_RAGGA; - gBankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_1] = SFX_STRIP_CLUB_1; - gBankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_2] = SFX_STRIP_CLUB_2; - gBankStartOffset[SFX_BANK_BUILDING_WORKSHOP] = SFX_WORKSHOP_1; - gBankStartOffset[SFX_BANK_BUILDING_PIANO_BAR] = SFX_PIANO_BAR_1; - gBankStartOffset[SFX_BANK_BUILDING_SAWMILL] = SFX_SAWMILL_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_DOG_FOOD_FACTORY] = SFX_DOG_FOOD_FACTORY; - gBankStartOffset[SFX_BANK_BUILDING_LAUNDERETTE] = SFX_LAUNDERETTE_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_CHINATOWN] = SFX_RESTAURANT_CHINATOWN; - gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_ITALY] = SFX_RESTAURANT_ITALY; - gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_1] = SFX_RESTAURANT_GENERIC_1; - gBankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_2] = SFX_RESTAURANT_GENERIC_2; - gBankStartOffset[SFX_BANK_BUILDING_AIRPORT] = SFX_AIRPORT_ANNOUNCEMENT_1; - gBankStartOffset[SFX_BANK_BUILDING_SHOP] = SFX_SHOP_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_CINEMA] = SFX_CINEMA_BASS_1; - gBankStartOffset[SFX_BANK_BUILDING_DOCKS] = SFX_DOCKS_FOGHORN; - gBankStartOffset[SFX_BANK_BUILDING_HOME] = SFX_HOME_1; - gBankStartOffset[SFX_BANK_BUILDING_PORN_1] = SFX_PORN_1_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_PORN_2] = SFX_PORN_2_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_PORN_3] = SFX_PORN_3_LOOP; - gBankStartOffset[SFX_BANK_BUILDING_POLICE_BALL] = SFX_POLICE_BALL_1; - gBankStartOffset[SFX_BANK_BUILDING_BANK_ALARM] = SFX_BANK_ALARM_1; - gBankStartOffset[SFX_BANK_BUILDING_RAVE_INDUSTRIAL] = SFX_RAVE_INDUSTRIAL; - gBankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL] = SFX_RAVE_COMMERCIAL; - gBankStartOffset[SFX_BANK_BUILDING_RAVE_SUBURBAN] = SFX_RAVE_SUBURBAN; - gBankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL_2] = SFX_RAVE_COMMERCIAL_2; - gBankStartOffset[SFX_BANK_BUILDING_39] = SFX_CLUB_1_1; - gBankStartOffset[SFX_BANK_BUILDING_40] = SFX_CLUB_1_2; - gBankStartOffset[SFX_BANK_BUILDING_41] = SFX_CLUB_1_3; - gBankStartOffset[SFX_BANK_BUILDING_42] = SFX_CLUB_1_4; - gBankStartOffset[SFX_BANK_BUILDING_43] = SFX_CLUB_1_5; - gBankStartOffset[SFX_BANK_BUILDING_44] = SFX_CLUB_1_6; - gBankStartOffset[SFX_BANK_BUILDING_45] = SFX_CLUB_1_7; - gBankStartOffset[SFX_BANK_BUILDING_46] = SFX_CLUB_1_8; - gBankStartOffset[SFX_BANK_BUILDING_47] = SFX_CLUB_1_9; - gBankStartOffset[SFX_BANK_GENERIC_EXTRA] = SFX_EXPLOSION_1; + BankStartOffset[SFX_BANK_PACARD] = SFX_CAR_ACCEL_1; + BankStartOffset[SFX_BANK_PATHFINDER] = SFX_CAR_ACCEL_2; + BankStartOffset[SFX_BANK_PORSCHE] = SFX_CAR_ACCEL_3; + BankStartOffset[SFX_BANK_SPIDER] = SFX_CAR_ACCEL_4; + BankStartOffset[SFX_BANK_MERC] = SFX_CAR_ACCEL_5; + BankStartOffset[SFX_BANK_TRUCK] = SFX_CAR_ACCEL_6; + BankStartOffset[SFX_BANK_HOTROD] = SFX_CAR_ACCEL_7; + BankStartOffset[SFX_BANK_COBRA] = SFX_CAR_ACCEL_8; + BankStartOffset[SFX_BANK_NONE] = SFX_CAR_ACCEL_9; + BankStartOffset[SFX_BANK_FRONT_END_MENU] = SFX_PAGE_CHANGE_AND_BACK_LEFT; + BankStartOffset[SFX_BANK_TRAIN] = SFX_TRAIN_STATION_AMBIENCE_LOOP; + BankStartOffset[SFX_BANK_BUILDING_CLUB_1] = SFX_CLUB_1; + BankStartOffset[SFX_BANK_BUILDING_CLUB_2] = SFX_CLUB_2; + BankStartOffset[SFX_BANK_BUILDING_CLUB_3] = SFX_CLUB_3; + BankStartOffset[SFX_BANK_BUILDING_CLUB_4] = SFX_CLUB_4; + BankStartOffset[SFX_BANK_BUILDING_CLUB_5] = SFX_CLUB_5; + BankStartOffset[SFX_BANK_BUILDING_CLUB_6] = SFX_CLUB_6; + BankStartOffset[SFX_BANK_BUILDING_CLUB_7] = SFX_CLUB_7; + BankStartOffset[SFX_BANK_BUILDING_CLUB_8] = SFX_CLUB_8; + BankStartOffset[SFX_BANK_BUILDING_CLUB_9] = SFX_CLUB_9; + BankStartOffset[SFX_BANK_BUILDING_CLUB_10] = SFX_CLUB_10; + BankStartOffset[SFX_BANK_BUILDING_CLUB_11] = SFX_CLUB_11; + BankStartOffset[SFX_BANK_BUILDING_CLUB_12] = SFX_CLUB_12; + BankStartOffset[SFX_BANK_BUILDING_CLUB_RAGGA] = SFX_CLUB_RAGGA; + BankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_1] = SFX_STRIP_CLUB_1; + BankStartOffset[SFX_BANK_BUILDING_STRIP_CLUB_2] = SFX_STRIP_CLUB_2; + BankStartOffset[SFX_BANK_BUILDING_WORKSHOP] = SFX_WORKSHOP_1; + BankStartOffset[SFX_BANK_BUILDING_PIANO_BAR] = SFX_PIANO_BAR_1; + BankStartOffset[SFX_BANK_BUILDING_SAWMILL] = SFX_SAWMILL_LOOP; + BankStartOffset[SFX_BANK_BUILDING_DOG_FOOD_FACTORY] = SFX_DOG_FOOD_FACTORY; + BankStartOffset[SFX_BANK_BUILDING_LAUNDERETTE] = SFX_LAUNDERETTE_LOOP; + BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_CHINATOWN] = SFX_RESTAURANT_CHINATOWN; + BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_ITALY] = SFX_RESTAURANT_ITALY; + BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_1] = SFX_RESTAURANT_GENERIC_1; + BankStartOffset[SFX_BANK_BUILDING_RESTAURANT_GENERIC_2] = SFX_RESTAURANT_GENERIC_2; + BankStartOffset[SFX_BANK_BUILDING_AIRPORT] = SFX_AIRPORT_ANNOUNCEMENT_1; + BankStartOffset[SFX_BANK_BUILDING_SHOP] = SFX_SHOP_LOOP; + BankStartOffset[SFX_BANK_BUILDING_CINEMA] = SFX_CINEMA_BASS_1; + BankStartOffset[SFX_BANK_BUILDING_DOCKS] = SFX_DOCKS_FOGHORN; + BankStartOffset[SFX_BANK_BUILDING_HOME] = SFX_HOME_1; + BankStartOffset[SFX_BANK_BUILDING_PORN_1] = SFX_PORN_1_LOOP; + BankStartOffset[SFX_BANK_BUILDING_PORN_2] = SFX_PORN_2_LOOP; + BankStartOffset[SFX_BANK_BUILDING_PORN_3] = SFX_PORN_3_LOOP; + BankStartOffset[SFX_BANK_BUILDING_POLICE_BALL] = SFX_POLICE_BALL_1; + BankStartOffset[SFX_BANK_BUILDING_BANK_ALARM] = SFX_BANK_ALARM_1; + BankStartOffset[SFX_BANK_BUILDING_RAVE_INDUSTRIAL] = SFX_RAVE_INDUSTRIAL; + BankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL] = SFX_RAVE_COMMERCIAL; + BankStartOffset[SFX_BANK_BUILDING_RAVE_SUBURBAN] = SFX_RAVE_SUBURBAN; + BankStartOffset[SFX_BANK_BUILDING_RAVE_COMMERCIAL_2] = SFX_RAVE_COMMERCIAL_2; + BankStartOffset[SFX_BANK_BUILDING_39] = SFX_CLUB_1_1; + BankStartOffset[SFX_BANK_BUILDING_40] = SFX_CLUB_1_2; + BankStartOffset[SFX_BANK_BUILDING_41] = SFX_CLUB_1_3; + BankStartOffset[SFX_BANK_BUILDING_42] = SFX_CLUB_1_4; + BankStartOffset[SFX_BANK_BUILDING_43] = SFX_CLUB_1_5; + BankStartOffset[SFX_BANK_BUILDING_44] = SFX_CLUB_1_6; + BankStartOffset[SFX_BANK_BUILDING_45] = SFX_CLUB_1_7; + BankStartOffset[SFX_BANK_BUILDING_46] = SFX_CLUB_1_8; + BankStartOffset[SFX_BANK_BUILDING_47] = SFX_CLUB_1_9; + BankStartOffset[SFX_BANK_GENERIC_EXTRA] = SFX_EXPLOSION_1; #endif // GTA_PS2 - gBankStartOffset[SFX_BANK_PED_COMMENTS] = SAMPLEBANK_PED_START; + BankStartOffset[SFX_BANK_PED_COMMENTS] = SAMPLEBANK_PED_START; } void diff --git a/src/audio/oal/channel.cpp b/src/audio/oal/channel.cpp index 2ae12fcf..04e7e529 100644 --- a/src/audio/oal/channel.cpp +++ b/src/audio/oal/channel.cpp @@ -17,7 +17,7 @@ bool bChannelsCreated = false; int32 CChannel::channelsThatNeedService = 0; -uint8 tempStereoBuffer[PED_BUFFERSIZE * 2]; +uint8 tempStereoBuffer[PED_BLOCKSIZE * 2]; void CChannel::InitChannels() diff --git a/src/audio/sampman.h b/src/audio/sampman.h index 08e5dde0..d1ad9a26 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -96,7 +96,7 @@ enum }; #define MAX_PEDSFX 7 -#define PED_BUFFERSIZE 79000 +#define PED_BLOCKSIZE 79000 #define MAXPROVIDERS 64 @@ -130,7 +130,7 @@ class cSampleManager bool8 m_bInitialised; uint8 m_nNumberOfProviders; char *m_aAudioProviders[MAXPROVIDERS]; - tSample m_aSampleDataTable[TOTAL_AUDIO_SAMPLES]; + tSample m_aSamples[TOTAL_AUDIO_SAMPLES]; public: @@ -217,7 +217,7 @@ public: }; extern cSampleManager SampleManager; -extern uint32 gBankStartOffset[MAX_SFX_BANKS]; +extern uint32 BankStartOffset[MAX_SFX_BANKS]; #ifdef AUDIO_OAL extern int defaultProvider; diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 3149b306..ddfaaa5f 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -20,27 +20,27 @@ #pragma comment( lib, "mss32.lib" ) cSampleManager SampleManager; -uint32 gBankStartOffset[MAX_SFX_BANKS]; +uint32 BankStartOffset[MAX_SFX_BANKS]; /////////////////////////////////////////////////////////////// char SampleBankDescFilename[] = "AUDIO\\SFX.SDT"; char SampleBankDataFilename[] = "AUDIO\\SFX.RAW"; -FILE *gFileHandleSampleDesc; -FILE *gFileHandleSampleData; -bool8 gBankLoaded [MAX_SFX_BANKS]; -int32 gSampleBankDiscStartOffset [MAX_SFX_BANKS]; -int32 gSampleBankSize [MAX_SFX_BANKS]; -int32 gSampleBankMemoryStartAddress[MAX_SFX_BANKS]; +FILE *fpSampleDescHandle; +FILE *fpSampleDataHandle; +bool8 bSampleBankLoaded [MAX_SFX_BANKS]; +int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; +int32 nSampleBankSize [MAX_SFX_BANKS]; +int32 nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; int32 _nSampleDataEndOffset; -int32 gPedSfx [MAX_PEDSFX]; -int32 gPedSfxAddr[MAX_PEDSFX]; -uint8 gCurPedIndex; +int32 nPedSlotSfx [MAX_PEDSFX]; +int32 nPedSlotSfxAddr[MAX_PEDSFX]; +uint8 nCurrentPedSlot; -uint8 gChannelVolume[MAXCHANNELS+MAX2DCHANNELS]; +uint8 nChannelVolume[MAXCHANNELS+MAX2DCHANNELS]; -uint32 gStreamLength[TOTAL_STREAMED_SOUNDS]; +uint32 nStreamLength[TOTAL_STREAMED_SOUNDS]; /////////////////////////////////////////////////////////////// struct tMP3Entry @@ -851,11 +851,11 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { - m_aSampleDataTable[i].nOffset = 0; - m_aSampleDataTable[i].nSize = 0; - m_aSampleDataTable[i].nFrequency = 22050; - m_aSampleDataTable[i].nLoopStart = 0; - m_aSampleDataTable[i].nLoopEnd = -1; + m_aSamples[i].nOffset = 0; + m_aSamples[i].nSize = 0; + m_aSamples[i].nFrequency = 22050; + m_aSamples[i].nLoopStart = 0; + m_aSamples[i].nLoopEnd = -1; } m_nEffectsVolume = MAX_VOLUME; @@ -890,17 +890,17 @@ cSampleManager::Initialise(void) // banks TRACE("banks"); { - gFileHandleSampleDesc = NULL; - gFileHandleSampleData = NULL; + fpSampleDescHandle = NULL; + fpSampleDataHandle = NULL; _nSampleDataEndOffset = 0; for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - gBankLoaded[i] = FALSE; - gSampleBankDiscStartOffset[i] = 0; - gSampleBankSize[i] = 0; - gSampleBankMemoryStartAddress[i] = 0; + bSampleBankLoaded[i] = FALSE; + nSampleBankDiscStartOffset[i] = 0; + nSampleBankSize[i] = 0; + nSampleBankMemoryStartAddress[i] = 0; } } @@ -909,18 +909,18 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < MAX_PEDSFX; i++ ) { - gPedSfx[i] = NO_SAMPLE; - gPedSfxAddr[i] = 0; + nPedSlotSfx[i] = NO_SAMPLE; + nPedSlotSfxAddr[i] = 0; } - gCurPedIndex = 0; + nCurrentPedSlot = 0; } // channel volume TRACE("vol"); { for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ ) - gChannelVolume[i] = 0; + nChannelVolume[i] = 0; } TRACE("mss"); @@ -947,14 +947,14 @@ cSampleManager::Initialise(void) return FALSE; } - gSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(gSampleBankSize[SFX_BANK_0]); - if ( !gSampleBankMemoryStartAddress[SFX_BANK_0] ) + nSampleBankMemoryStartAddress[SFX_BANK_0] = (int32)AIL_mem_alloc_lock(nSampleBankSize[SFX_BANK_0]); + if ( !nSampleBankMemoryStartAddress[SFX_BANK_0] ) { Terminate(); return FALSE; } - gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BUFFERSIZE*MAX_PEDSFX); + nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (int32)AIL_mem_alloc_lock(PED_BLOCKSIZE*MAX_PEDSFX); } @@ -962,7 +962,7 @@ cSampleManager::Initialise(void) TRACE("cache"); FILE *cacheFile = fopen("audio\\sound.cache", "rb"); if (cacheFile) { - fread(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); m_bInitialised = TRUE; }else { @@ -1016,7 +1016,7 @@ cSampleManager::Initialise(void) AIL_close_stream(mp3Stream[0]); mp3Stream[0] = NULL; - gStreamLength[i] = tatalms; + nStreamLength[i] = tatalms; } else { @@ -1115,7 +1115,7 @@ cSampleManager::Initialise(void) strcpy(m_szCDRomRootPath, rootpath); for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) - gStreamLength[i] = streamLength[i]; + nStreamLength[i] = streamLength[i]; _bUseHDDAudio = TRUE; } @@ -1125,7 +1125,7 @@ cSampleManager::Initialise(void) #endif #ifdef AUDIO_CACHE cacheFile = fopen("audio\\sound.cache", "wb"); - fwrite(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fwrite(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); } #endif @@ -1188,12 +1188,12 @@ cSampleManager::Initialise(void) if ( nNumMP3s != 0 ) { - gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; + nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; for ( tMP3Entry *e = _pMP3List; e != NULL; e = e->pNext ) { - e->nTrackStreamPos = gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; - gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; + e->nTrackStreamPos = nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; + nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; } time_t t = time(NULL); @@ -1270,16 +1270,16 @@ cSampleManager::Terminate(void) _DeleteMP3Entries(); - if ( gSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) + if ( nSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) { - AIL_mem_free_lock((void *)gSampleBankMemoryStartAddress[SFX_BANK_0]); - gSampleBankMemoryStartAddress[SFX_BANK_0] = 0; + AIL_mem_free_lock((void *)nSampleBankMemoryStartAddress[SFX_BANK_0]); + nSampleBankMemoryStartAddress[SFX_BANK_0] = 0; } - if ( gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) + if ( nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) { - AIL_mem_free_lock((void *)gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); - gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; + AIL_mem_free_lock((void *)nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); + nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; } if ( DIG ) @@ -1363,10 +1363,10 @@ cSampleManager::UpdateEffectsVolume(void) //[Y], cSampleManager::UpdateSoundBuff { if ( opened_samples[i] && GetChannelUsedFlag(i) ) { - if ( gChannelVolume[i] ) + if ( nChannelVolume[i] ) { AIL_set_3D_sample_volume(opened_samples[i], - m_nEffectsFadeVolume * gChannelVolume[i] * m_nEffectsVolume >> 14); + m_nEffectsFadeVolume * nChannelVolume[i] * m_nEffectsVolume >> 14); } } } @@ -1376,10 +1376,10 @@ cSampleManager::UpdateEffectsVolume(void) //[Y], cSampleManager::UpdateSoundBuff { if ( GetChannelUsedFlag(i - MAXCHANNELS) ) { - if ( gChannelVolume[i - MAXCHANNELS] ) + if ( nChannelVolume[i - MAXCHANNELS] ) { AIL_set_sample_volume(opened_2dsamples[i - MAXCHANNELS], - m_nEffectsFadeVolume * gChannelVolume[i - MAXCHANNELS] * m_nEffectsVolume >> 14); + m_nEffectsFadeVolume * nChannelVolume[i - MAXCHANNELS] * m_nEffectsVolume >> 14); } } } @@ -1433,13 +1433,13 @@ cSampleManager::LoadSampleBank(uint8 nBank) return FALSE; } - if ( fseek(gFileHandleSampleData, gSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) + if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)gSampleBankMemoryStartAddress[nBank], 1, gSampleBankSize[nBank],gFileHandleSampleData) != gSampleBankSize[nBank] ) + if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank],fpSampleDataHandle) != nSampleBankSize[nBank] ) return FALSE; - gBankLoaded[nBank] = TRUE; + bSampleBankLoaded[nBank] = TRUE; return TRUE; } @@ -1447,13 +1447,13 @@ cSampleManager::LoadSampleBank(uint8 nBank) void cSampleManager::UnloadSampleBank(uint8 nBank) { - gBankLoaded[nBank] = FALSE; + bSampleBankLoaded[nBank] = FALSE; } bool8 cSampleManager::IsSampleBankLoaded(uint8 nBank) { - return gBankLoaded[nBank]; + return bSampleBankLoaded[nBank]; } bool8 @@ -1463,12 +1463,12 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = gCurPedIndex - i - 1; + slot = nCurrentPedSlot - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(gPedSfx); + slot += ARRAY_SIZE(nPedSlotSfx); #endif - if ( nComment == gPedSfx[slot] ) + if ( nComment == nPedSlotSfx[slot] ) return TRUE; } @@ -1482,12 +1482,12 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = gCurPedIndex - i - 1; + slot = nCurrentPedSlot - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(gPedSfx); + slot += ARRAY_SIZE(nPedSlotSfx); #endif - if ( nComment == gPedSfx[slot] ) + if ( nComment == nPedSlotSfx[slot] ) return slot; } @@ -1522,17 +1522,17 @@ cSampleManager::LoadPedComment(uint32 nComment) } } - if ( fseek(gFileHandleSampleData, m_aSampleDataTable[nComment].nOffset, SEEK_SET) != 0 ) + if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE*gCurPedIndex), 1, m_aSampleDataTable[nComment].nSize, gFileHandleSampleData) != m_aSampleDataTable[nComment].nSize ) + if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) return FALSE; - gPedSfxAddr[gCurPedIndex] = gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE*gCurPedIndex; - gPedSfx [gCurPedIndex] = nComment; + nPedSlotSfxAddr[nCurrentPedSlot] = nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot; + nPedSlotSfx [nCurrentPedSlot] = nComment; - if ( ++gCurPedIndex >= MAX_PEDSFX ) - gCurPedIndex = 0; + if ( ++nCurrentPedSlot >= MAX_PEDSFX ) + nCurrentPedSlot = 0; return TRUE; } @@ -1540,10 +1540,10 @@ cSampleManager::LoadPedComment(uint32 nComment) int32 cSampleManager::GetBankContainingSound(uint32 offset) { - if ( offset >= gBankStartOffset[SFX_BANK_PED_COMMENTS] ) + if ( offset >= BankStartOffset[SFX_BANK_PED_COMMENTS] ) return SFX_BANK_PED_COMMENTS; - if ( offset >= gBankStartOffset[SFX_BANK_0] ) + if ( offset >= BankStartOffset[SFX_BANK_0] ) return SFX_BANK_0; return INVALID_SFX_BANK; @@ -1552,25 +1552,25 @@ cSampleManager::GetBankContainingSound(uint32 offset) int32 cSampleManager::GetSampleBaseFrequency(uint32 nSample) { - return m_aSampleDataTable[nSample].nFrequency; + return m_aSamples[nSample].nFrequency; } int32 cSampleManager::GetSampleLoopStartOffset(uint32 nSample) { - return m_aSampleDataTable[nSample].nLoopStart; + return m_aSamples[nSample].nLoopStart; } int32 cSampleManager::GetSampleLoopEndOffset(uint32 nSample) { - return m_aSampleDataTable[nSample].nLoopEnd; + return m_aSamples[nSample].nLoopEnd; } uint32 cSampleManager::GetSampleLength(uint32 nSample) { - return m_aSampleDataTable[nSample].nSize >> 1; + return m_aSamples[nSample].nSize >> 1; } bool8 @@ -1700,7 +1700,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( !IsSampleBankLoaded(nBank) ) return FALSE; - addr = gSampleBankMemoryStartAddress[nBank] + m_aSampleDataTable[nSfx].nOffset - m_aSampleDataTable[gBankStartOffset[nBank]].nOffset; + addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; } else { @@ -1709,14 +1709,14 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) int32 slot = _GetPedCommentSlot(nSfx); - addr = gPedSfxAddr[slot]; + addr = nPedSlotSfxAddr[slot]; } if ( b2d ) { if ( opened_2dsamples[nChannel - MAXCHANNELS] ) { - AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSampleDataTable[nSfx].nSize); + AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSamples[nSfx].nSize); return TRUE; } else @@ -1729,8 +1729,8 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) info.format = WAVE_FORMAT_PCM; info.data_ptr = (void *)addr; info.channels = 1; - info.data_len = m_aSampleDataTable[nSfx].nSize; - info.rate = m_aSampleDataTable[nSfx].nFrequency; + info.data_len = m_aSamples[nSfx].nSize; + info.rate = m_aSamples[nSfx].nFrequency; info.bits = 16; if ( AIL_set_3D_sample_info(opened_samples[nChannel], &info) == 0 ) @@ -1749,18 +1749,18 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - gChannelVolume[nChannel] = vol; + nChannelVolume[nChannel] = vol; // increase the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - gChannelVolume[nChannel] >>= 2; + nChannelVolume[nChannel] >>= 2; } if ( opened_samples[nChannel] ) - AIL_set_3D_sample_volume(opened_samples[nChannel], m_nEffectsFadeVolume*gChannelVolume[nChannel]*m_nEffectsVolume >> 14); + AIL_set_3D_sample_volume(opened_samples[nChannel], m_nEffectsFadeVolume*nChannelVolume[nChannel]*m_nEffectsVolume >> 14); } @@ -1788,14 +1788,14 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) { case CHANNEL_POLICE_RADIO: { - gChannelVolume[nChannel] = vol; + nChannelVolume[nChannel] = vol; // increase the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - gChannelVolume[nChannel] >>= 2; + nChannelVolume[nChannel] >>= 2; } if ( opened_2dsamples[nChannel - MAXCHANNELS] ) @@ -2065,7 +2065,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Just switched to MP3 player if ( !_bIsMp3Active && i == 0 ) { - if ( nPos > gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) position = 0; tMP3Entry *e = _pMP3List; @@ -2253,7 +2253,7 @@ int32 cSampleManager::GetStreamedFileLength(uint8 nStream) { if ( m_bInitialised ) - return gStreamLength[nStream]; + return nStreamLength[nStream]; return 0; } @@ -2280,42 +2280,42 @@ cSampleManager::InitialiseSampleBanks(void) { int32 nBank = SFX_BANK_0; - gFileHandleSampleDesc = fopen(SampleBankDescFilename, "rb"); - if ( gFileHandleSampleDesc == NULL ) + fpSampleDescHandle = fopen(SampleBankDescFilename, "rb"); + if ( fpSampleDescHandle == NULL ) return FALSE; - gFileHandleSampleData = fopen(SampleBankDataFilename, "rb"); - if ( gFileHandleSampleData == NULL ) + fpSampleDataHandle = fopen(SampleBankDataFilename, "rb"); + if ( fpSampleDataHandle == NULL ) { - fclose(gFileHandleSampleDesc); - gFileHandleSampleDesc = NULL; + fclose(fpSampleDescHandle); + fpSampleDescHandle = NULL; return FALSE; } - fseek(gFileHandleSampleData, 0, SEEK_END); - _nSampleDataEndOffset = ftell(gFileHandleSampleData); - rewind(gFileHandleSampleData); + fseek(fpSampleDataHandle, 0, SEEK_END); + _nSampleDataEndOffset = ftell(fpSampleDataHandle); + rewind(fpSampleDataHandle); - fread(m_aSampleDataTable, sizeof(tSample), TOTAL_AUDIO_SAMPLES, gFileHandleSampleDesc); + fread(m_aSamples, sizeof(tSample), TOTAL_AUDIO_SAMPLES, fpSampleDescHandle); - fclose(gFileHandleSampleDesc); - gFileHandleSampleDesc = NULL; + fclose(fpSampleDescHandle); + fpSampleDescHandle = NULL; for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { #ifdef FIX_BUGS if (nBank >= MAX_SFX_BANKS) break; #endif - if ( gBankStartOffset[nBank] == gBankStartOffset[SFX_BANK_0] + i ) + if ( BankStartOffset[nBank] == BankStartOffset[SFX_BANK_0] + i ) { - gSampleBankDiscStartOffset[nBank] = m_aSampleDataTable[i].nOffset; + nSampleBankDiscStartOffset[nBank] = m_aSamples[i].nOffset; nBank++; } } - gSampleBankSize[SFX_BANK_0] = gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - gSampleBankDiscStartOffset[SFX_BANK_0]; - gSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; + nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; + nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; return TRUE; } diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp index 8478d534..95603c72 100644 --- a/src/audio/sampman_null.cpp +++ b/src/audio/sampman_null.cpp @@ -6,7 +6,7 @@ cSampleManager SampleManager; bool8 _bSampmanInitialised = FALSE; -uint32 gBankStartOffset[MAX_SFX_BANKS]; +uint32 BankStartOffset[MAX_SFX_BANKS]; uint32 nNumMP3s; cSampleManager::cSampleManager(void) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 90f098ed..f2771885 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -47,9 +47,9 @@ //TODO: fix eax3 reverb cSampleManager SampleManager; -bool8 gInitialised = FALSE; +bool8 _bSampmanInitialised = FALSE; -uint32 gBankStartOffset[MAX_SFX_BANKS]; +uint32 BankStartOffset[MAX_SFX_BANKS]; int prevprovider=-1; int curprovider=-1; @@ -79,26 +79,26 @@ int defaultProvider; char SampleBankDescFilename[] = "audio/sfx.SDT"; char SampleBankDataFilename[] = "audio/sfx.RAW"; -FILE *gFileHandleSampleDesc; +FILE *fpSampleDescHandle; #ifdef OPUS_SFX -OggOpusFile *gFileHandleSampleData; +OggOpusFile *fpSampleDataHandle; #else -FILE *gFileHandleSampleData; +FILE *fpSampleDataHandle; #endif -bool8 gBankLoaded [MAX_SFX_BANKS]; -int32 gSampleBankDiscStartOffset [MAX_SFX_BANKS]; -int32 gSampleBankSize [MAX_SFX_BANKS]; -uintptr gSampleBankMemoryStartAddress[MAX_SFX_BANKS]; +bool8 bSampleBankLoaded [MAX_SFX_BANKS]; +int32 nSampleBankDiscStartOffset [MAX_SFX_BANKS]; +int32 nSampleBankSize [MAX_SFX_BANKS]; +uintptr nSampleBankMemoryStartAddress[MAX_SFX_BANKS]; int32 _nSampleDataEndOffset; -int32 gPedSfx [MAX_PEDSFX]; -int32 gPedSfxAddr[MAX_PEDSFX]; -uint8 gCurPedIndex; +int32 nPedSlotSfx [MAX_PEDSFX]; +int32 nPedSlotSfxAddr[MAX_PEDSFX]; +uint8 nCurrentPedSlot; CChannel aChannel[NUM_CHANNELS]; -uint8 gChannelVolume[NUM_CHANNELS]; +uint8 nChannelVolume[NUM_CHANNELS]; -uint32 gStreamLength[TOTAL_STREAMED_SOUNDS]; +uint32 nStreamLength[TOTAL_STREAMED_SOUNDS]; ALuint ALStreamSources[MAX_STREAMS][2]; ALuint ALStreamBuffers[MAX_STREAMS][NUM_STREAMBUFFERS]; @@ -779,7 +779,7 @@ void cSampleManager::ReacquireDigitalHandle(void) bool8 cSampleManager::Initialise(void) { - if ( gInitialised ) + if ( _bSampmanInitialised ) return TRUE; EFXInit(); @@ -788,11 +788,11 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { - m_aSampleDataTable[i].nOffset = 0; - m_aSampleDataTable[i].nSize = 0; - m_aSampleDataTable[i].nFrequency = 22050; - m_aSampleDataTable[i].nLoopStart = 0; - m_aSampleDataTable[i].nLoopEnd = -1; + m_aSamples[i].nOffset = 0; + m_aSamples[i].nSize = 0; + m_aSamples[i].nFrequency = 22050; + m_aSamples[i].nLoopStart = 0; + m_aSamples[i].nLoopEnd = -1; } m_nEffectsVolume = MAX_VOLUME; @@ -820,31 +820,31 @@ cSampleManager::Initialise(void) } { - gFileHandleSampleDesc = NULL; - gFileHandleSampleData = NULL; + fpSampleDescHandle = NULL; + fpSampleDataHandle = NULL; for ( int32 i = 0; i < MAX_SFX_BANKS; i++ ) { - gBankLoaded[i] = FALSE; - gSampleBankDiscStartOffset[i] = 0; - gSampleBankSize[i] = 0; - gSampleBankMemoryStartAddress[i] = 0; + bSampleBankLoaded[i] = FALSE; + nSampleBankDiscStartOffset[i] = 0; + nSampleBankSize[i] = 0; + nSampleBankMemoryStartAddress[i] = 0; } } { for ( int32 i = 0; i < MAX_PEDSFX; i++ ) { - gPedSfx[i] = NO_SAMPLE; - gPedSfxAddr[i] = 0; + nPedSlotSfx[i] = NO_SAMPLE; + nPedSlotSfxAddr[i] = 0; } - gCurPedIndex = 0; + nCurrentPedSlot = 0; } { for ( int32 i = 0; i < NUM_CHANNELS; i++ ) - gChannelVolume[i] = 0; + nChannelVolume[i] = 0; } add_providers(); @@ -922,14 +922,14 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) - gStreamLength[i] = 0; + nStreamLength[i] = 0; } #ifdef AUDIO_CACHE FILE *cacheFile = fcaseopen("audio\\sound.cache", "rb"); if (cacheFile) { debug("Loadind audio cache (If game crashes around here, then your cache is corrupted, remove audio/sound.cache)\n"); - fread(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fread(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); } else { @@ -944,7 +944,7 @@ cSampleManager::Initialise(void) delete aStream[0]; aStream[0] = NULL; - gStreamLength[i] = tatalms; + nStreamLength[i] = tatalms; } else USERERROR("Can't open '%s'\n", StreamedNameTable[i]); } @@ -952,7 +952,7 @@ cSampleManager::Initialise(void) cacheFile = fcaseopen("audio\\sound.cache", "wb"); if(cacheFile) { debug("Saving audio cache\n"); - fwrite(gStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); + fwrite(nStreamLength, sizeof(uint32), TOTAL_STREAMED_SOUNDS, cacheFile); fclose(cacheFile); } else { debug("Cannot save audio cache\n"); @@ -967,17 +967,17 @@ cSampleManager::Initialise(void) return FALSE; } - gSampleBankMemoryStartAddress[SFX_BANK_0] = (uintptr)malloc(gSampleBankSize[SFX_BANK_0]); - ASSERT(gSampleBankMemoryStartAddress[SFX_BANK_0] != 0); + nSampleBankMemoryStartAddress[SFX_BANK_0] = (uintptr)malloc(nSampleBankSize[SFX_BANK_0]); + ASSERT(nSampleBankMemoryStartAddress[SFX_BANK_0] != 0); - if ( gSampleBankMemoryStartAddress[SFX_BANK_0] == 0 ) + if ( nSampleBankMemoryStartAddress[SFX_BANK_0] == 0 ) { Terminate(); return FALSE; } - gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BUFFERSIZE*MAX_PEDSFX); - ASSERT(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0); + nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = (uintptr)malloc(PED_BLOCKSIZE*MAX_PEDSFX); + ASSERT(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0); LoadSampleBank(SFX_BANK_0); } @@ -992,7 +992,7 @@ cSampleManager::Initialise(void) } { - gInitialised = TRUE; + _bSampmanInitialised = TRUE; if ( defaultProvider >= 0 && defaultProvider < m_nNumberOfProviders ) { @@ -1014,12 +1014,12 @@ cSampleManager::Initialise(void) if ( nNumMP3s != 0 ) { - gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; + nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] = 0; for ( tMP3Entry *e = _pMP3List; e != NULL; e = e->pNext ) { - e->nTrackStreamPos = gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; - gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; + e->nTrackStreamPos = nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER]; + nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] += e->nTrackLength; } time_t t = time(NULL); @@ -1130,19 +1130,19 @@ cSampleManager::Terminate(void) CStream::Terminate(); - if ( gSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) + if ( nSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) { - free((void *)gSampleBankMemoryStartAddress[SFX_BANK_0]); - gSampleBankMemoryStartAddress[SFX_BANK_0] = 0; + free((void *)nSampleBankMemoryStartAddress[SFX_BANK_0]); + nSampleBankMemoryStartAddress[SFX_BANK_0] = 0; } - if ( gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) + if ( nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] != 0 ) { - free((void *)gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); - gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; + free((void *)nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS]); + nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] = 0; } - gInitialised = FALSE; + _bSampmanInitialised = FALSE; } bool8 cSampleManager::CheckForAnAudioFileOnCD(void) @@ -1158,14 +1158,14 @@ char cSampleManager::GetCDAudioDriveLetter(void) void cSampleManager::UpdateEffectsVolume(void) { - if ( gInitialised ) + if ( _bSampmanInitialised ) { for ( int32 i = 0; i < NUM_CHANNELS; i++ ) { if ( GetChannelUsedFlag(i) ) { - if ( gChannelVolume[i] != 0 ) - aChannel[i].SetVolume(m_nEffectsFadeVolume*gChannelVolume[i]*m_nEffectsVolume >> 14); + if ( nChannelVolume[i] != 0 ) + aChannel[i].SetVolume(m_nEffectsFadeVolume*nChannelVolume[i]*m_nEffectsVolume >> 14); } } } @@ -1220,10 +1220,10 @@ cSampleManager::LoadSampleBank(uint8 nBank) #ifdef OPUS_SFX int samplesRead = 0; - int samplesSize = gSampleBankSize[nBank] / 2; - op_pcm_seek(gFileHandleSampleData, 0); + int samplesSize = nSampleBankSize[nBank] / 2; + op_pcm_seek(fpSampleDataHandle, 0); while (samplesSize > 0) { - int size = op_read(gFileHandleSampleData, (opus_int16 *)(gSampleBankMemoryStartAddress[nBank] + samplesRead), samplesSize, NULL); + int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[nBank] + samplesRead), samplesSize, NULL); if (size <= 0) { // huh? //assert(0); @@ -1233,13 +1233,13 @@ cSampleManager::LoadSampleBank(uint8 nBank) samplesSize -= size; } #else - if ( fseek(gFileHandleSampleData, gSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) + if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)gSampleBankMemoryStartAddress[nBank], 1, gSampleBankSize[nBank], gFileHandleSampleData) != gSampleBankSize[nBank] ) + if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank], fpSampleDataHandle) != nSampleBankSize[nBank] ) return FALSE; #endif - gBankLoaded[nBank] = TRUE; + bSampleBankLoaded[nBank] = TRUE; return TRUE; } @@ -1249,7 +1249,7 @@ cSampleManager::UnloadSampleBank(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); - gBankLoaded[nBank] = FALSE; + bSampleBankLoaded[nBank] = FALSE; } bool8 @@ -1257,7 +1257,7 @@ cSampleManager::IsSampleBankLoaded(uint8 nBank) { ASSERT( nBank < MAX_SFX_BANKS); - return gBankLoaded[nBank]; + return bSampleBankLoaded[nBank]; } bool8 @@ -1269,12 +1269,12 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = gCurPedIndex - i - 1; + slot = nCurrentPedSlot - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(gPedSfx); + slot += ARRAY_SIZE(nPedSlotSfx); #endif - if ( nComment == gPedSfx[slot] ) + if ( nComment == nPedSlotSfx[slot] ) return TRUE; } @@ -1289,12 +1289,12 @@ cSampleManager::_GetPedCommentSlot(uint32 nComment) for (int32 i = 0; i < _TODOCONST(3); i++) { - slot = gCurPedIndex - i - 1; + slot = nCurrentPedSlot - i - 1; #ifdef FIX_BUGS if (slot < 0) - slot += ARRAY_SIZE(gPedSfx); + slot += ARRAY_SIZE(nPedSlotSfx); #endif - if (nComment == gPedSfx[slot]) + if (nComment == nPedSlotSfx[slot]) return slot; } @@ -1333,10 +1333,10 @@ cSampleManager::LoadPedComment(uint32 nComment) #ifdef OPUS_SFX int samplesRead = 0; - int samplesSize = m_aSampleDataTable[nComment].nSize / 2; - op_pcm_seek(gFileHandleSampleData, m_aSampleDataTable[nComment].nOffset / 2); + int samplesSize = m_aSamples[nComment].nSize / 2; + op_pcm_seek(fpSampleDataHandle, m_aSamples[nComment].nOffset / 2); while (samplesSize > 0) { - int size = op_read(gFileHandleSampleData, (opus_int16 *)(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE * gCurPedIndex + samplesRead), + int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * nCurrentPedSlot + samplesRead), samplesSize, NULL); if (size <= 0) { return FALSE; @@ -1345,17 +1345,17 @@ cSampleManager::LoadPedComment(uint32 nComment) samplesSize -= size; } #else - if ( fseek(gFileHandleSampleData, m_aSampleDataTable[nComment].nOffset, SEEK_SET) != 0 ) + if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) return FALSE; - if ( fread((void *)(gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE*gCurPedIndex), 1, m_aSampleDataTable[nComment].nSize, gFileHandleSampleData) != m_aSampleDataTable[nComment].nSize ) + if ( fread((void *)(nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) return FALSE; #endif - gPedSfx[gCurPedIndex] = nComment; + nPedSlotSfx[nCurrentPedSlot] = nComment; - if ( ++gCurPedIndex >= MAX_PEDSFX ) - gCurPedIndex = 0; + if ( ++nCurrentPedSlot >= MAX_PEDSFX ) + nCurrentPedSlot = 0; return TRUE; } @@ -1363,10 +1363,10 @@ cSampleManager::LoadPedComment(uint32 nComment) int32 cSampleManager::GetBankContainingSound(uint32 offset) { - if ( offset >= gBankStartOffset[SFX_BANK_PED_COMMENTS] ) + if ( offset >= BankStartOffset[SFX_BANK_PED_COMMENTS] ) return SFX_BANK_PED_COMMENTS; - if ( offset >= gBankStartOffset[SFX_BANK_0] ) + if ( offset >= BankStartOffset[SFX_BANK_0] ) return SFX_BANK_0; return INVALID_SFX_BANK; @@ -1376,28 +1376,28 @@ int32 cSampleManager::GetSampleBaseFrequency(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSampleDataTable[nSample].nFrequency; + return m_aSamples[nSample].nFrequency; } int32 cSampleManager::GetSampleLoopStartOffset(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSampleDataTable[nSample].nLoopStart; + return m_aSamples[nSample].nLoopStart; } int32 cSampleManager::GetSampleLoopEndOffset(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSampleDataTable[nSample].nLoopEnd; + return m_aSamples[nSample].nLoopEnd; } uint32 cSampleManager::GetSampleLength(uint32 nSample) { ASSERT( nSample < TOTAL_AUDIO_SAMPLES ); - return m_aSampleDataTable[nSample].nSize / sizeof(uint16); + return m_aSamples[nSample].nSize / sizeof(uint16); } bool8 cSampleManager::UpdateReverb(void) @@ -1496,7 +1496,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) if ( !IsSampleBankLoaded(nBank) ) return FALSE; - addr = gSampleBankMemoryStartAddress[nBank] + m_aSampleDataTable[nSfx].nOffset - m_aSampleDataTable[gBankStartOffset[nBank]].nOffset; + addr = nSampleBankMemoryStartAddress[nBank] + m_aSamples[nSfx].nOffset - m_aSamples[BankStartOffset[nBank]].nOffset; } else { @@ -1504,7 +1504,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) return FALSE; int32 slot = _GetPedCommentSlot(nSfx); - addr = (gSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BUFFERSIZE * slot); + addr = (nSampleBankMemoryStartAddress[SFX_BANK_PED_COMMENTS] + PED_BLOCKSIZE * slot); } if ( GetChannelUsedFlag(nChannel) ) @@ -1516,7 +1516,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) aChannel[nChannel].Reset(); if ( aChannel[nChannel].HasSource() ) { - aChannel[nChannel].SetSampleData ((void*)addr, m_aSampleDataTable[nSfx].nSize, m_aSampleDataTable[nSfx].nFrequency); + aChannel[nChannel].SetSampleData ((void*)addr, m_aSamples[nSfx].nSize, m_aSamples[nSfx].nFrequency); aChannel[nChannel].SetLoopPoints (0, -1); aChannel[nChannel].SetPitch (1.0f); return TRUE; @@ -1533,18 +1533,18 @@ cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - gChannelVolume[nChannel] = vol; + nChannelVolume[nChannel] = vol; // reduce channel volume when JB.MP3 or S4_BDBD.MP3 playing if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - gChannelVolume[nChannel] = vol / 4; + nChannelVolume[nChannel] = vol / 4; } // no idea, does this one looks like a bug or it's SetChannelVolume ? - aChannel[nChannel].SetVolume(m_nEffectsFadeVolume*gChannelVolume[nChannel]*m_nEffectsVolume >> 14); + aChannel[nChannel].SetVolume(m_nEffectsFadeVolume*nChannelVolume[nChannel]*m_nEffectsVolume >> 14); } void @@ -1573,14 +1573,14 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - gChannelVolume[nChannel] = vol; + nChannelVolume[nChannel] = vol; // reduce the volume for JB.MP3 and S4_BDBD.MP3 if ( MusicManager.GetMusicMode() == MUSICMODE_CUTSCENE && MusicManager.GetNextTrack() != STREAMED_SOUND_NEWS_INTRO && MusicManager.GetNextTrack() != STREAMED_SOUND_CUTSCENE_SAL4_BDBD ) { - gChannelVolume[nChannel] = vol / 4; + nChannelVolume[nChannel] = vol / 4; } aChannel[nChannel].SetVolume(m_nEffectsFadeVolume*vol*m_nEffectsVolume >> 14); @@ -1727,7 +1727,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Switched to MP3 player just now if ( !_bIsMp3Active && i == 0 ) { - if ( nPos > gStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) + if ( nPos > nStreamLength[STREAMED_SOUND_RADIO_MP3_PLAYER] ) position = 0; tMP3Entry *e = _pMP3List; @@ -1935,7 +1935,7 @@ cSampleManager::GetStreamedFileLength(uint8 nStream) { ASSERT( nStream < TOTAL_STREAMED_SOUNDS ); - return gStreamLength[nStream]; + return nStreamLength[nStream]; } bool8 @@ -1977,47 +1977,47 @@ cSampleManager::InitialiseSampleBanks(void) { int32 nBank = SFX_BANK_0; - gFileHandleSampleDesc = fcaseopen(SampleBankDescFilename, "rb"); - if ( gFileHandleSampleDesc == NULL ) + fpSampleDescHandle = fcaseopen(SampleBankDescFilename, "rb"); + if ( fpSampleDescHandle == NULL ) return FALSE; #ifndef OPUS_SFX - gFileHandleSampleData = fcaseopen(SampleBankDataFilename, "rb"); - if ( gFileHandleSampleData == NULL ) + fpSampleDataHandle = fcaseopen(SampleBankDataFilename, "rb"); + if ( fpSampleDataHandle == NULL ) { - fclose(gFileHandleSampleDesc); - gFileHandleSampleDesc = NULL; + fclose(fpSampleDescHandle); + fpSampleDescHandle = NULL; return FALSE; } - fseek(gFileHandleSampleData, 0, SEEK_END); - int32 _nSampleDataEndOffset = ftell(gFileHandleSampleData); - rewind(gFileHandleSampleData); + fseek(fpSampleDataHandle, 0, SEEK_END); + int32 _nSampleDataEndOffset = ftell(fpSampleDataHandle); + rewind(fpSampleDataHandle); #else int e; - gFileHandleSampleData = op_open_file(SampleBankDataFilename, &e); + fpSampleDataHandle = op_open_file(SampleBankDataFilename, &e); #endif - fread(m_aSampleDataTable, sizeof(tSample), TOTAL_AUDIO_SAMPLES, gFileHandleSampleDesc); + fread(m_aSamples, sizeof(tSample), TOTAL_AUDIO_SAMPLES, fpSampleDescHandle); #ifdef OPUS_SFX - int32 _nSampleDataEndOffset = m_aSampleDataTable[TOTAL_AUDIO_SAMPLES - 1].nOffset + m_aSampleDataTable[TOTAL_AUDIO_SAMPLES - 1].nSize; + int32 _nSampleDataEndOffset = m_aSamples[TOTAL_AUDIO_SAMPLES - 1].nOffset + m_aSamples[TOTAL_AUDIO_SAMPLES - 1].nSize; #endif - fclose(gFileHandleSampleDesc); - gFileHandleSampleDesc = NULL; + fclose(fpSampleDescHandle); + fpSampleDescHandle = NULL; for ( int32 i = 0; i < TOTAL_AUDIO_SAMPLES; i++ ) { #ifdef FIX_BUGS if (nBank >= MAX_SFX_BANKS) break; #endif - if ( gBankStartOffset[nBank] == gBankStartOffset[SFX_BANK_0] + i ) + if ( BankStartOffset[nBank] == BankStartOffset[SFX_BANK_0] + i ) { - gSampleBankDiscStartOffset[nBank] = m_aSampleDataTable[i].nOffset; + nSampleBankDiscStartOffset[nBank] = m_aSamples[i].nOffset; nBank++; } } - gSampleBankSize[SFX_BANK_0] = gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - gSampleBankDiscStartOffset[SFX_BANK_0]; - gSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - gSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; + nSampleBankSize[SFX_BANK_0] = nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS] - nSampleBankDiscStartOffset[SFX_BANK_0]; + nSampleBankSize[SFX_BANK_PED_COMMENTS] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SFX_BANK_PED_COMMENTS]; return TRUE; } From cc235be3aa1ad97ac7067af0d619ee714d9d05eb Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 27 Jun 2021 18:14:34 +0300 Subject: [PATCH 173/314] Less invasive red tint on Delete Game page --- src/core/Frontend.cpp | 39 +++++---------------------------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 84a1e771..f7916f44 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -2972,40 +2972,11 @@ CMenuManager::DrawFrontEndNormal() #ifdef RED_DELETE_BACKGROUND if (m_nCurrScreen == MENUPAGE_CHOOSE_DELETE_SLOT || m_nCurrScreen == MENUPAGE_DELETE_SLOT_CONFIRM) { - CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(18.0f), MENU_Y(8.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(20.0f), MENU_Y(8.0f), - SCREEN_STRETCH_X(12.0f), MENU_Y(11.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(14.0f), MENU_Y(11.0f), - CRGBA(150, 0, 0, 140)); - - CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(12.0f), MENU_Y(11.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(14.0f), MENU_Y(11.0f), - SCREEN_STRETCH_X(10.0f), MENU_Y(16.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(12.0f), MENU_Y(16.0f), - CRGBA(150, 0, 0, 140)); - - CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(10.0f), MENU_Y(16.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(12.0f), MENU_Y(16.0f), - SCREEN_STRETCH_X(10.0f), SCREEN_SCALE_Y(431.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(12.0f), SCREEN_SCALE_Y(431.0f), - CRGBA(150, 0, 0, 140)); - - CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(10.0f), SCREEN_SCALE_Y(431.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(12.0f), SCREEN_SCALE_Y(431.0f), - SCREEN_STRETCH_X(12.0f), SCREEN_SCALE_Y(435.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(14.0f), SCREEN_SCALE_Y(435.0f), - CRGBA(150, 0, 0, 140)); - - CSprite2d::Draw2DPolygon(SCREEN_STRETCH_X(12.0f), SCREEN_SCALE_Y(435.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(14.0f), SCREEN_SCALE_Y(435.0f), - SCREEN_STRETCH_X(18.0f), SCREEN_SCALE_Y(438.0f), - SCREEN_WIDTH - SCREEN_STRETCH_X(20.0f), SCREEN_SCALE_Y(438.0f), - CRGBA(150, 0, 0, 140)); - - // yellow bar - CSprite2d::DrawRect(CRect(MENU_X(13.0f), SCREEN_STRETCH_FROM_BOTTOM(96.0f), - SCREEN_STRETCH_FROM_RIGHT(11.0f), SCREEN_STRETCH_FROM_BOTTOM(59.0f)), - CRGBA(235, 170, 50, 255)); + CSprite2d::Draw2DPolygon(0.0f, 0.0f, + SCREEN_WIDTH, 0.0f, + 0.0f, SCREEN_HEIGHT, + SCREEN_WIDTH, SCREEN_HEIGHT, + CRGBA(150, 0, 0, 80)); } #endif From cb3b3855b844c14c0e943c1a7614fc29820cf666 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 28 Jun 2021 13:31:35 +0200 Subject: [PATCH 174/314] rename clamp macro to Clamp to fix compilation with g++11 --- src/audio/AudioLogic.cpp | 4 ++-- src/audio/AudioManager.cpp | 2 +- src/audio/oal/stream.cpp | 10 +++++----- src/audio/sampman_miles.cpp | 2 +- src/audio/sampman_oal.cpp | 4 ++-- src/control/Replay.cpp | 32 ++++++++++++++++---------------- src/control/Script4.cpp | 4 ++-- src/core/Cam.cpp | 8 ++++---- src/core/Camera.cpp | 8 ++++---- src/core/FileLoader.cpp | 2 +- src/core/Frontend.cpp | 20 ++++++++++---------- src/core/Frontend_PS2.cpp | 4 ++-- src/core/General.h | 2 +- src/core/PlayerInfo.cpp | 2 +- src/core/ZoneCull.cpp | 12 ++++++------ src/core/common.h | 2 +- src/extras/screendroplets.cpp | 2 +- src/peds/Ped.cpp | 4 ++-- src/peds/PedIK.cpp | 12 ++++++------ src/peds/Population.cpp | 2 +- src/render/Coronas.cpp | 2 +- src/render/Glass.cpp | 4 ++-- src/render/Particle.cpp | 16 ++++++++-------- src/render/Sprite.cpp | 8 ++++---- src/render/WaterLevel.cpp | 26 +++++++++++++------------- src/vehicles/Automobile.cpp | 8 ++++---- src/vehicles/Boat.cpp | 18 +++++++++--------- src/vehicles/Door.cpp | 4 ++-- src/vehicles/Heli.cpp | 2 +- src/vehicles/Vehicle.cpp | 4 ++-- src/weapons/Weapon.cpp | 2 +- 31 files changed, 116 insertions(+), 116 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 8472cda6..fdc7305b 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -1220,7 +1220,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * CurrentPretendGear = 1; } if (CReplay::IsPlayingBack()) - accelerateState = 255.f * clamp(automobile->m_fGasPedal, 0.0f, 1.0f); + accelerateState = 255.f * Clamp(automobile->m_fGasPedal, 0.0f, 1.0f); else accelerateState = Pads[0].GetAccelerate(); @@ -1229,7 +1229,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * velocityChange = params.m_fVelocityChange; relativeVelocityChange = 2.0f * velocityChange / transmission->fMaxVelocity; - accelerationMultipler = clamp(relativeVelocityChange, 0.0f, 1.0f); + accelerationMultipler = Clamp(relativeVelocityChange, 0.0f, 1.0f); gasPedalAudio = accelerationMultipler; currentGear = params.m_pVehicle->m_nCurrentGear; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index c49ce552..a3bc6a01 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -321,7 +321,7 @@ cAudioManager::Get3DProviderName(uint8 id) const if (!m_bIsInitialised) return nil; #ifdef AUDIO_OAL - id = clamp(id, 0, SampleManager.GetNum3DProvidersAvailable() - 1); + id = Clamp(id, 0, SampleManager.GetNum3DProvidersAvailable() - 1); #else // We don't want that either since it will crash the game, but skipping for now if (id >= SampleManager.GetNum3DProvidersAvailable()) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 44cc1c93..5d3ff08e 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -134,7 +134,7 @@ public: else StepIndex--; - StepIndex = clamp(StepIndex, 0, 88); + StepIndex = Clamp(StepIndex, 0, 88); int delta = step >> 3; if (adpcm & 1) delta += step >> 2; @@ -143,7 +143,7 @@ public: if (adpcm & 8) delta = -delta; int newSample = Sample + delta; - Sample = clamp(newSample, -32768, 32767); + Sample = Clamp(newSample, -32768, 32767); return Sample; } }; @@ -596,7 +596,7 @@ public: static short quantize(double sample) { int a = int(sample + 0.5); - return short(clamp(a, -32768, 32767)); + return short(Clamp(a, -32768, 32767)); } void Decode(void* _inbuf, int16* _outbuf, size_t size) @@ -1086,10 +1086,10 @@ void CStream::SetVolume(uint32 nVol) void CStream::SetPan(uint8 nPan) { - m_nPan = clamp((int8)nPan - 63, 0, 63); + m_nPan = Clamp((int8)nPan - 63, 0, 63); SetPosition(0, (m_nPan - 63) / 64.0f, 0.0f, Sqrt(1.0f - SQR((m_nPan - 63) / 64.0f))); - m_nPan = clamp((int8)nPan + 64, 64, 127); + m_nPan = Clamp((int8)nPan + 64, 64, 127); SetPosition(1, (m_nPan - 63) / 64.0f, 0.0f, Sqrt(1.0f - SQR((m_nPan - 63) / 64.0f))); m_nPan = nPan; diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index ddfaaa5f..362da433 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -1624,7 +1624,7 @@ cSampleManager::UpdateReverb(void) } } - fRatio = clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); + fRatio = Clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); if ( fRatio == _fPrevEaxRatioDestination ) return FALSE; diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index f2771885..31c27154 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -348,7 +348,7 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider) { int savedprovider = curprovider; - nProvider = clamp(nProvider, 0, m_nNumberOfProviders - 1); + nProvider = Clamp(nProvider, 0, m_nNumberOfProviders - 1); if ( set_new_provider(nProvider) ) return curprovider; @@ -1424,7 +1424,7 @@ bool8 cSampleManager::UpdateReverb(void) #undef CALCRATIO #undef ZR - fRatio = clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); + fRatio = Clamp(fRatio, usingEAX3==1 ? 0.0f : 0.30f, 1.0f); if ( fRatio == _fPrevEaxRatioDestination ) return FALSE; diff --git a/src/control/Replay.cpp b/src/control/Replay.cpp index 20a38cc0..b9b5530c 100644 --- a/src/control/Replay.cpp +++ b/src/control/Replay.cpp @@ -404,8 +404,8 @@ void CReplay::StorePedAnimation(CPed *ped, CStoredAnimationState *state) CAnimBlendAssociation* main = RpAnimBlendClumpGetMainAssociation((RpClump*)ped->m_rwObject, &second, &blend_amount); if (main){ state->animId = main->animId; - state->time = 255.0f / 4.0f * clamp(main->currentTime, 0.0f, 4.0f); - state->speed = 255.0f / 3.0f * clamp(main->speed, 0.0f, 3.0f); + state->time = 255.0f / 4.0f * Clamp(main->currentTime, 0.0f, 4.0f); + state->speed = 255.0f / 3.0f * Clamp(main->speed, 0.0f, 3.0f); }else{ state->animId = 3; state->time = 0; @@ -413,9 +413,9 @@ void CReplay::StorePedAnimation(CPed *ped, CStoredAnimationState *state) } if (second) { state->secAnimId = second->animId; - state->secTime = 255.0f / 4.0f * clamp(second->currentTime, 0.0f, 4.0f); - state->secSpeed = 255.0f / 3.0f * clamp(second->speed, 0.0f, 3.0f); - state->blendAmount = 255.0f / 2.0f * clamp(blend_amount, 0.0f, 2.0f); + state->secTime = 255.0f / 4.0f * Clamp(second->currentTime, 0.0f, 4.0f); + state->secSpeed = 255.0f / 3.0f * Clamp(second->speed, 0.0f, 3.0f); + state->blendAmount = 255.0f / 2.0f * Clamp(blend_amount, 0.0f, 2.0f); }else{ state->secAnimId = 0; state->secTime = 0; @@ -425,9 +425,9 @@ void CReplay::StorePedAnimation(CPed *ped, CStoredAnimationState *state) CAnimBlendAssociation* partial = RpAnimBlendClumpGetMainPartialAssociation((RpClump*)ped->m_rwObject); if (partial) { state->partAnimId = partial->animId; - state->partAnimTime = 255.0f / 4.0f * clamp(partial->currentTime, 0.0f, 4.0f); - state->partAnimSpeed = 255.0f / 3.0f * clamp(partial->speed, 0.0f, 3.0f); - state->partBlendAmount = 255.0f / 2.0f * clamp(partial->blendAmount, 0.0f, 2.0f); + state->partAnimTime = 255.0f / 4.0f * Clamp(partial->currentTime, 0.0f, 4.0f); + state->partAnimSpeed = 255.0f / 3.0f * Clamp(partial->speed, 0.0f, 3.0f); + state->partBlendAmount = 255.0f / 2.0f * Clamp(partial->blendAmount, 0.0f, 2.0f); }else{ state->partAnimId = 0; state->partAnimTime = 0; @@ -442,11 +442,11 @@ void CReplay::StoreDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationState CAnimBlendAssociation* assoc = RpAnimBlendClumpGetMainAssociation_N((RpClump*)ped->m_rwObject, i); if (assoc){ state->aAnimId[i] = assoc->animId; - state->aCurTime[i] = 255.0f / 4.0f * clamp(assoc->currentTime, 0.0f, 4.0f); - state->aSpeed[i] = 255.0f / 3.0f * clamp(assoc->speed, 0.0f, 3.0f); - state->aBlendAmount[i] = 255.0f / 2.0f * clamp(assoc->blendAmount, 0.0f, 2.0f); + state->aCurTime[i] = 255.0f / 4.0f * Clamp(assoc->currentTime, 0.0f, 4.0f); + state->aSpeed[i] = 255.0f / 3.0f * Clamp(assoc->speed, 0.0f, 3.0f); + state->aBlendAmount[i] = 255.0f / 2.0f * Clamp(assoc->blendAmount, 0.0f, 2.0f); #ifdef FIX_REPLAY_BUGS - state->aBlendDelta[i] = 127.0f / 32.0f * clamp(assoc->blendDelta, -16.0f, 16.0f); + state->aBlendDelta[i] = 127.0f / 32.0f * Clamp(assoc->blendDelta, -16.0f, 16.0f); #endif state->aFlags[i] = assoc->flags; if (assoc->callbackType == CAnimBlendAssociation::CB_FINISH || assoc->callbackType == CAnimBlendAssociation::CB_DELETE) { @@ -468,11 +468,11 @@ void CReplay::StoreDetailedPedAnimation(CPed *ped, CStoredDetailedAnimationState CAnimBlendAssociation* assoc = RpAnimBlendClumpGetMainPartialAssociation_N((RpClump*)ped->m_rwObject, i); if (assoc) { state->aAnimId2[i] = assoc->animId; - state->aCurTime2[i] = 255.0f / 4.0f * clamp(assoc->currentTime, 0.0f, 4.0f); - state->aSpeed2[i] = 255.0f / 3.0f * clamp(assoc->speed, 0.0f, 3.0f); - state->aBlendAmount2[i] = 255.0f / 2.0f * clamp(assoc->blendAmount, 0.0f, 2.0f); + state->aCurTime2[i] = 255.0f / 4.0f * Clamp(assoc->currentTime, 0.0f, 4.0f); + state->aSpeed2[i] = 255.0f / 3.0f * Clamp(assoc->speed, 0.0f, 3.0f); + state->aBlendAmount2[i] = 255.0f / 2.0f * Clamp(assoc->blendAmount, 0.0f, 2.0f); #ifdef FIX_REPLAY_BUGS - state->aBlendDelta2[i] = 127.0f / 16.0f * clamp(assoc->blendDelta, -16.0f, 16.0f); + state->aBlendDelta2[i] = 127.0f / 16.0f * Clamp(assoc->blendDelta, -16.0f, 16.0f); #endif state->aFlags2[i] = assoc->flags; if (assoc->callbackType == CAnimBlendAssociation::CB_FINISH || assoc->callbackType == CAnimBlendAssociation::CB_DELETE) { diff --git a/src/control/Script4.cpp b/src/control/Script4.cpp index 65459c9e..4e798be3 100644 --- a/src/control/Script4.cpp +++ b/src/control/Script4.cpp @@ -735,7 +735,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) CollectParameters(&m_nIp, 2); CPlayerPed* pPlayerPed = CWorld::Players[ScriptParams[0]].m_pPed; script_assert(pPlayerPed); - pPlayerPed->m_fArmour = clamp(pPlayerPed->m_fArmour + ScriptParams[1], 0.0f, 100.0f); + pPlayerPed->m_fArmour = Clamp(pPlayerPed->m_fArmour + ScriptParams[1], 0.0f, 100.0f); return 0; } case COMMAND_ADD_ARMOUR_TO_CHAR: @@ -743,7 +743,7 @@ int8 CRunningScript::ProcessCommands800To899(int32 command) CollectParameters(&m_nIp, 2); CPed* pPed = CPools::GetPedPool()->GetAt(ScriptParams[0]); script_assert(pPed); - pPed->m_fArmour = clamp(pPed->m_fArmour + ScriptParams[1], 0.0f, 100.0f); + pPed->m_fArmour = Clamp(pPed->m_fArmour + ScriptParams[1], 0.0f, 100.0f); return 0; } case COMMAND_OPEN_GARAGE: diff --git a/src/core/Cam.cpp b/src/core/Cam.cpp index b6e4f967..ecfade74 100644 --- a/src/core/Cam.cpp +++ b/src/core/Cam.cpp @@ -3482,7 +3482,7 @@ FindSplinePathPositionFloat(float *out, float *spline, uint32 time, uint32 &mark } } float a = ((float)time - (float)MS(spline[marker-4])) / (float)MS(spline[marker] - spline[marker-4]); - a = clamp(a, 0.0f, 1.0f); + a = Clamp(a, 0.0f, 1.0f); float b = 1.0f - a; *out = b*b*b * spline[marker-3] + 3.0f*a*b*b * spline[marker-1] + @@ -3520,7 +3520,7 @@ FindSplinePathPositionVector(CVector *out, float *spline, uint32 time, uint32 &m } float a = ((float)time - (float)MS(spline[marker-10])) / (float)MS(spline[marker] - spline[marker-10]); - a = clamp(a, 0.0f, 1.0f); + a = Clamp(a, 0.0f, 1.0f); float b = 1.0f - a; out->x = b*b*b * spline[marker-9] + @@ -4899,7 +4899,7 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, // 0.98f: CAR_FOV_FADE_MULT FOV = Pow(0.98f, CTimer::GetTimeStep()) * (FOV - DefaultFOV) + DefaultFOV; - FOV = clamp(FOV, DefaultFOV, DefaultFOV + 30.0f); + FOV = Clamp(FOV, DefaultFOV, DefaultFOV + 30.0f); } // WORKAROUND: I still don't know how looking behind works (m_bCamDirectlyInFront is unused in III, they seem to use m_bUseTransitionBeta) @@ -5021,7 +5021,7 @@ CCam::Process_FollowCar_SA(const CVector& CameraTarget, float TargetOrientation, } } - float targetAlpha = Asin(clamp(Front.z, -1.0f, 1.0f)) - zoomModeAlphaOffset; + float targetAlpha = Asin(Clamp(Front.z, -1.0f, 1.0f)) - zoomModeAlphaOffset; if (targetAlpha <= maxAlphaAllowed) { if (targetAlpha < -CARCAM_SET[camSetArrPos][14]) targetAlpha = -CARCAM_SET[camSetArrPos][14]; diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp index 5881dacd..f3b41655 100644 --- a/src/core/Camera.cpp +++ b/src/core/Camera.cpp @@ -661,7 +661,7 @@ CCamera::Process(void) // Process Shake float shakeStrength = m_fCamShakeForce - 0.28f*(CTimer::GetTimeInMilliseconds()-m_uiCamShakeStart)/1000.0f; - shakeStrength = clamp(shakeStrength, 0.0f, 2.0f); + shakeStrength = Clamp(shakeStrength, 0.0f, 2.0f); int shakeRand = CGeneral::GetRandomNumber(); float shakeOffset = shakeStrength*0.1f; GetMatrix().GetPosition().x += shakeOffset * ((shakeRand & 0xF) - 7); @@ -1877,7 +1877,7 @@ CCamera::CamShake(float strength, float x, float y, float z) float curForce = mult*(m_fCamShakeForce - (CTimer::GetTimeInMilliseconds() - m_uiCamShakeStart)/1000.0f); strength = mult*strength; - if(clamp(curForce, 0.0f, 2.0f) < strength){ + if(Clamp(curForce, 0.0f, 2.0f) < strength){ m_fCamShakeForce = strength; m_uiCamShakeStart = CTimer::GetTimeInMilliseconds(); } @@ -1888,7 +1888,7 @@ void CamShakeNoPos(CCamera *cam, float strength) { float curForce = cam->m_fCamShakeForce - (CTimer::GetTimeInMilliseconds() - cam->m_uiCamShakeStart)/1000.0f; - if(clamp(curForce, 0.0f, 2.0f) < strength){ + if(Clamp(curForce, 0.0f, 2.0f) < strength){ cam->m_fCamShakeForce = strength; cam->m_uiCamShakeStart = CTimer::GetTimeInMilliseconds(); } @@ -3572,7 +3572,7 @@ CCamera::Find3rdPersonCamTargetVector(float dist, CVector pos, CVector &source, float CCamera::Find3rdPersonQuickAimPitch(void) { - float clampedFrontZ = clamp(Cams[ActiveCam].Front.z, -1.0f, 1.0f); + float clampedFrontZ = Clamp(Cams[ActiveCam].Front.z, -1.0f, 1.0f); float rot = Asin(clampedFrontZ); diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp index 20e7bd8e..cc2b402b 100644 --- a/src/core/FileLoader.cpp +++ b/src/core/FileLoader.cpp @@ -1463,7 +1463,7 @@ CFileLoader::Load2dEffect(const char *line) &probability); effect->attractor.type = flags; #ifdef FIX_BUGS - effect->attractor.probability = clamp(probability, 0, 255); + effect->attractor.probability = Clamp(probability, 0, 255); #else effect->attractor.probability = probability; #endif diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index f7916f44..125360ff 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -899,29 +899,29 @@ CMenuManager::CheckSliderMovement(int value) switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { case MENUACTION_BRIGHTNESS: m_PrefsBrightness += value * (512/16); - m_PrefsBrightness = clamp(m_PrefsBrightness, 0, 511); + m_PrefsBrightness = Clamp(m_PrefsBrightness, 0, 511); break; case MENUACTION_DRAWDIST: if(value > 0) m_PrefsLOD += ((1.8f - 0.8f) / 16.0f); else m_PrefsLOD -= ((1.8f - 0.8f) / 16.0f); - m_PrefsLOD = clamp(m_PrefsLOD, 0.8f, 1.8f); + m_PrefsLOD = Clamp(m_PrefsLOD, 0.8f, 1.8f); CRenderer::ms_lodDistScale = m_PrefsLOD; break; case MENUACTION_MUSICVOLUME: m_PrefsMusicVolume += value * (128/16); - m_PrefsMusicVolume = clamp(m_PrefsMusicVolume, 0, 127); + m_PrefsMusicVolume = Clamp(m_PrefsMusicVolume, 0, 127); DMAudio.SetMusicMasterVolume(m_PrefsMusicVolume); break; case MENUACTION_SFXVOLUME: m_PrefsSfxVolume += value * (128/16); - m_PrefsSfxVolume = clamp(m_PrefsSfxVolume, 0, 127); + m_PrefsSfxVolume = Clamp(m_PrefsSfxVolume, 0, 127); DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume); break; case MENUACTION_MOUSESENS: TheCamera.m_fMouseAccelHorzntl += value * 1.0f/200.0f/15.0f; // ??? - TheCamera.m_fMouseAccelHorzntl = clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f/3200.0f, 1.0f/200.0f); + TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f/3200.0f, 1.0f/200.0f); #ifdef FIX_BUGS TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f; #else @@ -4523,7 +4523,7 @@ CMenuManager::ProcessButtonPresses(void) break; case HOVEROPTION_INCREASE_MUSICVOLUME: m_PrefsMusicVolume = m_PrefsMusicVolume + 8; - m_PrefsMusicVolume = clamp(m_PrefsMusicVolume, 0, 127); + m_PrefsMusicVolume = Clamp(m_PrefsMusicVolume, 0, 127); DMAudio.SetMusicMasterVolume(uchar)(m_PrefsMusicVolume); SaveSettings(); break; @@ -4562,7 +4562,7 @@ CMenuManager::ProcessButtonPresses(void) break; case HOVEROPTION_INCREASE_MOUSESENS: TheCamera.m_fMouseAccelHorzntl += (1.0f / 3000); - TheCamera.m_fMouseAccelHorzntl = clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f / 3200, 1.0f / 200); + TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f / 3200, 1.0f / 200); #ifdef FIX_BUGS TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f; #else @@ -4572,7 +4572,7 @@ CMenuManager::ProcessButtonPresses(void) break; case HOVEROPTION_DECREASE_MOUSESENS: TheCamera.m_fMouseAccelHorzntl -= (1.0f / 3000); - TheCamera.m_fMouseAccelHorzntl = clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f / 3200, 1.0f / 200); + TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f / 3200, 1.0f / 200); #ifdef FIX_BUGS TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f; #else @@ -5388,14 +5388,14 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_AUDIOHW: if (m_nPrefsAudio3DProviderIndex != -1) { m_nPrefsAudio3DProviderIndex += changeValueBy; - m_nPrefsAudio3DProviderIndex = clamp(m_nPrefsAudio3DProviderIndex, 0, DMAudio.GetNum3DProvidersAvailable() - 1); + m_nPrefsAudio3DProviderIndex = Clamp(m_nPrefsAudio3DProviderIndex, 0, DMAudio.GetNum3DProvidersAvailable() - 1); } DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_NAVIGATION, 0); break; case MENUACTION_SPEAKERCONF: if (m_nPrefsAudio3DProviderIndex != -1) { m_PrefsSpeakers -= changeValueBy; - m_PrefsSpeakers = clamp(m_PrefsSpeakers, 0, 2); + m_PrefsSpeakers = Clamp(m_PrefsSpeakers, 0, 2); DMAudio.SetSpeakerConfig(m_PrefsSpeakers); SaveSettings(); DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); diff --git a/src/core/Frontend_PS2.cpp b/src/core/Frontend_PS2.cpp index 457a5ff8..1da15fbb 100644 --- a/src/core/Frontend_PS2.cpp +++ b/src/core/Frontend_PS2.cpp @@ -1388,7 +1388,7 @@ CMenuManager::DrawFrontEndNormal(void) if ((m_nStartPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) <= 1600) alpha = float(m_nStartPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) / 400.0f; - m_someAlpha = 255 - clamp(alpha, 0.0f, 1.0f) * 255.0f; + m_someAlpha = 255 - Clamp(alpha, 0.0f, 1.0f) * 255.0f; switch ( m_nSlidingDir ) { @@ -1405,7 +1405,7 @@ CMenuManager::DrawFrontEndNormal(void) float slide = float(m_nEndPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) / 800.0f; float alpha = float((int32)(m_nEndPauseTimer - CTimer::GetTimeInMillisecondsPauseMode()) + -266) / 533.0f; - m_someAlpha = clamp(alpha, 0.0f, 1.0f) * 255.0f; + m_someAlpha = Clamp(alpha, 0.0f, 1.0f) * 255.0f; switch ( m_nSlidingDir ) { diff --git a/src/core/General.h b/src/core/General.h index 478ef027..d4b941dd 100644 --- a/src/core/General.h +++ b/src/core/General.h @@ -56,7 +56,7 @@ public: static float LimitRadianAngle(float angle) { - float result = clamp(angle, -25.0f, 25.0f); + float result = Clamp(angle, -25.0f, 25.0f); while (result >= PI) { result -= 2 * PI; diff --git a/src/core/PlayerInfo.cpp b/src/core/PlayerInfo.cpp index bd6feeed..91bd0691 100644 --- a/src/core/PlayerInfo.cpp +++ b/src/core/PlayerInfo.cpp @@ -121,7 +121,7 @@ CPlayerInfo::Process(void) m_fRoadDensity = ThePaths.CalcRoadDensity(playerPos.x, playerPos.y); } - m_fRoadDensity = clamp(m_fRoadDensity, 0.4f, 1.45f); + m_fRoadDensity = Clamp(m_fRoadDensity, 0.4f, 1.45f); // Because vehicle enter/exit use same key binding. bool enterOrExitVeh; diff --git a/src/core/ZoneCull.cpp b/src/core/ZoneCull.cpp index 33586a4e..5a76e5ed 100644 --- a/src/core/ZoneCull.cpp +++ b/src/core/ZoneCull.cpp @@ -396,9 +396,9 @@ CCullZones::AddCullZone(CVector const &position, v = CVector(1061.7f, -613.0f, 19.0f); if((v-CVector(1029.48f, -495.757f, 21.98f)).Magnitude() < 1.0f) v = CVector(1061.4f, -506.0f, 18.5f); - cull->position.x = clamp(v.x, minx, maxx); - cull->position.y = clamp(v.y, miny, maxy); - cull->position.z = clamp(v.z, minz, maxz); + cull->position.x = Clamp(v.x, minx, maxx); + cull->position.y = Clamp(v.y, miny, maxy); + cull->position.z = Clamp(v.z, minz, maxz); cull->minx = minx; cull->maxx = maxx; cull->miny = miny; @@ -958,11 +958,11 @@ CCullZone::FindTestPoints() // indices of center int x = ElementsX * (position.x-minx)/(maxx-minx); - x = clamp(x, 0, ElementsX-1); + x = Clamp(x, 0, ElementsX-1); int y = ElementsY * (position.y-miny)/(maxy-miny); - y = clamp(y, 0, ElementsY-1); + y = Clamp(y, 0, ElementsY-1); int z = ElementsZ * (position.z-minz)/(maxz-minz); - z = clamp(z, 0, ElementsZ-1); + z = Clamp(z, 0, ElementsZ-1); // Mark which test points inside the zone are not occupied by buildings. // To do this, mark the start point as free and do a food fill. diff --git a/src/core/common.h b/src/core/common.h index 7207f08d..da162762 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -290,7 +290,7 @@ extern int strcasecmp(const char *str1, const char *str2); extern wchar *AllocUnicode(const char*src); -#define clamp(v, low, high) ((v)<(low) ? (low) : (v)>(high) ? (high) : (v)) +#define Clamp(v, low, high) ((v)<(low) ? (low) : (v)>(high) ? (high) : (v)) inline float sq(float x) { return x*x; } #define SQR(x) ((x) * (x)) diff --git a/src/extras/screendroplets.cpp b/src/extras/screendroplets.cpp index 1412141e..2485386b 100644 --- a/src/extras/screendroplets.cpp +++ b/src/extras/screendroplets.cpp @@ -423,7 +423,7 @@ ScreenDroplets::ProcessCameraMovement(void) ms_movingEnabled = !isTopDown && !isLookingInDirection; // 0 when looking stright up, 180 when looking up or down - ms_camUpAngle = RADTODEG(Acos(clamp(camUp.z, -1.0f, 1.0f))); + ms_camUpAngle = RADTODEG(Acos(Clamp(camUp.z, -1.0f, 1.0f))); } void diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 977766c3..04e13c33 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2928,7 +2928,7 @@ CPed::ProcessControl(void) lDriveAssoc->blendAmount = 0.0f; if (rDriveAssoc) - rDriveAssoc->blendAmount = clamp(steerAngle * -100.0f / 61.0f, 0.0f, 1.0f); + rDriveAssoc->blendAmount = Clamp(steerAngle * -100.0f / 61.0f, 0.0f, 1.0f); else if (m_pMyVehicle->bLowVehicle) CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_RIGHT_LO); else @@ -2939,7 +2939,7 @@ CPed::ProcessControl(void) rDriveAssoc->blendAmount = 0.0f; if (lDriveAssoc) - lDriveAssoc->blendAmount = clamp(steerAngle * 100.0f / 61.0f, 0.0f, 1.0f); + lDriveAssoc->blendAmount = Clamp(steerAngle * 100.0f / 61.0f, 0.0f, 1.0f); else if (m_pMyVehicle->bLowVehicle) CAnimManager::AddAnimation(GetClump(), ASSOCGRP_STD, ANIM_STD_CAR_DRIVE_LEFT_LO); else diff --git a/src/peds/PedIK.cpp b/src/peds/PedIK.cpp index 8bace9a0..de2c23ce 100644 --- a/src/peds/PedIK.cpp +++ b/src/peds/PedIK.cpp @@ -194,7 +194,7 @@ CPedIK::MoveLimb(LimbOrientation &limb, float targetYaw, float targetPitch, Limb } if (limb.yaw > moveInfo.maxYaw || limb.yaw < moveInfo.minYaw) { - limb.yaw = clamp(limb.yaw, moveInfo.minYaw, moveInfo.maxYaw); + limb.yaw = Clamp(limb.yaw, moveInfo.minYaw, moveInfo.maxYaw); result = ANGLES_SET_TO_MAX; } @@ -212,7 +212,7 @@ CPedIK::MoveLimb(LimbOrientation &limb, float targetYaw, float targetPitch, Limb result = ONE_ANGLE_COULDNT_BE_SET_EXACTLY; if (limb.pitch > moveInfo.maxPitch || limb.pitch < moveInfo.minPitch) { - limb.pitch = clamp(limb.pitch, moveInfo.minPitch, moveInfo.maxPitch); + limb.pitch = Clamp(limb.pitch, moveInfo.minPitch, moveInfo.maxPitch); result = ANGLES_SET_TO_MAX; } return result; @@ -527,11 +527,11 @@ CPedIK::RestoreLookAt(void) void CPedIK::ExtractYawAndPitchWorld(RwMatrix *mat, float *yaw, float *pitch) { - float f = clamp(DotProduct(mat->up, CVector(0.0f, 1.0f, 0.0f)), -1.0f, 1.0f); + float f = Clamp(DotProduct(mat->up, CVector(0.0f, 1.0f, 0.0f)), -1.0f, 1.0f); *yaw = Acos(f); if (mat->up.x > 0.0f) *yaw = -*yaw; - f = clamp(DotProduct(mat->right, CVector(0.0f, 0.0f, 1.0f)), -1.0f, 1.0f); + f = Clamp(DotProduct(mat->right, CVector(0.0f, 0.0f, 1.0f)), -1.0f, 1.0f); *pitch = Acos(f); if (mat->up.z > 0.0f) *pitch = -*pitch; } @@ -539,11 +539,11 @@ CPedIK::ExtractYawAndPitchWorld(RwMatrix *mat, float *yaw, float *pitch) void CPedIK::ExtractYawAndPitchLocal(RwMatrix *mat, float *yaw, float *pitch) { - float f = clamp(DotProduct(mat->at, CVector(0.0f, 0.0f, 1.0f)), -1.0f, 1.0f); + float f = Clamp(DotProduct(mat->at, CVector(0.0f, 0.0f, 1.0f)), -1.0f, 1.0f); *yaw = Acos(f); if (mat->at.y > 0.0f) *yaw = -*yaw; - f = clamp(DotProduct(mat->right, CVector(1.0f, 0.0f, 0.0f)), -1.0f, 1.0f); + f = Clamp(DotProduct(mat->right, CVector(1.0f, 0.0f, 0.0f)), -1.0f, 1.0f); *pitch = Acos(f); if (mat->up.x > 0.0f) *pitch = -*pitch; } diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index edb5958d..ace6d37c 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -484,7 +484,7 @@ CPopulation::PedCreationDistMultiplier() return 1.0f; float vehSpeed = veh->m_vecMoveSpeed.Magnitude2D(); - return clamp(vehSpeed - 0.1f + 1.0f, 1.0f, 1.5f); + return Clamp(vehSpeed - 0.1f + 1.0f, 1.0f, 1.5f); } CPed* diff --git a/src/render/Coronas.cpp b/src/render/Coronas.cpp index 68e57b16..e9f9e662 100644 --- a/src/render/Coronas.cpp +++ b/src/render/Coronas.cpp @@ -481,7 +481,7 @@ CCoronas::RenderReflections(void) if(spriteCoors.z < drawDist){ float fadeDistance = drawDist / 2.0f; float distanceFade = spriteCoors.z < fadeDistance ? 1.0f : 1.0f - (spriteCoors.z - fadeDistance)/fadeDistance; - distanceFade = clamp(distanceFade, 0.0f, 1.0f); + distanceFade = Clamp(distanceFade, 0.0f, 1.0f); float recipz = 1.0f/RwCameraGetNearClipPlane(Scene.camera); float heightFade = (20.0f - aCoronas[i].heightAboveRoad)/20.0f; int intensity = distanceFade*heightFade * 230.0 * CWeather::WetRoads; diff --git a/src/render/Glass.cpp b/src/render/Glass.cpp index ede06ba1..cc45648c 100644 --- a/src/render/Glass.cpp +++ b/src/render/Glass.cpp @@ -139,9 +139,9 @@ CFallingGlassPane::Render(void) uint8 alpha = CGlass::CalcAlphaWithNormal(&fwdNorm); #ifdef FIX_BUGS - uint16 time = clamp(CTimer::GetTimeInMilliseconds() > m_nTimer ? CTimer::GetTimeInMilliseconds() - m_nTimer : 0u, 0u, 500u); + uint16 time = Clamp(CTimer::GetTimeInMilliseconds() > m_nTimer ? CTimer::GetTimeInMilliseconds() - m_nTimer : 0u, 0u, 500u); #else - uint16 time = clamp(CTimer::GetTimeInMilliseconds() - m_nTimer, 0, 500); + uint16 time = Clamp(CTimer::GetTimeInMilliseconds() - m_nTimer, 0, 500); #endif uint8 color = int32( float(alpha) * (float(time) / 500) ); diff --git a/src/render/Particle.cpp b/src/render/Particle.cpp index c971955f..76ddde50 100644 --- a/src/render/Particle.cpp +++ b/src/render/Particle.cpp @@ -880,15 +880,15 @@ CParticle *CParticle::AddParticle(tParticleType type, CVector const &vecPos, CVe int32 ColorVariation = CGeneral::GetRandomNumberInRange(-psystem->m_InitialColorVariation, psystem->m_InitialColorVariation); //Float ColorVariation = CGeneral::GetRandomNumberInRange((float)-psystem->m_InitialColorVariation, (float)psystem->m_InitialColorVariation); - pParticle->m_Color.red = clamp(pParticle->m_Color.red + + pParticle->m_Color.red = Clamp(pParticle->m_Color.red + PERCENT(pParticle->m_Color.red, ColorVariation), 0, 255); - pParticle->m_Color.green = clamp(pParticle->m_Color.green + + pParticle->m_Color.green = Clamp(pParticle->m_Color.green + PERCENT(pParticle->m_Color.green, ColorVariation), 0, 255); - pParticle->m_Color.blue = clamp(pParticle->m_Color.blue + + pParticle->m_Color.blue = Clamp(pParticle->m_Color.blue + PERCENT(pParticle->m_Color.blue, ColorVariation), 0, 255); } @@ -1083,15 +1083,15 @@ void CParticle::Update() { float colorMul = 1.0f - float(particle->m_nTimeWhenColorWillBeChanged - CTimer::GetTimeInMilliseconds()) / float(psystem->m_ColorFadeTime); - particle->m_Color.red = clamp( + particle->m_Color.red = Clamp( psystem->m_RenderColouring.red + int32(float(psystem->m_FadeDestinationColor.red - psystem->m_RenderColouring.red) * colorMul), 0, 255); - particle->m_Color.green = clamp( + particle->m_Color.green = Clamp( psystem->m_RenderColouring.green + int32(float(psystem->m_FadeDestinationColor.green - psystem->m_RenderColouring.green) * colorMul), 0, 255); - particle->m_Color.blue = clamp( + particle->m_Color.blue = Clamp( psystem->m_RenderColouring.blue + int32(float(psystem->m_FadeDestinationColor.blue - psystem->m_RenderColouring.blue) * colorMul), 0, 255); } @@ -1380,7 +1380,7 @@ void CParticle::Update() { particle->m_nFadeToBlackTimer = 0; - particle->m_nColorIntensity = clamp(particle->m_nColorIntensity - psystem->m_nFadeToBlackAmount, + particle->m_nColorIntensity = Clamp(particle->m_nColorIntensity - psystem->m_nFadeToBlackAmount, 0, 255); } else @@ -1393,7 +1393,7 @@ void CParticle::Update() { particle->m_nFadeAlphaTimer = 0; - particle->m_nAlpha = clamp(particle->m_nAlpha - psystem->m_nFadeAlphaAmount, + particle->m_nAlpha = Clamp(particle->m_nAlpha - psystem->m_nFadeAlphaAmount, 0, 255); #ifdef PC_PARTICLE if ( particle->m_nAlpha == 0 ) diff --git a/src/render/Sprite.cpp b/src/render/Sprite.cpp index a441e08b..3fef0733 100644 --- a/src/render/Sprite.cpp +++ b/src/render/Sprite.cpp @@ -405,13 +405,13 @@ CSprite::RenderBufferedOneXLUSprite_Rotate_2Colours(float x, float y, float z, f // Colour factors, cx/y is the direction in which colours change from rgb1 to rgb2 cf[0] = (cx*(-c-s) + cy*(-c+s))*0.5f + 0.5f; - cf[0] = clamp(cf[0], 0.0f, 1.0f); + cf[0] = Clamp(cf[0], 0.0f, 1.0f); cf[1] = (cx*(-c+s) + cy*( c+s))*0.5f + 0.5f; - cf[1] = clamp(cf[1], 0.0f, 1.0f); + cf[1] = Clamp(cf[1], 0.0f, 1.0f); cf[2] = (cx*( c+s) + cy*( c-s))*0.5f + 0.5f; - cf[2] = clamp(cf[2], 0.0f, 1.0f); + cf[2] = Clamp(cf[2], 0.0f, 1.0f); cf[3] = (cx*( c-s) + cy*(-c-s))*0.5f + 0.5f; - cf[3] = clamp(cf[3], 0.0f, 1.0f); + cf[3] = Clamp(cf[3], 0.0f, 1.0f); float screenz = m_f2DNearScreenZ + (z-CDraw::GetNearClipZ())*(m_f2DFarScreenZ-m_f2DNearScreenZ)*CDraw::GetFarClipZ() / diff --git a/src/render/WaterLevel.cpp b/src/render/WaterLevel.cpp index e41af17a..7001c0cf 100644 --- a/src/render/WaterLevel.cpp +++ b/src/render/WaterLevel.cpp @@ -126,10 +126,10 @@ CWaterLevel::Initialise(Const char *pWaterDat) #ifdef FIX_BUGS // water.dat has rects that go out of bounds // which causes memory corruption - l = clamp(l, 0, MAX_SMALL_SECTORS - 1); - r = clamp(r, 0, MAX_SMALL_SECTORS - 1); - t = clamp(t, 0, MAX_SMALL_SECTORS - 1); - b = clamp(b, 0, MAX_SMALL_SECTORS - 1); + l = Clamp(l, 0, MAX_SMALL_SECTORS - 1); + r = Clamp(r, 0, MAX_SMALL_SECTORS - 1); + t = Clamp(t, 0, MAX_SMALL_SECTORS - 1); + b = Clamp(b, 0, MAX_SMALL_SECTORS - 1); #endif for (int32 x = l; x <= r; x++) @@ -713,10 +713,10 @@ CWaterLevel::RenderWater() if ( bUseCamEndY ) nEndY = WATER_TO_HUGE_SECTOR_Y(camPos.y); - nStartX = clamp(nStartX, 0, MAX_HUGE_SECTORS - 1); - nEndX = clamp(nEndX, 0, MAX_HUGE_SECTORS - 1); - nStartY = clamp(nStartY, 0, MAX_HUGE_SECTORS - 1); - nEndY = clamp(nEndY, 0, MAX_HUGE_SECTORS - 1); + nStartX = Clamp(nStartX, 0, MAX_HUGE_SECTORS - 1); + nEndX = Clamp(nEndX, 0, MAX_HUGE_SECTORS - 1); + nStartY = Clamp(nStartY, 0, MAX_HUGE_SECTORS - 1); + nEndY = Clamp(nEndY, 0, MAX_HUGE_SECTORS - 1); for ( int32 x = nStartX; x <= nEndX; x++ ) { @@ -1406,10 +1406,10 @@ CWaterLevel::CalcDistanceToWater(float fX, float fY) int32 nStartY = WATER_TO_SMALL_SECTOR_Y(fY - fSectorMaxRenderDist) - 1; int32 nEndY = WATER_TO_SMALL_SECTOR_Y(fY + fSectorMaxRenderDist) + 1; - nStartX = clamp(nStartX, 0, MAX_SMALL_SECTORS - 1); - nEndX = clamp(nEndX, 0, MAX_SMALL_SECTORS - 1); - nStartY = clamp(nStartY, 0, MAX_SMALL_SECTORS - 1); - nEndY = clamp(nEndY, 0, MAX_SMALL_SECTORS - 1); + nStartX = Clamp(nStartX, 0, MAX_SMALL_SECTORS - 1); + nEndX = Clamp(nEndX, 0, MAX_SMALL_SECTORS - 1); + nStartY = Clamp(nStartY, 0, MAX_SMALL_SECTORS - 1); + nEndY = Clamp(nEndY, 0, MAX_SMALL_SECTORS - 1); float fDistSqr = 1.0e10f; @@ -1433,7 +1433,7 @@ CWaterLevel::CalcDistanceToWater(float fX, float fY) } } - return clamp(Sqrt(fDistSqr) - 23.0f, 0.0f, fSectorMaxRenderDist); + return Clamp(Sqrt(fDistSqr) - 23.0f, 0.0f, fSectorMaxRenderDist); } void diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 7be6ed0b..3de3e12b 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -1665,7 +1665,7 @@ CAutomobile::PreRender(void) // 1.0 if directly behind car, -1.0 if in front // BUG on PC: Abs of DotProduct is taken float behindness = DotProduct(lookVector, GetForward()); - behindness = clamp(behindness, -1.0f, 1.0f); // shouldn't be necessary + behindness = Clamp(behindness, -1.0f, 1.0f); // shouldn't be necessary // 0.0 if behind car, PI if in front // Abs not necessary float angle = Abs(Acos(behindness)); @@ -2264,7 +2264,7 @@ CAutomobile::ProcessControlInputs(uint8 pad) 0.2f*CTimer::GetTimeStep(); nLastControlInput = 0; } - m_fSteerInput = clamp(m_fSteerInput, -1.0f, 1.0f); + m_fSteerInput = Clamp(m_fSteerInput, -1.0f, 1.0f); // Accelerate/Brake float acceleration = (CPad::GetPad(pad)->GetAccelerate() - CPad::GetPad(pad)->GetBrake())/255.0f; @@ -2390,7 +2390,7 @@ CAutomobile::FireTruckControl(void) m_fCarGunLR += CPad::GetPad(0)->GetCarGunLeftRight() * 0.00025f * CTimer::GetTimeStep(); m_fCarGunUD += CPad::GetPad(0)->GetCarGunUpDown() * 0.0001f * CTimer::GetTimeStep(); } - m_fCarGunUD = clamp(m_fCarGunUD, 0.05f, 0.3f); + m_fCarGunUD = Clamp(m_fCarGunUD, 0.05f, 0.3f); CVector cannonPos(0.0f, 1.5f, 1.9f); @@ -2835,7 +2835,7 @@ CAutomobile::HydraulicControl(void) float limitDiff = extendedLowerLimit - normalLowerLimit; if(limitDiff != 0.0f && Abs(maxDelta/limitDiff) > 0.01f){ float f = (maxDelta + limitDiff)/2.0f/limitDiff; - f = clamp(f, 0.0f, 1.0f); + f = Clamp(f, 0.0f, 1.0f); DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_HYDRAULIC_3, f); if(f < 0.4f || f > 0.6f) setPrevRatio = true; diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index bbe17f0b..88444e95 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -123,9 +123,9 @@ CBoat::ProcessControl(void) r = 114.75f*(CTimeCycle::GetAmbientRed() + 0.5f*CTimeCycle::GetDirectionalRed()); g = 114.75f*(CTimeCycle::GetAmbientGreen() + 0.5f*CTimeCycle::GetDirectionalGreen()); b = 114.75f*(CTimeCycle::GetAmbientBlue() + 0.5f*CTimeCycle::GetDirectionalBlue()); - r = clamp(r, 0, 255); - g = clamp(g, 0, 255); - b = clamp(b, 0, 255); + r = Clamp(r, 0, 255); + g = Clamp(g, 0, 255); + b = Clamp(b, 0, 255); splashColor.red = r; splashColor.green = g; splashColor.blue = b; @@ -134,9 +134,9 @@ CBoat::ProcessControl(void) r = 242.25f*(CTimeCycle::GetAmbientRed() + 0.5f*CTimeCycle::GetDirectionalRed()); g = 242.25f*(CTimeCycle::GetAmbientGreen() + 0.5f*CTimeCycle::GetDirectionalGreen()); b = 242.25f*(CTimeCycle::GetAmbientBlue() + 0.5f*CTimeCycle::GetDirectionalBlue()); - r = clamp(r, 0, 255); - g = clamp(g, 0, 255); - b = clamp(b, 0, 255); + r = Clamp(r, 0, 255); + g = Clamp(g, 0, 255); + b = Clamp(b, 0, 255); jetColor.red = r; jetColor.green = g; jetColor.blue = b; @@ -542,17 +542,17 @@ CBoat::ProcessControlInputs(uint8 pad) m_nPadID = 3; m_fBrake += (CPad::GetPad(pad)->GetBrake()/255.0f - m_fBrake)*0.1f; - m_fBrake = clamp(m_fBrake, 0.0f, 1.0f); + m_fBrake = Clamp(m_fBrake, 0.0f, 1.0f); if(m_fBrake < 0.05f){ m_fBrake = 0.0f; m_fAccelerate += (CPad::GetPad(pad)->GetAccelerate()/255.0f - m_fAccelerate)*0.1f; - m_fAccelerate = clamp(m_fAccelerate, 0.0f, 1.0f); + m_fAccelerate = Clamp(m_fAccelerate, 0.0f, 1.0f); }else m_fAccelerate = -m_fBrake*0.2f; m_fSteeringLeftRight += (-CPad::GetPad(pad)->GetSteeringLeftRight()/128.0f - m_fSteeringLeftRight)*0.2f; - m_fSteeringLeftRight = clamp(m_fSteeringLeftRight, -1.0f, 1.0f); + m_fSteeringLeftRight = Clamp(m_fSteeringLeftRight, -1.0f, 1.0f); float steeringSq = m_fSteeringLeftRight < 0.0f ? -SQR(m_fSteeringLeftRight) : SQR(m_fSteeringLeftRight); m_fSteerAngle = pHandling->fSteeringLock * DEGTORAD(steeringSq); diff --git a/src/vehicles/Door.cpp b/src/vehicles/Door.cpp index c80965aa..1b3f9e8f 100644 --- a/src/vehicles/Door.cpp +++ b/src/vehicles/Door.cpp @@ -52,11 +52,11 @@ CDoor::Process(CVehicle *vehicle) fSpeedDiff = vecSpeedDiff.y - vecSpeedDiff.x; break; } - fSpeedDiff = clamp(fSpeedDiff, -0.2f, 0.2f); + fSpeedDiff = Clamp(fSpeedDiff, -0.2f, 0.2f); if(Abs(fSpeedDiff) > 0.002f) m_fAngVel += fSpeedDiff; m_fAngVel *= 0.945f; - m_fAngVel = clamp(m_fAngVel, -0.3f, 0.3f); + m_fAngVel = Clamp(m_fAngVel, -0.3f, 0.3f); m_fAngle += m_fAngVel; m_nDoorState = DOORST_SWINGING; diff --git a/src/vehicles/Heli.cpp b/src/vehicles/Heli.cpp index 98e1f5fa..6e302e01 100644 --- a/src/vehicles/Heli.cpp +++ b/src/vehicles/Heli.cpp @@ -250,7 +250,7 @@ CHeli::ProcessControl(void) // Move up if too low if(GetPosition().z - 2.0f < groundZ && m_heliStatus != HELI_STATUS_SHOT_DOWN) m_vecMoveSpeed.z += CTimer::GetTimeStep()*0.01f; - m_vecMoveSpeed.z = clamp(m_vecMoveSpeed.z, -0.3f, 0.3f); + m_vecMoveSpeed.z = Clamp(m_vecMoveSpeed.z, -0.3f, 0.3f); } float fTargetDist = vTargetDist.Magnitude(); diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 86159c4e..688dbf4e 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -430,8 +430,8 @@ CVehicle::FlyingControl(eFlightModel flightModel) } if (CPad::GetPad(0)->GetHorn()) { fYaw = 0.0f; - fPitch = clamp(10.0f * DotProduct(m_vecMoveSpeed, GetForward()), -200.0f, 1.3f); - fRoll = clamp(10.0f * DotProduct(m_vecMoveSpeed, GetRight()), -200.0f, 1.3f); + fPitch = Clamp(10.0f * DotProduct(m_vecMoveSpeed, GetForward()), -200.0f, 1.3f); + fRoll = Clamp(10.0f * DotProduct(m_vecMoveSpeed, GetRight()), -200.0f, 1.3f); } ApplyTurnForce(fPitch * GetUp() * fPitchVar * m_fTurnMass * CTimer::GetTimeStep(), GetForward()); ApplyTurnForce(fRoll * GetUp() * fRollVar * m_fTurnMass * CTimer::GetTimeStep(), GetRight()); diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index b4d04a4b..5704c111 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -203,7 +203,7 @@ CWeapon::Fire(CEntity *shooter, CVector *fireSource) else if ( shooter->IsPed() && ((CPed*)shooter)->m_pSeekTarget != nil ) { float distToTarget = (shooter->GetPosition() - ((CPed*)shooter)->m_pSeekTarget->GetPosition()).Magnitude(); - float power = clamp((distToTarget-10.0f)*0.02f, 0.2f, 1.0f); + float power = Clamp((distToTarget-10.0f)*0.02f, 0.2f, 1.0f); fired = FireProjectile(shooter, source, power); } From 22e8e0eff8bc7444fc1d359048263cb715ca11e3 Mon Sep 17 00:00:00 2001 From: erorcun Date: Mon, 28 Jun 2021 17:11:12 +0300 Subject: [PATCH 175/314] Fix MP3 finding stack crash --- src/audio/sampman_oal.cpp | 145 ++++++++++++-------------------------- src/skel/crossplatform.h | 2 +- 2 files changed, 48 insertions(+), 99 deletions(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 31c27154..c566893a 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -446,18 +446,32 @@ _FindMP3s(void) bool8 bInitFirstEntry; HANDLE hFind; char path[MAX_PATH]; - char filepath[MAX_PATH*2]; int total_ms; WIN32_FIND_DATA fd; + char filepath[MAX_PATH + sizeof(fd.cFileName)]; if (getcwd(_mp3DirectoryPath, MAX_PATH) == NULL) { perror("getcwd: "); return; } + + if (strlen(_mp3DirectoryPath) + 1 > MAX_PATH - 10) { + // This is not gonna end well + printf("MP3 folder path is too long, no place left for file names. MP3 finding aborted.\n"); + return; + } OutputDebugString("Finding MP3s..."); strcpy(path, _mp3DirectoryPath); strcat(path, "\\MP3\\"); + +#if !defined(_WIN32) + char *actualPath = casepath(path); + if (actualPath) { + strcpy(path, actualPath); + free(actualPath); + } +#endif strcpy(_mp3DirectoryPath, path); OutputDebugString(_mp3DirectoryPath); @@ -470,95 +484,32 @@ _FindMP3s(void) { return; } - - strcpy(filepath, _mp3DirectoryPath); - strcat(filepath, fd.cFileName); - - size_t filepathlen = strlen(filepath); - - if ( filepathlen <= 0) - { - FindClose(hFind); - return; - } - if ( _ResolveLink(filepath, filepath) ) - { - OutputDebugString("Resolving Link"); - OutputDebugString(filepath); - bShortcut = TRUE; - } else - bShortcut = FALSE; - - aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]); + bShortcut = FALSE; + bInitFirstEntry = TRUE; - if (aStream[0] && aStream[0]->IsOpened()) - { - total_ms = aStream[0]->GetLengthMS(); - delete aStream[0]; - aStream[0] = NULL; + do + { + strcpy(filepath, _mp3DirectoryPath); + strcat(filepath, fd.cFileName); + + if (!strcmp(fd.cFileName, ".") || !strcmp(fd.cFileName, "..")) + continue; - OutputDebugString(fd.cFileName); - - _pMP3List = new tMP3Entry; - - if ( _pMP3List == NULL ) - { - FindClose(hFind); - return; - } - - nNumMP3s = 1; - - strcpy(_pMP3List->aFilename, fd.cFileName); - - _pMP3List->nTrackLength = total_ms; - - _pMP3List->pNext = NULL; - - pList = _pMP3List; - - if ( bShortcut ) - { - _pMP3List->pLinkPath = new char[MAX_PATH*2]; - strcpy(_pMP3List->pLinkPath, filepath); - } - else - { - _pMP3List->pLinkPath = NULL; - } + size_t filepathlen = strlen(filepath); - bInitFirstEntry = FALSE; - } - else - { - strcat(filepath, " - NOT A VALID MP3"); - - OutputDebugString(filepath); - - bInitFirstEntry = TRUE; - } - - while ( TRUE ) - { - if ( !FindNextFile(hFind, &fd) ) - break; - if ( bInitFirstEntry ) { - strcpy(filepath, _mp3DirectoryPath); - strcat(filepath, fd.cFileName); - - size_t filepathlen = strlen(filepath); - - if ( filepathlen > 0 ) + if (filepathlen > 0) { - if ( _ResolveLink(filepath, filepath) ) + if (_ResolveLink(filepath, filepath)) { OutputDebugString("Resolving Link"); OutputDebugString(filepath); bShortcut = TRUE; - } else { + } + else + { bShortcut = FALSE; if (filepathlen > MAX_PATH) { continue; @@ -571,31 +522,31 @@ _FindMP3s(void) total_ms = aStream[0]->GetLengthMS(); delete aStream[0]; aStream[0] = NULL; - + OutputDebugString(fd.cFileName); - + _pMP3List = new tMP3Entry; - - if ( _pMP3List == NULL) + + if (_pMP3List == NULL) break; - + nNumMP3s = 1; - + strcpy(_pMP3List->aFilename, fd.cFileName); - + _pMP3List->nTrackLength = total_ms; _pMP3List->pNext = NULL; - - if ( bShortcut ) + + if (bShortcut) { - _pMP3List->pLinkPath = new char [MAX_PATH*2]; + _pMP3List->pLinkPath = new char[MAX_PATH + sizeof(fd.cFileName)]; strcpy(_pMP3List->pLinkPath, filepath); } else { _pMP3List->pLinkPath = NULL; } - + pList = _pMP3List; bInitFirstEntry = FALSE; @@ -606,14 +557,11 @@ _FindMP3s(void) OutputDebugString(filepath); } } + else + break; } else { - strcpy(filepath, _mp3DirectoryPath); - strcat(filepath, fd.cFileName); - - size_t filepathlen = strlen(filepath); - if ( filepathlen > 0 ) { if ( _ResolveLink(filepath, filepath) ) @@ -621,7 +569,8 @@ _FindMP3s(void) OutputDebugString("Resolving Link"); OutputDebugString(filepath); bShortcut = TRUE; - } else + } + else bShortcut = FALSE; aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]); @@ -647,7 +596,7 @@ _FindMP3s(void) if ( bShortcut ) { - e->pLinkPath = new char [MAX_PATH*2]; + e->pLinkPath = new char [MAX_PATH + sizeof(fd.cFileName)]; strcpy(e->pLinkPath, filepath); } else @@ -666,7 +615,7 @@ _FindMP3s(void) } } } - } + } while (FindNextFile(hFind, &fd)); FindClose(hFind); } diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index 710a7702..6da13fb3 100644 --- a/src/skel/crossplatform.h +++ b/src/skel/crossplatform.h @@ -143,7 +143,7 @@ typedef void* HANDLE; struct WIN32_FIND_DATA { char extension[32]; // for searching - char folder[32]; // for searching + char folder[MAX_PATH]; // for searching char cFileName[256]; // because tSkinInfo has it 256 time_t ftLastWriteTime; }; From 3383d8c6e7a807b88a703b4e1261fb8ba48f0096 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 30 Jun 2021 16:23:44 +0200 Subject: [PATCH 176/314] fix some string sizes to be MAX_PATH --- src/save/GenericGameStorage.cpp | 4 ++++ src/save/PCSave.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index a7cafec8..29069ad5 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -487,7 +487,11 @@ GetNameOfSavedGame(int32 slot) bool CheckDataNotCorrupt(int32 slot, char *name) { +#ifdef FIX_BUGS + char filename[MAX_PATH]; +#else char filename[100]; +#endif int32 blocknum = 0; eLevelName level = LEVEL_GENERIC; diff --git a/src/save/PCSave.cpp b/src/save/PCSave.cpp index d8ede0d3..a9df00af 100644 --- a/src/save/PCSave.cpp +++ b/src/save/PCSave.cpp @@ -25,7 +25,11 @@ C_PcSave::SetSaveDirectory(const char *path) bool C_PcSave::DeleteSlot(int32 slot) { +#ifdef FIX_BUGS + char FileName[MAX_PATH]; +#else char FileName[200]; +#endif PcSaveHelper.nErrorCode = SAVESTATUS_SUCCESSFUL; sprintf(FileName, "%s%i.b", DefaultPCSaveFileName, slot + 1); From a3964dfd4a6d84aded126f0314498b0da0aaf93a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 30 Jun 2021 21:36:11 +0300 Subject: [PATCH 177/314] Pause radio when game is paused --- src/audio/MusicManager.cpp | 17 ++++++++++++++++- src/core/config.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 957fce55..cb441622 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -306,7 +306,16 @@ cMusicManager::ChangeMusicMode(uint8 mode) uint8 mode2; switch (mode) { - case MUSICMODE_FRONTEND: mode2 = MUSICMODE_FRONTEND; break; + case MUSICMODE_FRONTEND: + mode2 = MUSICMODE_FRONTEND; +#ifdef PAUSE_RADIO_IN_FRONTEND + // rewind those streams we weren't listening right now + for (uint32 i = STREAMED_SOUND_RADIO_HEAD; i < STREAMED_SOUND_CUTSCENE_LUIGI1_LG; i++) { + m_aTracks[i].m_nPosition = GetTrackStartPos(i); + m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); + } +#endif + break; case MUSICMODE_GAME: mode2 = MUSICMODE_GAME; break; case MUSICMODE_CUTSCENE: mode2 = MUSICMODE_CUTSCENE; break; case MUSICMODE_DISABLE: mode2 = MUSICMODE_DISABLED; break; @@ -448,6 +457,12 @@ cMusicManager::Service() void cMusicManager::ServiceFrontEndMode() { +#ifdef PAUSE_RADIO_IN_FRONTEND + // pause radio + for (uint32 i = STREAMED_SOUND_RADIO_HEAD; i < STREAMED_SOUND_CUTSCENE_LUIGI1_LG; i++) + m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); +#endif + if (m_nNextTrack < TOTAL_STREAMED_SOUNDS) { if (m_bFrontendTrackFinished) { if (!SampleManager.IsStreamPlaying()) { diff --git a/src/core/config.h b/src/core/config.h index 8424f6ef..a78aee22 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -399,6 +399,7 @@ enum Config { //#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) //#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder #define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files +#define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused #ifdef AUDIO_OPUS #define AUDIO_OAL_USE_OPUS // enable support of opus files From 2071abd2953cf4602844f22cc91ca68a96984611 Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 1 Jul 2021 18:08:48 +0200 Subject: [PATCH 178/314] zero out work_buff before writing padding in save --- src/save/GenericGameStorage.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index 29069ad5..23a8fd6a 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -220,6 +220,11 @@ GenericSave(int file) WriteSaveDataBlock(CStreaming::MemoryCardSave); WriteSaveDataBlock(CPedType::Save); + // sure just write garbage data repeatedly ... +#ifndef THIS_IS_STUPID + memset(work_buff, 0, sizeof(work_buff)); +#endif + // Write padding for (int i = 0; i < 4; i++) { size = align4bytes(SIZE_OF_ONE_GAME_IN_BYTES - totalSize - 4); From b8e80a67ea1567d67765687f6b6f8b34ff074e52 Mon Sep 17 00:00:00 2001 From: mssx86 Date: Thu, 1 Jul 2021 20:12:28 +0300 Subject: [PATCH 179/314] fix: add missing limits.h includes to enable bulding on musl. --- src/core/CdStreamPosix.cpp | 1 + src/skel/crossplatform.h | 1 + 2 files changed, 2 insertions(+) diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp index 30fe06a0..bc9129eb 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #ifdef __linux__ #include diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index 6da13fb3..2dd9c162 100644 --- a/src/skel/crossplatform.h +++ b/src/skel/crossplatform.h @@ -1,4 +1,5 @@ #include +#include // This is the common include for platform/renderer specific skeletons(glfw.cpp, win.cpp etc.) and using cross platform things (like Windows directories wrapper, platform specific global arrays etc.) // Functions that's different on glfw and win but have same signature, should be located on platform.h. From de64bbe875fb0ff1dd8bdd0b2a33e713b344a98f Mon Sep 17 00:00:00 2001 From: mssx86 Date: Thu, 1 Jul 2021 20:14:46 +0300 Subject: [PATCH 180/314] fix: printHash.sh; replace echo -n, check if $1 is set. --- printHash.sh | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/printHash.sh b/printHash.sh index e7d6f018..213d9353 100755 --- a/printHash.sh +++ b/printHash.sh @@ -1,12 +1,14 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh +if [ -z "${1}" ] + then + printf "%s\n" "Input the path to the file for writing the commit hash to." + else + printf "%s" "#define GIT_SHA1 \"" > $1 -> $1 + if (command -v "git" >/dev/null) then + git rev-parse --short HEAD | tr -d '\n' >> $1 + fi -echo -n "#define GIT_SHA1 \"" > $1 - -if (command -v "git" >/dev/null) then -git rev-parse --short HEAD | tr -d '\n' >> $1 + printf "%s\n" "\"" >> $1 + printf "%s\n" "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1 fi - -echo "\"" >> $1 -echo "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1 \ No newline at end of file From f7816c577f8da9854982219e47d3de9a4d597b25 Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 1 Jul 2021 21:49:01 +0200 Subject: [PATCH 181/314] fix compilation when ctype.h is included --- src/save/SaveBuf.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h index 1b79c956..98fe888b 100644 --- a/src/save/SaveBuf.h +++ b/src/save/SaveBuf.h @@ -47,15 +47,15 @@ WriteSaveBuf(uint8 *&buf, const T &value) #ifdef VALIDATE_SAVE_SIZE #define CheckSaveHeader(buf, a, b, c, d, size) do { \ - char _C; uint32 _size;\ - ReadSaveBuf(&_C, buf);\ - assert(_C == a);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == b);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == c);\ - ReadSaveBuf(&_C, buf);\ - assert(_C == d);\ + char _c; uint32 _size;\ + ReadSaveBuf(&_c, buf);\ + assert(_c == a);\ + ReadSaveBuf(&_c, buf);\ + assert(_c == b);\ + ReadSaveBuf(&_c, buf);\ + assert(_c == c);\ + ReadSaveBuf(&_c, buf);\ + assert(_c == d);\ ReadSaveBuf(&_size, buf);\ assert(_size == size);\ } while(0) From 7df71c967319286d741b9e189b5764e6edc1ced7 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 2 Jul 2021 10:18:22 +0300 Subject: [PATCH 182/314] Refactor OnscreenTimer --- src/control/OnscreenTimer.cpp | 122 ++++++++++++++++++---------------- 1 file changed, 63 insertions(+), 59 deletions(-) diff --git a/src/control/OnscreenTimer.cpp b/src/control/OnscreenTimer.cpp index 8cc1ae69..08c68cb5 100644 --- a/src/control/OnscreenTimer.cpp +++ b/src/control/OnscreenTimer.cpp @@ -8,112 +8,111 @@ #include "Script.h" #include "OnscreenTimer.h" -void COnscreenTimer::Init() { +void +COnscreenTimer::Init() +{ m_bDisabled = false; for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { m_sEntries[i].m_nTimerOffset = 0; m_sEntries[i].m_nCounterOffset = 0; for(uint32 j = 0; j < 10; j++) { - m_sEntries[i].m_aTimerText[j] = 0; - m_sEntries[i].m_aCounterText[j] = 0; + m_sEntries[i].m_aTimerText[j] = '\0'; + m_sEntries[i].m_aCounterText[j] = '\0'; } m_sEntries[i].m_nType = COUNTER_DISPLAY_NUMBER; - m_sEntries[i].m_bTimerProcessed = 0; - m_sEntries[i].m_bCounterProcessed = 0; + m_sEntries[i].m_bTimerProcessed = false; + m_sEntries[i].m_bCounterProcessed = false; } } -void COnscreenTimer::Process() { - if(!CReplay::IsPlayingBack() && !m_bDisabled) { - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { +void +COnscreenTimer::Process() +{ + if(!CReplay::IsPlayingBack() && !m_bDisabled) + for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) m_sEntries[i].Process(); - } - } } -void COnscreenTimer::ProcessForDisplay() { +void +COnscreenTimer::ProcessForDisplay() +{ if(CHud::m_Wants_To_Draw_Hud) { m_bProcessed = false; - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { - if(m_sEntries[i].ProcessForDisplay()) { + for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) + if(m_sEntries[i].ProcessForDisplay()) m_bProcessed = true; - } - } } } -void COnscreenTimer::ClearCounter(uint32 offset) { +void +COnscreenTimer::ClearCounter(uint32 offset) +{ for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { if(offset == m_sEntries[i].m_nCounterOffset) { m_sEntries[i].m_nCounterOffset = 0; - m_sEntries[i].m_aCounterText[0] = 0; + m_sEntries[i].m_aCounterText[0] = '\0'; m_sEntries[i].m_nType = COUNTER_DISPLAY_NUMBER; - m_sEntries[i].m_bCounterProcessed = 0; + m_sEntries[i].m_bCounterProcessed = false; } } } -void COnscreenTimer::ClearClock(uint32 offset) { - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { +void +COnscreenTimer::ClearClock(uint32 offset) +{ + for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) if(offset == m_sEntries[i].m_nTimerOffset) { m_sEntries[i].m_nTimerOffset = 0; - m_sEntries[i].m_aTimerText[0] = 0; - m_sEntries[i].m_bTimerProcessed = 0; + m_sEntries[i].m_aTimerText[0] = '\0'; + m_sEntries[i].m_bTimerProcessed = false; } - } } -void COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text) { - uint32 i = 0; - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { +void +COnscreenTimer::AddCounter(uint32 offset, uint16 type, char* text) +{ + for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) if(m_sEntries[i].m_nCounterOffset == 0) { + m_sEntries[i].m_nCounterOffset = offset; + if (text) + strncpy(m_sEntries[i].m_aCounterText, text, 10); + else + m_sEntries[i].m_aCounterText[0] = '\0'; + m_sEntries[i].m_nType = type; break; } - return; - } - - m_sEntries[i].m_nCounterOffset = offset; - if(text) { - strncpy(m_sEntries[i].m_aCounterText, text, 10); - } else { - m_sEntries[i].m_aCounterText[0] = 0; - } - - m_sEntries[i].m_nType = type; } -void COnscreenTimer::AddClock(uint32 offset, char* text) { - uint32 i = 0; - for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) { +void +COnscreenTimer::AddClock(uint32 offset, char* text) +{ + for(uint32 i = 0; i < NUMONSCREENTIMERENTRIES; i++) if(m_sEntries[i].m_nTimerOffset == 0) { + m_sEntries[i].m_nTimerOffset = offset; + if (text) + strncpy(m_sEntries[i].m_aTimerText, text, 10); + else + m_sEntries[i].m_aTimerText[0] = '\0'; break; } - return; - } - - m_sEntries[i].m_nTimerOffset = offset; - if(text) { - strncpy(m_sEntries[i].m_aTimerText, text, 10); - } else { - m_sEntries[i].m_aTimerText[0] = 0; - } } -void COnscreenTimerEntry::Process() { - if(m_nTimerOffset == 0) { +void +COnscreenTimerEntry::Process() +{ + if(m_nTimerOffset == 0) return; - } int32* timerPtr = CTheScripts::GetPointerToScriptVariable(m_nTimerOffset); int32 oldTime = *timerPtr; int32 newTime = oldTime - int32(CTimer::GetTimeStepInMilliseconds()); if(newTime < 0) { *timerPtr = 0; - m_bTimerProcessed = 0; + m_bTimerProcessed = false; m_nTimerOffset = 0; - m_aTimerText[0] = 0; + m_aTimerText[0] = '\0'; } else { *timerPtr = newTime; int32 oldTimeSeconds = oldTime / 1000; @@ -123,13 +122,14 @@ void COnscreenTimerEntry::Process() { } } -bool COnscreenTimerEntry::ProcessForDisplay() { +bool +COnscreenTimerEntry::ProcessForDisplay() +{ m_bTimerProcessed = false; m_bCounterProcessed = false; - if(m_nTimerOffset == 0 && m_nCounterOffset == 0) { + if(m_nTimerOffset == 0 && m_nCounterOffset == 0) return false; - } if(m_nTimerOffset != 0) { m_bTimerProcessed = true; @@ -143,13 +143,17 @@ bool COnscreenTimerEntry::ProcessForDisplay() { return true; } -void COnscreenTimerEntry::ProcessForDisplayClock() { +void +COnscreenTimerEntry::ProcessForDisplayClock() +{ uint32 time = *CTheScripts::GetPointerToScriptVariable(m_nTimerOffset); sprintf(m_bTimerBuffer, "%02d:%02d", time / 1000 / 60, time / 1000 % 60); } -void COnscreenTimerEntry::ProcessForDisplayCounter() { +void +COnscreenTimerEntry::ProcessForDisplayCounter() +{ uint32 counter = *CTheScripts::GetPointerToScriptVariable(m_nCounterOffset); sprintf(m_bCounterBuffer, "%d", counter); } From 70fa7fc239f9ec09eda218531f240e92d26d5d3a Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 30 Jun 2021 03:31:10 +0300 Subject: [PATCH 183/314] Sanitizer fixes --- src/audio/sampman_oal.cpp | 12 ++++++------ src/peds/PedFight.cpp | 2 +- src/peds/PlayerPed.cpp | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index c566893a..7fb84965 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -1214,14 +1214,14 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) { ASSERT( nComment < TOTAL_AUDIO_SAMPLES ); - int8 slot; - for ( int32 i = 0; i < _TODOCONST(3); i++ ) { - slot = nCurrentPedSlot - i - 1; #ifdef FIX_BUGS + int8 slot = (int8)nCurrentPedSlot - i - 1; if (slot < 0) slot += ARRAY_SIZE(nPedSlotSfx); +#else + uint8 slot = nCurrentPedSlot - i - 1; #endif if ( nComment == nPedSlotSfx[slot] ) return TRUE; @@ -1234,14 +1234,14 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment) int32 cSampleManager::_GetPedCommentSlot(uint32 nComment) { - int8 slot; - for (int32 i = 0; i < _TODOCONST(3); i++) { - slot = nCurrentPedSlot - i - 1; #ifdef FIX_BUGS + int8 slot = (int8)nCurrentPedSlot - i - 1; if (slot < 0) slot += ARRAY_SIZE(nPedSlotSfx); +#else + uint8 slot = nCurrentPedSlot - i - 1; #endif if (nComment == nPedSlotSfx[slot]) return slot; diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index c03d492a..46ac369c 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -1044,7 +1044,7 @@ CPed::StartFightDefend(uint8 direction, uint8 hitLevel, uint8 unk) if (IsPlayer()) moveAssoc->speed = 1.3f; - m_takeAStepAfterAttack = 0; + m_takeAStepAfterAttack = false; m_fightButtonPressure = 0; } else if (IsPlayer() && m_currentWeapon != WEAPONTYPE_UNARMED) { CAnimBlendAssociation *moveAssoc = CAnimManager::BlendAnimation(GetClump(), ASSOCGRP_STD, tFightMoves[m_curFightMove].animId, 4.0f); diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index a67e2abc..93a403bd 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -682,8 +682,8 @@ CPlayerPed::PlayerControlFighter(CPad *padUsed) if (padMove > 0.0f) { m_fRotationDest = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown) - TheCamera.Orientation; - m_takeAStepAfterAttack = padMove > 2 * PAD_MOVE_TO_GAME_WORLD_MOVE; - if (padUsed->GetSprint() && padMove > 1 * PAD_MOVE_TO_GAME_WORLD_MOVE) + m_takeAStepAfterAttack = padMove > (2 * PAD_MOVE_TO_GAME_WORLD_MOVE); + if (padUsed->GetSprint() && padMove > (1 * PAD_MOVE_TO_GAME_WORLD_MOVE)) bIsAttacking = false; } From 424a6d90bd154e0b657e394b6dfced585fed01bd Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 2 Jul 2021 23:56:31 +0300 Subject: [PATCH 184/314] Peds: Efforts to find the reason of crashes on GCC 7.5.0 * Prevent deleted peds to be in nearPeds list (was always needed, might be unrelated to crashes) * Add asserts to nearPeds and PedIK ctor (crash reasons) * Shouldn't fix reported crashes since they were caused by null peds. --- src/peds/Ped.cpp | 28 +++++++++++++++++++++++++++- src/peds/PedIK.cpp | 4 ++-- src/peds/PedIK.h | 2 +- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 04e13c33..0acc4daf 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -308,6 +308,30 @@ CPed::~CPed(void) m_pFire->Extinguish(); CPopulation::UpdatePedCount((ePedType)m_nPedType, true); DMAudio.DestroyEntity(m_audioEntityId); + + // Because of the nature of ped lists in GTA, it can sometimes be outdated. + // Remove ourself from nearPeds list of the Peds in our nearPeds list. +#ifdef FIX_BUGS + for(int i = 0; i < m_numNearPeds; i++) { + CPed *nearPed = m_nearPeds[i]; + assert(nearPed != nil); + if (!nearPed->IsPointerValid()) + continue; + + for(int j = 0; j < nearPed->m_numNearPeds;) { + assert(j == ARRAY_SIZE(m_nearPeds) - 1 || nearPed->m_nearPeds[j] || !nearPed->m_nearPeds[j+1]); // ensure nil comes after nil + + if (nearPed->m_nearPeds[j] == this) { + for (int k = j; k < ARRAY_SIZE(m_nearPeds) - 1; k++) { + nearPed->m_nearPeds[k] = nearPed->m_nearPeds[k + 1]; + nearPed->m_nearPeds[k + 1] = nil; + } + nearPed->m_numNearPeds--; + } else + j++; + } + } +#endif } void @@ -398,13 +422,15 @@ CPed::BuildPedLists(void) } else removePed = true; } + + assert(i == ARRAY_SIZE(m_nearPeds) - 1 || m_nearPeds[i] || !m_nearPeds[i+1]); // ensure nil comes after nil + if (removePed) { // If we arrive here, the ped we're checking isn't "near", so we should remove it. for (int j = i; j < ARRAY_SIZE(m_nearPeds) - 1; j++) { m_nearPeds[j] = m_nearPeds[j + 1]; m_nearPeds[j + 1] = nil; } - // Above loop won't work on last slot, so we need to empty it. m_nearPeds[ARRAY_SIZE(m_nearPeds) - 1] = nil; m_numNearPeds--; } else diff --git a/src/peds/PedIK.cpp b/src/peds/PedIK.cpp index de2c23ce..8358a196 100644 --- a/src/peds/PedIK.cpp +++ b/src/peds/PedIK.cpp @@ -17,9 +17,9 @@ const RwV3d XaxisIK = { 1.0f, 0.0f, 0.0f}; const RwV3d YaxisIK = { 0.0f, 1.0f, 0.0f}; const RwV3d ZaxisIK = { 0.0f, 0.0f, 1.0f}; -CPedIK::CPedIK(CPed *ped) +CPedIK::CPedIK(CPed *ped) : m_ped(ped) { - m_ped = ped; + assert(ped != nil); m_flags = 0; m_headOrient.yaw = 0.0f; m_headOrient.pitch = 0.0f; diff --git a/src/peds/PedIK.h b/src/peds/PedIK.h index 4eeef6f0..9077fbea 100644 --- a/src/peds/PedIK.h +++ b/src/peds/PedIK.h @@ -34,7 +34,7 @@ public: AIMS_WITH_ARM = 4, }; - CPed *m_ped; + CPed *Const m_ped; LimbOrientation m_headOrient; LimbOrientation m_torsoOrient; LimbOrientation m_upperArmOrient; From a8549e86a7c29c38e6a0570b8ecd88f03db98e9a Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 3 Jul 2021 01:32:47 +0300 Subject: [PATCH 185/314] Sanitizer fixes 2 --- src/core/Crime.h | 2 +- src/peds/Ped.cpp | 33 +++++++++++++++++++++------------ src/peds/Ped.h | 2 +- src/weapons/Weapon.cpp | 4 ++++ 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/core/Crime.h b/src/core/Crime.h index 8dfae5b8..05829040 100644 --- a/src/core/Crime.h +++ b/src/core/Crime.h @@ -25,7 +25,7 @@ class CCrimeBeingQd { public: eCrimeType m_nType; - uint32 m_nId; + int32 m_nId; uint32 m_nTime; CVector m_vecPosn; bool m_bReported; diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 0acc4daf..bde6f8d7 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -3049,7 +3049,7 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints) CColModel *hisCol = CModelInfo::GetModelInfo(collidingEnt->GetModelIndex())->GetColModel(); if (!bUsesCollision) - return false; + return 0; if (collidingEnt->IsVehicle() && ((CVehicle*)collidingEnt)->IsBoat()) collidedWithBoat = true; @@ -6094,7 +6094,7 @@ CPed::FollowPath(void) } void -CPed::SetEvasiveStep(CEntity *reason, uint8 animType) +CPed::SetEvasiveStep(CPhysical *reason, uint8 animType) { AnimationId stepAnim; @@ -6112,22 +6112,29 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType) if (neededTurn > PI) neededTurn = TWOPI - neededTurn; - CVehicle *veh = (CVehicle*)reason; - if (reason->IsVehicle() && veh->m_vehType == VEHICLE_TYPE_CAR) { + if (reason->IsVehicle() && ((CVehicle*)reason)->IsCar()) { + CVehicle *veh = (CVehicle*)reason; if (veh->m_nCarHornTimer != 0) { vehPressedHorn = true; if (!IsPlayer()) animType = 1; } } - if (neededTurn <= DEGTORAD(90.0f) || veh->GetModelIndex() == MI_RCBANDIT || vehPressedHorn || animType != 0) { - SetLookFlag(veh, true); - if ((CGeneral::GetRandomNumber() & 1) && veh->GetModelIndex() != MI_RCBANDIT && animType == 0) { + +#ifdef FIX_BUGS + #define IS_RCBANDIT (reason->IsVehicle() && reason->GetModelIndex() == MI_RCBANDIT) +#else + #define IS_RCBANDIT (reason->GetModelIndex() == MI_RCBANDIT) +#endif + + if (neededTurn <= DEGTORAD(90.0f) || IS_RCBANDIT || vehPressedHorn || animType != 0) { + SetLookFlag(reason, true); + if ((CGeneral::GetRandomNumber() & 1) && !IS_RCBANDIT && animType == 0) { stepAnim = ANIM_STD_HAILTAXI; } else { - float vehDirection = CGeneral::GetRadianAngleBetweenPoints( - veh->m_vecMoveSpeed.x, veh->m_vecMoveSpeed.y, + float dangerDirection = CGeneral::GetRadianAngleBetweenPoints( + reason->m_vecMoveSpeed.x, reason->m_vecMoveSpeed.y, 0.0f, 0.0f); // Let's turn our back to the "reason" @@ -6137,14 +6144,14 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType) angleToFace -= TWOPI; // We don't want to run towards car's direction - float dangerZone = angleToFace - vehDirection; + float dangerZone = angleToFace - dangerDirection; dangerZone = CGeneral::LimitRadianAngle(dangerZone); // So, add or subtract 90deg (jump to left/right) according to that if (dangerZone > 0.0f) - angleToFace = vehDirection - HALFPI; + angleToFace = dangerDirection - HALFPI; else - angleToFace = vehDirection + HALFPI; + angleToFace = dangerDirection + HALFPI; stepAnim = ANIM_STD_NUM; if (animType == 0 || animType == 1) @@ -6166,6 +6173,8 @@ CPed::SetEvasiveStep(CEntity *reason, uint8 animType) SetPedState(PED_STEP_AWAY); } } + +#undef IS_RCBANDIT } void diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 6d32b65e..33839aa7 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -625,7 +625,7 @@ public: void SetAimFlag(CEntity* to); void SetAimFlag(float angle); void SetAmmo(eWeaponType weaponType, uint32 ammo); - void SetEvasiveStep(CEntity*, uint8); + void SetEvasiveStep(CPhysical*, uint8); void GrantAmmo(eWeaponType, uint32); void SetEvasiveDive(CPhysical*, uint8); void SetAttack(CEntity*); diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index 5704c111..43a85db8 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -2266,7 +2266,11 @@ CWeapon::HitsGround(CEntity *holder, CVector *fireSource, CEntity *aimingTo) void CWeapon::BlowUpExplosiveThings(CEntity *thing) { +#ifdef FIX_BUGS + if ( thing && thing->IsObject() ) +#else if ( thing ) +#endif { CObject *object = (CObject*)thing; int32 mi = object->GetModelIndex(); From 51042e15aa2698b2342ecb9b113e05624f5d71c9 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 3 Jul 2021 01:53:43 +0300 Subject: [PATCH 186/314] Remove redundant part of 'Sanitizer fixes 2' --- src/peds/Ped.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index bde6f8d7..4d80cac2 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -6121,15 +6121,9 @@ CPed::SetEvasiveStep(CPhysical *reason, uint8 animType) } } -#ifdef FIX_BUGS - #define IS_RCBANDIT (reason->IsVehicle() && reason->GetModelIndex() == MI_RCBANDIT) -#else - #define IS_RCBANDIT (reason->GetModelIndex() == MI_RCBANDIT) -#endif - - if (neededTurn <= DEGTORAD(90.0f) || IS_RCBANDIT || vehPressedHorn || animType != 0) { + if (neededTurn <= DEGTORAD(90.0f) || reason->GetModelIndex() == MI_RCBANDIT || vehPressedHorn || animType != 0) { SetLookFlag(reason, true); - if ((CGeneral::GetRandomNumber() & 1) && !IS_RCBANDIT && animType == 0) { + if ((CGeneral::GetRandomNumber() & 1) && reason->GetModelIndex() != MI_RCBANDIT && animType == 0) { stepAnim = ANIM_STD_HAILTAXI; } else { @@ -6173,8 +6167,6 @@ CPed::SetEvasiveStep(CPhysical *reason, uint8 animType) SetPedState(PED_STEP_AWAY); } } - -#undef IS_RCBANDIT } void From 63d9d9c1483b3046024bc6556abc8ac0570a6c5b Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 3 Jul 2021 01:32:04 +0200 Subject: [PATCH 187/314] disable PED_SKIN and PEDS_REPORT_CRIMES_ON_PHONE when COMPATIBLE_SAVES is disabled --- src/core/config.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/config.h b/src/core/config.h index a78aee22..7b8a5b27 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -430,6 +430,12 @@ enum Config { #define VC_RAIN_NERF // Reduces number of rain particles #endif +// if these defines are enabled saves are not vanilla compatible without COMPATIBLE_SAVES +#ifndef COMPATIBLE_SAVES +#undef PED_SKINS +#undef PEDS_REPORT_CRIMES_ON_PHONE +#endif + // ------- #if defined __MWERKS__ || defined VANILLA_DEFINES From be6e273930345cc693699a34ec6a5b33154fe70e Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 3 Jul 2021 01:59:02 +0200 Subject: [PATCH 188/314] premake: add no-full-paths option for CI builds, rename lto to with-lto --- .github/workflows/re3_msvc_amd64.yml | 2 +- .github/workflows/re3_msvc_x86.yml | 2 +- premake5.lua | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/re3_msvc_amd64.yml b/.github/workflows/re3_msvc_amd64.yml index 29ad024c..428da540 100644 --- a/.github/workflows/re3_msvc_amd64.yml +++ b/.github/workflows/re3_msvc_amd64.yml @@ -34,7 +34,7 @@ jobs: 7z x ${{env.GLFW_FILE}} - name: Configure build run: | - ./premake5 vs2019 --with-librw --glfwdir64=${{env.GLFW_BASE}} + ./premake5 vs2019 --with-librw --no-full-paths --glfwdir64=${{env.GLFW_BASE}} - name: Build run: | msbuild -m build/re3.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} diff --git a/.github/workflows/re3_msvc_x86.yml b/.github/workflows/re3_msvc_x86.yml index 087b0d19..87f0e430 100644 --- a/.github/workflows/re3_msvc_x86.yml +++ b/.github/workflows/re3_msvc_x86.yml @@ -34,7 +34,7 @@ jobs: 7z x ${{env.GLFW_FILE}} - name: Configure build run: | - ./premake5 vs2019 --with-librw --glfwdir32=${{env.GLFW_BASE}} + ./premake5 vs2019 --with-librw --no-full-paths --glfwdir32=${{env.GLFW_BASE}} - name: Build run: | msbuild -m build/re3.sln /property:Configuration=${{matrix.buildtype}} /property:Platform=${{matrix.platform}} diff --git a/premake5.lua b/premake5.lua index 7fc21907..cce2c7ac 100644 --- a/premake5.lua +++ b/premake5.lua @@ -27,14 +27,19 @@ newoption { description = "Build with opus" } +newoption { + trigger = "with-lto", + description = "Build with link time optimization" +} + newoption { trigger = "no-git-hash", description = "Don't print git commit hash into binary" } newoption { - trigger = "lto", - description = "Use link time optimization" + trigger = "no-full-paths", + description = "Don't print full paths into binary" } if(_OPTIONS["with-librw"]) then @@ -114,7 +119,7 @@ workspace "re3" filter "configurations:not Debug" defines { "NDEBUG" } optimize "Speed" - if(_OPTIONS["lto"]) then + if(_OPTIONS["with-lto"]) then flags { "LinkTimeOptimization" } end @@ -327,6 +332,10 @@ project "re3" linkoptions "/SAFESEH:NO" characterset ("MBCS") targetextension ".exe" + if(_OPTIONS["no-full-paths"]) then + usefullpaths "off" + linkoptions "/PDBALTPATH:%_PDB%" + end if(_OPTIONS["with-librw"]) then -- external librw is dynamic staticruntime "on" From 060c1181bcf2000a4cea1184d597b3b2c087e447 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 3 Jul 2021 02:52:54 +0200 Subject: [PATCH 189/314] fix previous PED_SKIN commit, add comments --- src/core/config.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/config.h b/src/core/config.h index 7b8a5b27..2d1b75ae 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -380,12 +380,12 @@ enum Config { #define CAMERA_PICKUP // Peds -#define PED_SKIN // support for skinned geometry on peds +#define PED_SKIN // support for skinned geometry on peds, requires COMPATIBLE_SAVES #define ANIMATE_PED_COL_MODEL // #define VC_PED_PORTS // various ports from VC's CPed, mostly subtle // #define NEW_WALK_AROUND_ALGORITHM // to make walking around vehicles/objects less awkward #define CANCELLABLE_CAR_ENTER -//#define PEDS_REPORT_CRIMES_ON_PHONE +//#define PEDS_REPORT_CRIMES_ON_PHONE, requires COMPATIBLE_SAVES // Camera //#define PS2_CAM_TRANSITION // old way of transitioning between cam modes @@ -432,7 +432,7 @@ enum Config { // if these defines are enabled saves are not vanilla compatible without COMPATIBLE_SAVES #ifndef COMPATIBLE_SAVES -#undef PED_SKINS +#undef PED_SKIN #undef PEDS_REPORT_CRIMES_ON_PHONE #endif From 3136ce64511e8c34764dd7774925f9e31f9ce2a1 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 3 Jul 2021 15:33:40 +0300 Subject: [PATCH 190/314] Fix Mac M1 premake --- premake5.lua | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/premake5.lua b/premake5.lua index cce2c7ac..72ff4d09 100644 --- a/premake5.lua +++ b/premake5.lua @@ -147,12 +147,18 @@ workspace "re3" filter { "platforms:*arm*" } architecture "ARM" - filter { "platforms:macosx-arm64-*" } + filter { "platforms:macosx-arm64-*", "files:**.cpp"} buildoptions { "-target", "arm64-apple-macos11", "-std=gnu++14" } - filter { "platforms:macosx-amd64-*" } + filter { "platforms:macosx-arm64-*", "files:**.c"} + buildoptions { "-target", "arm64-apple-macos11" } + + filter { "platforms:macosx-amd64-*", "files:**.cpp"} buildoptions { "-target", "x86_64-apple-macos10.12", "-std=gnu++14" } + filter { "platforms:macosx-amd64-*", "files:**.c"} + buildoptions { "-target", "x86_64-apple-macos10.12" } + filter { "platforms:*librw_d3d9*" } defines { "RW_D3D9" } if(not _OPTIONS["with-librw"]) then @@ -212,13 +218,19 @@ project "librw" includedirs { "/usr/local/include" } libdirs { "/usr/local/lib" } - filter "platforms:macosx*" - -- Support MacPorts and Homebrew + -- Support MacPorts and Homebrew + filter "platforms:macosx-arm64-*" + includedirs { "/opt/local/include" } + includedirs {"/opt/homebrew/include" } + libdirs { "/opt/local/lib" } + libdirs { "/opt/homebrew/lib" } + + filter "platforms:macosx-amd64-*" includedirs { "/opt/local/include" } includedirs {"/usr/local/include" } libdirs { "/opt/local/lib" } libdirs { "/usr/local/lib" } - + filter "platforms:*gl3_glfw*" staticruntime "off" @@ -375,6 +387,12 @@ project "re3" filter "platforms:macosx*oal" links { "openal", "mpg123", "sndfile", "pthread" } + + filter "platforms:macosx-arm64-*oal" + includedirs { "/opt/homebrew/opt/openal-soft/include" } + libdirs { "/opt/homebrew/opt/openal-soft/lib" } + + filter "platforms:macosx-amd64-*oal" includedirs { "/usr/local/opt/openal-soft/include" } libdirs { "/usr/local/opt/openal-soft/lib" } @@ -426,10 +444,18 @@ project "re3" includedirs { "/usr/local/include" } libdirs { "/usr/local/lib" } - filter "platforms:macosx*gl3_glfw*" + filter "platforms:macosx-arm64-*gl3_glfw*" links { "glfw" } linkoptions { "-framework OpenGL" } includedirs { "/opt/local/include" } - includedirs { "/usr/local/include" } + includedirs {"/opt/homebrew/include" } + libdirs { "/opt/local/lib" } + libdirs { "/opt/homebrew/lib" } + + filter "platforms:macosx-amd64-*gl3_glfw*" + links { "glfw" } + linkoptions { "-framework OpenGL" } + includedirs { "/opt/local/include" } + includedirs {"/usr/local/include" } libdirs { "/opt/local/lib" } libdirs { "/usr/local/lib" } From 77f31105de436108970f2041ef73013121234ba6 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 3 Jul 2021 15:57:08 +0300 Subject: [PATCH 191/314] Fix overflow in audio code --- src/audio/AudioManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index a3bc6a01..2e391349 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -977,7 +977,7 @@ void cAudioManager::AdjustSamplesVolume() { for (int i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) { - tSound *pSample = &m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] + 1]; + tSound *pSample = &m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; if (!pSample->m_bIs2D) pSample->m_nEmittingVolume = ComputeEmittingVolume(pSample->m_nEmittingVolume, pSample->m_fSoundIntensity, pSample->m_fDistance); From ec45ba68cd727e29048a1bf222b3412cdc9eea8e Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 3 Jul 2021 16:34:55 +0300 Subject: [PATCH 192/314] Add MacOS to Readme --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d49258eb..c085b317 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ In this repository you'll find the fully reversed source code for GTA III ([master](https://github.com/GTAmodding/re3/tree/master/) branch) and GTA VC ([miami](https://github.com/GTAmodding/re3/tree/miami/) branch). -It has been tested and works on Windows, Linux and FreeBSD, on x86, amd64, arm and arm64.\ +It has been tested and works on Windows, Linux, MacOS and FreeBSD, on x86, amd64, arm and arm64.\ Rendering is handled either by original RenderWare (D3D8) or the reimplementation [librw](https://github.com/aap/librw) (D3D9, OpenGL 2.1 or above, OpenGL ES 2.0 or above).\ Audio is done with MSS (using dlls from original GTA) or OpenAL. @@ -26,7 +26,7 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_d3d9-oal.zip) - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-18.04-gl3.zip) - - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) + - [MacOS 64bit x86-64](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) - Extract the downloaded zip over your GTA 3 directory and run re3. The zip includes the gamefiles and in case of OpenAL the required dlls. ## Screenshots @@ -115,6 +115,12 @@ conan build .. -if build -bf build -pf package ```

+
MacOS Premake + +For MacOS using premake, proceed: [Building on MacOS](https://github.com/GTAmodding/re3/wiki/Building-on-MacOS) + +
+
FreeBSD For FreeBSD using premake, proceed: [Building on FreeBSD](https://github.com/GTAmodding/re3/wiki/Building-on-FreeBSD) From 52e4cd19ce8f7b60f5b200f7a75837335054da2a Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 3 Jul 2021 23:10:50 +0200 Subject: [PATCH 193/314] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c085b317..53b5a761 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-18.04-gl3.zip) - [MacOS 64bit x86-64](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) -- Extract the downloaded zip over your GTA 3 directory and run re3. The zip includes the gamefiles and in case of OpenAL the required dlls. +- Extract the downloaded zip over your GTA 3 directory and run re3. The zip includes the binary, updated and additional gamefiles and in case of OpenAL the required dlls. ## Screenshots From 6edb8d96101b74630c5892f479233c19becd48c9 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Sun, 4 Jul 2021 18:14:24 +0200 Subject: [PATCH 194/314] Update librw --- .github/workflows/build-cmake-conan.yml | 2 +- vendor/librw | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-cmake-conan.yml b/.github/workflows/build-cmake-conan.yml index d8636175..6a3d9c87 100644 --- a/.github/workflows/build-cmake-conan.yml +++ b/.github/workflows/build-cmake-conan.yml @@ -85,7 +85,7 @@ jobs: fi - name: "Export Playstation 2 CMake toolchain conan recipe" run: | - conan export vendor/librw/cmake/ps2toolchain ps2dev-cmaketoolchain/master@ + conan export vendor/librw/cmake/ps2/cmaketoolchain ps2dev-cmaketoolchain/master@ - name: "Export librw conan recipe" run: | conan export vendor/librw librw/master@ diff --git a/vendor/librw b/vendor/librw index af20de45..a5bc9723 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit af20de45226f5152a035866da32517466e81142d +Subproject commit a5bc97232293250ae1bbd6ef6642532a541034ca From 8916fe1820940ad7a2b5550a53d04efc115e235c Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 5 Jul 2021 19:00:34 +0200 Subject: [PATCH 195/314] fix cmake workflow --- .github/workflows/build-cmake-conan.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-cmake-conan.yml b/.github/workflows/build-cmake-conan.yml index 6a3d9c87..5e8dad94 100644 --- a/.github/workflows/build-cmake-conan.yml +++ b/.github/workflows/build-cmake-conan.yml @@ -27,7 +27,7 @@ jobs: platform: 'gl3' gl3_gfxlib: 'glfw' audio: 'openal' -# - os: 'ubuntu-latest' +# - os: 'ubuntu-18.04' # platform: 'gl3' # gl3_gfxlib: 'sdl2' # audio: 'openal' @@ -63,8 +63,9 @@ jobs: python -m pip install conan conan config init conan config set log.print_run_commands=True - conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan - conan remote add madebr_ps2dev https://api.bintray.com/conan/madebr/ps2dev + conan config set general.revisions_enabled=1 + conan remote add bincrafters https://bincrafters.jfrog.io/artifactory/api/conan/public-conan +# conan remote add madebr_ps2dev https://api.bintray.com/conan/madebr/ps2dev - name: "Add os=playstation2 + gcc.version=3.2 to .conan/settings.yml" shell: python run: | From dadc56ccf9c334b2c5408886a79ad4d8f8c52b1b Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 7 Jul 2021 01:54:16 +0200 Subject: [PATCH 196/314] fix sampman_null build --- src/audio/sampman_null.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp index 95603c72..df912a9a 100644 --- a/src/audio/sampman_null.cpp +++ b/src/audio/sampman_null.cpp @@ -226,35 +226,35 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) void cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) { - ASSERT( nChannel != CHANNEL2D ); + ASSERT( nChannel < MAXCHANNELS ); ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } void cSampleManager::SetChannel3DPosition(uint32 nChannel, float fX, float fY, float fZ) { - ASSERT( nChannel != CHANNEL2D ); + ASSERT( nChannel < MAXCHANNELS ); ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } void cSampleManager::SetChannel3DDistances(uint32 nChannel, float fMax, float fMin) { - ASSERT( nChannel != CHANNEL2D ); + ASSERT( nChannel < MAXCHANNELS ); ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } void cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) { - ASSERT( nChannel == CHANNEL2D ); + ASSERT( nChannel >= MAXCHANNELS ); ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } void cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) { - ASSERT(nChannel == CHANNEL2D); + ASSERT( nChannel >= MAXCHANNELS ); ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } From f9a2f1daf75d5235742917359d3ec10395d46bbc Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 8 Jul 2021 01:40:58 +0200 Subject: [PATCH 197/314] fix macro redefinition warnings on win-glfw build --- src/audio/sampman_miles.cpp | 1 + src/control/Script.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 362da433..e820864c 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -1,3 +1,4 @@ +#define WITHWINDOWS #include "common.h" #ifdef AUDIO_MSS diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 5598f3c9..1517ec52 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -1770,8 +1770,9 @@ void CRunningScript::Init() int scriptToLoad = 0; #ifdef _WIN32 -#include +extern "C" __declspec(dllimport) short __stdcall GetAsyncKeyState(int); #endif + int open_script() { // glfwGetKey doesn't work because of CGame::Initialise is blocking From 47f153fe76880ae3a62d82b1193c2a5a4d466836 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 8 Jul 2021 03:24:47 +0300 Subject: [PATCH 198/314] Use CPad functions to check key states in script loader --- src/control/Script.cpp | 13 ++++--------- src/core/Frontend.cpp | 17 ++--------------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 1517ec52..e06acdc3 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -1769,21 +1769,16 @@ void CRunningScript::Init() #ifdef USE_DEBUG_SCRIPT_LOADER int scriptToLoad = 0; -#ifdef _WIN32 -extern "C" __declspec(dllimport) short __stdcall GetAsyncKeyState(int); -#endif - int open_script() { // glfwGetKey doesn't work because of CGame::Initialise is blocking -#ifdef _WIN32 - if (GetAsyncKeyState('G') & 0x8000) + CPad::UpdatePads(); + if (CPad::GetPad(0)->GetChar('G')) scriptToLoad = 0; - if (GetAsyncKeyState('R') & 0x8000) + if (CPad::GetPad(0)->GetChar('R')) scriptToLoad = 1; - if (GetAsyncKeyState('D') & 0x8000) + if (CPad::GetPad(0)->GetChar('D')) scriptToLoad = 2; -#endif switch (scriptToLoad) { case 0: return CFileMgr::OpenFile("main.scm", "rb"); case 1: return CFileMgr::OpenFile("main_freeroam.scm", "rb"); diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 125360ff..7ff80697 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -4290,29 +4290,16 @@ CMenuManager::ProcessButtonPresses(void) #ifdef USE_DEBUG_SCRIPT_LOADER if (m_nCurrScreen == MENUPAGE_START_MENU || m_nCurrScreen == MENUPAGE_NEW_GAME || m_nCurrScreen == MENUPAGE_NEW_GAME_RELOAD) { -#ifdef RW_GL3 - if (glfwGetKey(PSGLOBAL(window), GLFW_KEY_R) == GLFW_PRESS) { + if (CPad::GetPad(0)->GetChar('R')) { scriptToLoad = 1; DoSettingsBeforeStartingAGame(); return; } - if (glfwGetKey(PSGLOBAL(window), GLFW_KEY_D) == GLFW_PRESS) { + if (CPad::GetPad(0)->GetChar('D')) { scriptToLoad = 2; DoSettingsBeforeStartingAGame(); return; } -#elif defined _WIN32 - if (GetAsyncKeyState('R') & 0x8000) { - scriptToLoad = 1; - DoSettingsBeforeStartingAGame(); - return; - } - if (GetAsyncKeyState('D') & 0x8000) { - scriptToLoad = 2; - DoSettingsBeforeStartingAGame(); - return; - } -#endif } #endif From e2ae17d99414b92669e5fda7304adfbe52191c86 Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 9 Jul 2021 18:02:36 +0200 Subject: [PATCH 199/314] add librw defines to vanilla defines undefs --- src/core/config.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/config.h b/src/core/config.h index 2d1b75ae..c9339b74 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -476,6 +476,11 @@ enum Config { #undef ANISOTROPIC_FILTERING //#define USE_TEXTURE_POOL // not possible because R* used custom RW33 +#undef EXTENDED_COLOURFILTER +#undef EXTENDED_PIPELINES +#undef SCREEN_DROPLETS +#undef NEW_RENDERER + #undef FIX_SPRITES #define PC_PARTICLE From 37b6d491e7b9965dd344493f6220a4aca487901e Mon Sep 17 00:00:00 2001 From: withmorten Date: Fri, 9 Jul 2021 18:50:33 +0200 Subject: [PATCH 200/314] fix jittery cars at 15fps --- src/vehicles/Vehicle.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 688dbf4e..3d3ba8f2 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -498,11 +498,12 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon if(contactSpeedRight != 0.0f){ // exert opposing force right = -contactSpeedRight/wheelsOnGround; -#ifdef FIX_BUGS + // BUG? // contactSpeedRight is independent of framerate but right has timestep as a factor // so we probably have to fix this - right *= CTimer::GetTimeStepFix(); -#endif + // fixing this causes jittery cars at 15fps, and causes the car to move backwards slowly at 18fps + // at 19fps, the effects are gone ... + //right *= CTimer::GetTimeStepFix(); if(wheelStatus == WHEEL_STATUS_BURST){ float fwdspeed = Min(contactSpeedFwd, fBurstSpeedMax); From f184c43b9b486ce9c25772eb782955a77826bc39 Mon Sep 17 00:00:00 2001 From: IgorPolyakov Date: Wed, 7 Jul 2021 01:00:37 +0300 Subject: [PATCH 201/314] Update russian.txt --- gamefiles/TEXT/russian.gxt | Bin 222404 -> 222396 bytes utils/gxt/russian.txt | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/gamefiles/TEXT/russian.gxt b/gamefiles/TEXT/russian.gxt index aeb3f0b5108cb03163feb211ef3fe978da7a33bb..90c8b13dbfec268e32f2828012077a249a9bf33c 100644 GIT binary patch delta 32164 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�!aIg*-ki=`2boBF9IyO> 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 l_&?jeRC~`f?0xfFC)+;o_N3f Date: Sat, 10 Jul 2021 00:19:02 +0200 Subject: [PATCH 202/314] Update german.txt --- utils/gxt/german.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index f7687f69..7f211088 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -8065,7 +8065,7 @@ FREIE KAMERA JOYSTICK ERKENNEN [FEC_JPR] -Drücken Sie eine beliebige Taste auf dem Joystick den Sie für das Spiel verwenden möchten, und er wird ausgewählt. +Drücke eine beliebige Taste auf dem Joystick der für das Spiel verwendet werden soll, und er wird ausgewählt. [FEC_JDE] Joystick erkannt From 9a68f94c54f66d29859f2829f308c9361858c4be Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 10 Jul 2021 00:43:22 +0200 Subject: [PATCH 204/314] Update german.txt --- utils/gxt/german.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 7f211088..5fff3b50 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -8147,7 +8147,7 @@ XBOX 360 CONTROLLER XBOX ONE CONTROLLER [FEC_TYP] -GAMEPAD TYPE +GAMEPAD-TYP [FEC_CCF] KONFIGURATION @@ -8168,13 +8168,13 @@ KONFIGURATION 4 CONTROLLER-ANZEIGE [FEC_ONF] -ZU FUß +Zu Fuß [FEC_INC] -IM AUTO +Im Auto [FEC_VIB] -VIBRATION +Vibration : [FET_AGS] KONTROLLEREINSTELLUNGEN From d824a321b969cdcd441994b02227947a83d32701 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 10 Jul 2021 02:02:42 +0300 Subject: [PATCH 205/314] Update GXT compiler with fix of German --- utils/gxt/german.txt | 602 +++++++++++++++++++++---------------------- utils/gxt/gxt.exe | Bin 125440 -> 307200 bytes 2 files changed, 301 insertions(+), 301 deletions(-) diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 2ab4df6a..cb5596e4 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -12,7 +12,7 @@ abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"$,.'-?!!SDBF Claude---------------------- [ARSE] -ü ß ã +ü ß ä [IN_VEH] ~g~Hey! Zurück ins Auto!! @@ -24,7 +24,7 @@ Claude---------------------- ~g~Du brauchst ein Boot für diesen Job! [HEY] -~g~Keine Alleingãnge. Halt die Gang beisammen! +~g~Keine Alleingänge. Halt die Gang beisammen! [HEY2] ~g~Nicht aufteilen. Halt die Leute zusammen! @@ -36,7 +36,7 @@ Claude---------------------- ~g~Wenn du Misty verlierst, kriegst du's mit Luigi zu tun. Los, hol sie. [HEY5] -~g~Eines der Girls fehlt. Los, zurück! Treib das Mãdchen auf! +~g~Eines der Girls fehlt. Los, zurück! Treib das Mädchen auf! [HEY6] ~g~Du stehst mit deiner Ehre für den Yakuza Kanbu ein. Du musst ihn beschützen! @@ -78,16 +78,16 @@ Drücke die~h~ ~k~~VEHICLE_HANDBRAKE~-Taste~w~, um die ~h~Handbremse anzuziehen. Drücke die~h~ ~k~~VEHICLE_HANDBRAKE~-Taste~w~, um die ~h~Handbremse anzuziehen. [HELP7_A] -Halte die~h~ ~k~~PED_LOCK_TARGET~-Taste ~w~gedrückt, um mit dem Prãzisionsgewehr zu zielen. +Halte die~h~ ~k~~PED_LOCK_TARGET~-Taste ~w~gedrückt, um mit dem Präzisionsgewehr zu zielen. [HELP7_D] -Halte die~h~ ~k~~PED_LOCK_TARGET~-Taste ~w~gedrückt, um mit dem Prãzisionsgewehr zu zielen. +Halte die~h~ ~k~~PED_LOCK_TARGET~-Taste ~w~gedrückt, um mit dem Präzisionsgewehr zu zielen. [HELP8_A] Drücke die~h~ ~k~~PED_SNIPER_ZOOM_IN~-Taste~w~, um ~h~an das Ziel heranzuzoomen ~w~und die~h~ ~k~~PED_SNIPER_ZOOM_OUT~-Taste~w~,um ~h~herauszuzoomen ~w~. [HELP9_A] -Drücke die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um das Prãzisionsgewehr abzufeuern. +Drücke die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um das Präzisionsgewehr abzufeuern. [HELP10] Dieser Stern zeigt an, dass du von der Polizei gesucht wirst. @@ -114,7 +114,7 @@ Fahr den Wagen in eine Garage und geh dann nach draußen. ~g~Schüttle die Cops ab. Verringere deinen Fahndungslevel. [NODOORS] -~g~Das sind keine Sardinen! Besorg einen Wagen mit ausreichend Sitzplãtzen. +~g~Das sind keine Sardinen! Besorg einen Wagen mit ausreichend Sitzplätzen. [TRASH] ~g~Du hast deine Karre ziemlich geschrottet! Repariere sie! @@ -219,7 +219,7 @@ Molotowcocktails wurden im Versteck angeliefert. AK47 wurde im Versteck angeliefert. [PAGEB8] -Prãzisionsgewehr wurde im Versteck angeliefert. +Präzisionsgewehr wurde im Versteck angeliefert. [PAGEB9] M16 wurde im Versteck angeliefert. @@ -249,7 +249,7 @@ drei... Steigt dein ~h~Fahndungslevel~w~, wirst du von besser ausgebildeten Polizisten gejagt. [WANT_G] -Wirst du ~h~verhaftet~w~, wirst du zum nãchsten Polizeirevier gebracht. +Wirst du ~h~verhaftet~w~, wirst du zum nächsten Polizeirevier gebracht. [WANT_H] Die Cops werden dir alle Waffen abnehmen und kassieren ein wenig Bestechungsgeld von dir. @@ -264,13 +264,13 @@ Im Verlauf des Spiels wirst du Möglichkeiten entdecken, deinen Fahndungslevel z Wenn du in einem Wagen sitzt, werden ~h~LACKIEREREIEN~w~ den Fahndungslevel ~h~annullieren. [HEAL_B] -Wenn du ~h~'außer Gefecht'~w~ bist, wirst du zur nãchsten Klinik gebracht. +Wenn du ~h~'außer Gefecht'~w~ bist, wirst du zur nächsten Klinik gebracht. [HEAL_C] -Du verlierst alle Waffen, und die Ãrzte knöpfen dir ein wenig Cash für die Behandlung ab. +Du verlierst alle Waffen, und die Ärzte knöpfen dir ein wenig Cash für die Behandlung ab. [HEAL_E] -Je lãnger du spielst, desto mehr Wege wirst du finden, dich selbst zu verarzten oder zu schützen. +Je länger du spielst, desto mehr Wege wirst du finden, dich selbst zu verarzten oder zu schützen. [DAM] SCHADEN: @@ -297,7 +297,7 @@ GESAMMELT: Fahr deinen Wagen in die Bombenwerkstatt, um eine ~h~Bombe~w~ anzubringen. Kosten - ~h~$1000. [SAVE1] -Geh durch den Eingang. So kannst du dein ~h~Spiel speichern~w~. Wãhrend einer Mission kannst du nicht speichern. +Geh durch den Eingang. So kannst du dein ~h~Spiel speichern~w~. Während einer Mission kannst du nicht speichern. [SAVE2] Jedes Fahrzeug, das in dieser Garage abgestellt wird, wird für dich aufbewahrt, wenn das Spiel gespeichert wird. @@ -573,28 +573,28 @@ Luigis Club ~g~Du bist bereits auf einer Mission! [LUIGGO] -~g~Luigi checkt gerade ein paar neue Girls aus. Komm spãter wieder! +~g~Luigi checkt gerade ein paar neue Girls aus. Komm später wieder! [JOEYGO] -~g~Joey ist mit Misty in der Stadt unterwegs. Komm spãter wieder! +~g~Joey ist mit Misty in der Stadt unterwegs. Komm später wieder! [TONIGO] ~g~Toni ist mit seiner Mamma in der Oper. Probier's ein andermal! [KEMUGO] -~g~Maria und Kemuri sind gerade beschãftigt. Versuch's spãter nochmal! +~g~Maria und Kemuri sind gerade beschäftigt. Versuch's später nochmal! [KENJGO] ~g~Kenji ist bei einem Yakuza-Treffen. Schau ein andermal wieder vorbei. [RAYGO] -~g~Ray hãngt gerade auf irgend einem anderen Klo rum. Komm spãter wieder! +~g~Ray hängt gerade auf irgend einem anderen Klo rum. Komm später wieder! [LOVEGO] -~g~Donald Love hat anderes zu tun. Vielleicht hat er spãter Zeit! +~g~Donald Love hat anderes zu tun. Vielleicht hat er später Zeit! [KENSGO] -~g~Kenji hat zu tun! Komm spãter wieder! +~g~Kenji hat zu tun! Komm später wieder! [ASUSGO] ~g~Asuka hat gerade überhaupt keine Zeit! @@ -630,10 +630,10 @@ Halte die ~h~~k~~PED_LOCK_TARGET~-Taste~w~ gedrückt und drücke die ~h~~k~~PED_ Halte die ~h~~k~~PED_LOCK_TARGET~-Taste~w~ gedrückt und drücke die ~h~~k~~PED_CYCLE_TARGET_LEFT~-Taste~w~ oder die ~h~~k~~PED_CYCLE_TARGET_RIGHT~-Taste, um das Ziel zu wechseln. [GUN_4A] -Mit gedrückter ~h~~k~~PED_LOCK_TARGET~-Taste~w~ kannst du gehen oder laufen und behãltst dein Ziel im Visier. +Mit gedrückter ~h~~k~~PED_LOCK_TARGET~-Taste~w~ kannst du gehen oder laufen und behältst dein Ziel im Visier. [GUN_4B] -Mit gedrückter ~h~~k~~PED_LOCK_TARGET~-Taste~w~ kannst du gehen oder laufen und behãltst dein Ziel im Visier. +Mit gedrückter ~h~~k~~PED_LOCK_TARGET~-Taste~w~ kannst du gehen oder laufen und behältst dein Ziel im Visier. [GUN_5] An diesen Pappkameraden kannst du zielen und schießen üben. Wenn du fertig bist, widme dich wieder deiner Mission. @@ -690,7 +690,7 @@ An diesen Pappkameraden kannst du zielen und schießen üben. Wenn du fertig bis ~g~Fahrtziel: ~w~'Museum' ~g~in Newport. [FARE18] -~g~Fahrtziel: ~w~'AmCo Gebãude' ~g~in Torrington. +~g~Fahrtziel: ~w~'AmCo Gebäude' ~g~in Torrington. [FARE19] ~g~Fahrtziel: ~w~'Bolt Burgers' ~g~in Bedford Point. @@ -714,7 +714,7 @@ An diesen Pappkameraden kannst du zielen und schießen üben. Wenn du fertig bis ~g~Fahrtziel: ~w~'North West Towers' ~g~in Wichita Gardens. [NEW_TAX] -GRÖSSER! SCHNELLER! HÃRTER! Neu! Borgnine Taxis jetzt in Harwood! Rufen Sie 555-BORGNINE! Heute noch! +GRÖSSER! SCHNELLER! HÄRTER! Neu! Borgnine Taxis jetzt in Harwood! Rufen Sie 555-BORGNINE! Heute noch! [TSCORE2] $~1~ @@ -738,7 +738,7 @@ Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~-Taste~w~, um Taxi-Missionen an- oder abzu ~r~Krankenwagen voll!! [A_RANGE] -~g~Du bist außer Reichweite des Notarztfunks. Fahr nãher an die Klinik heran! +~g~Du bist außer Reichweite des Notarztfunks. Fahr näher an die Klinik heran! [FTUTOR] Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~-Taste~w~, um Feuerwehr Missionen an- oder abzuschalten. @@ -750,22 +750,22 @@ Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~-Taste~w~, um Feuerwehr Missionen an- oder Feuer gelöscht! [F_RANGE] -~g~Du bist außer Reichweite des Feuerwehrfunks. Fahr nãher an eine Feuerwache heran! +~g~Du bist außer Reichweite des Feuerwehrfunks. Fahr näher an eine Feuerwache heran! [C_BREIF] -~g~Verdãchtiger wurde zuletzt in der Gegend von ~a~ gesichtet. +~g~Verdächtiger wurde zuletzt in der Gegend von ~a~ gesichtet. [C_RANGE] -~g~Du bist außer Reichweite des Polizeifunks. Fahr nãher an ein Polizeirevier heran! +~g~Du bist außer Reichweite des Polizeifunks. Fahr näher an ein Polizeirevier heran! [DODO_FT] Du bist ~1~ Sekunden geflogen! [EBAL_A] -Ich kenn ein Plãtzchen im Rotlichtbezirk, wo wir untertauchen können. +Ich kenn ein Plätzchen im Rotlichtbezirk, wo wir untertauchen können. [EBAL_A1] -Aber meine Hãnde sind im Eimer. Also, fahr du. +Aber meine Hände sind im Eimer. Also, fahr du. [EBAL_1] Drücke die~h~ ~k~~VEHICLE_ENTER_EXIT~-Taste~w~, um in ein Fahrzeug ~h~ein- oder auszusteigen~w~. @@ -801,7 +801,7 @@ Du könntest mir einen Gefallen tun. Eines meiner Girls braucht 'nen Fahrer. Schnapp dir ein Auto, hol Misty von der Klinik ab und bring sie her. [EBAL_N] -Also lass die Hãnde am Lenkrad! +Also lass die Hände am Lenkrad! [EBAL_4] ~r~8-Ball ist tot! @@ -837,7 +837,7 @@ Also lass die Hãnde am Lenkrad! Halte neben Misty an und lass sie einsteigen. [LM1_8] -Du kannst dir bei Luigi den nãchsten Job abholen oder Liberty City erkunden. +Du kannst dir bei Luigi den nächsten Job abholen oder Liberty City erkunden. [LM2_A] Da ist eine neue Droge in Umlauf, sie heißt SPANK. @@ -846,7 +846,7 @@ Da ist eine neue Droge in Umlauf, sie heißt SPANK. Irgendein Kerl hat diesen Müll meinen Girls in Portland Harbour verabreicht. [LM2_B] -Fahr hin und verabreich ihm ein paar mit 'nem Baseballschlãger! +Fahr hin und verabreich ihm ein paar mit 'nem Baseballschläger! [LM2_G] Der Typ soll bezahlen für diese Beleidigung! @@ -855,13 +855,13 @@ Der Typ soll bezahlen für diese Beleidigung! ~g~Nimm sein Auto und spritz es um. [LM2_2A] -Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ oder um ~h~den Schlãger zu schwingen~w~! +Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ oder um ~h~den Schläger zu schwingen~w~! [LM2_2C] -Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ oder um ~h~den Schlãger zu schwingen~w~! +Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ oder um ~h~den Schläger zu schwingen~w~! [LM2_2D] -Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ oder um ~h~den Schlãger zu schwingen~w~! +Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ oder um ~h~den Schläger zu schwingen~w~! [LM2_3] ~g~Stell das Auto in Luigis Garage ab! @@ -870,7 +870,7 @@ Benutze die~h~ ~k~~PED_FIREWEAPON~-Taste~w~, um zu ~h~schlagen und zu treten~w~ ~g~Lackiere das Auto um! [LM3_A] -He, ich muss mit dir reden... Okay, Mick, wir reden spãter. +He, ich muss mit dir reden... Okay, Mick, wir reden später. [LM3_B] Na? Alles klar, mein Junge? @@ -900,7 +900,7 @@ Drücke die~h~ L3-Taste~w~, um zu ~h~hupen~w~. So weiß Misty, dass du da bist. ~g~Hol Misty ab! [LM3_5] -Du arbeitest jetzt fest für Luigi? War auch Zeit, dass er 'nen verlãsslichen Fahrer anbringt. +Du arbeitest jetzt fest für Luigi? War auch Zeit, dass er 'nen verlässlichen Fahrer anbringt. [LM3_7] Ich bin gleich bei dir, Süße. @@ -918,7 +918,7 @@ Wenn du 'ne Knarre brauchst, geh zum Hintereingang von AmmuNation, gegenüber de Der Polizeiball findet in der alten Schulhalle nahe der Callahan Bridge statt, [LM5_B] -und bei solchen Bãllen möchten auch Cops ein wenig 'Action' haben. +und bei solchen Bällen möchten auch Cops ein wenig 'Action' haben. [LM5_C] Ich hab Girls in der ganzen Stadt stehen. @@ -927,7 +927,7 @@ Ich hab Girls in der ganzen Stadt stehen. Bring sie zu dem Ball. Das bringt 'nen Haufen Kohle. [LM5_1] -~g~Wenn du zu viele Ladies ins Auto stopfst, holen sie sich Schrammen! ~g~Liefere erst diese Mãdchen ab und hol dann den Rest. +~g~Wenn du zu viele Ladies ins Auto stopfst, holen sie sich Schrammen! ~g~Liefere erst diese Mädchen ab und hol dann den Rest. [LM5_2] ~r~Eins von Luigis Girls ist hinüber! @@ -1011,7 +1011,7 @@ Er startet jeden Tag an der Grenze zu Chinatown. Kugeln können der Karre nichts anhaben. Also besorg dir einen Wagen und ramm ihn von der Straße. [JM3_D] -Fahr ihm voll rein, dann dürften die Wachmãnner schnell abhauen. +Fahr ihm voll rein, dann dürften die Wachmänner schnell abhauen. [JM3_E] Fahr den Transporter dann zum Lagerhaus bei den Docks, von da an übernehmen meine Leute. @@ -1026,7 +1026,7 @@ Der Transporter ist nicht ewig unterwegs, also beeil dich. ~g~Ramm den Wagen, bis der Schadenswert unter 70 Prozent liegt. [JM4_B] -Oh! Da ist der Typ, von dem ich dir erzãhlt habe! +Oh! Da ist der Typ, von dem ich dir erzählt habe! [JM4_C] Okay, hör zu. Der Typ ist kein Italiener und kein Mechaniker, aber er kann alles 'richten'. @@ -1041,7 +1041,7 @@ Ja, ich bin Toni Cipriani. Bring ihn zu Mammas Restaurant in St. Mark's. [JM4_G] -Hör zu, ich plane eine Sache, da brauche ich einen guten Fahrer. Also komm spãter wieder, okay? +Hör zu, ich plane eine Sache, da brauche ich einen guten Fahrer. Also komm später wieder, okay? [JM4_2] Warte hier. Lass den Motor laufen. Das ist kein Freundschaftsbesuch. @@ -1092,7 +1092,7 @@ Die überfallen eine Bank und brauchen einen Fahrer. Ich hab ihnen gesagt, du bist der richtige. Also, vermassle es nicht. [JM6_E] -Bring sie vor 5 Uhr zu der Bank, keine Minute spãter. +Bring sie vor 5 Uhr zu der Bank, keine Minute später. [JM6_2] Lass den Motor laufen. Wir sind gleich wieder da. @@ -1101,16 +1101,16 @@ Lass den Motor laufen. Wir sind gleich wieder da. Bring uns hier weg!! [JM6_4] -Hãng die Cops ab und bring uns in die sichere Wohnung! +Häng die Cops ab und bring uns in die sichere Wohnung! [JM6_6] -~g~Los, besorge ein weniger verdãchtiges Fahrzeug! +~g~Los, besorge ein weniger verdächtiges Fahrzeug! [JM6_7] ~g~Du brauchst alle 3 für den Überfall! [TM1] -'SCHMUTZIGE WÃSCHE' +'SCHMUTZIGE WÄSCHE' [TM2] 'DER GELDBOTE' @@ -1131,7 +1131,7 @@ Ich habe einen dringenden Job für dich! -Toni ~w~Setz dich, Junge. Los, mach's dir bequem. [TM1_B] -~w~Die Wãscherei will also kein Schutzgeld zahlen, was? +~w~Die Wäscherei will also kein Schutzgeld zahlen, was? [TM1_C] ~w~Denken die Triaden, sie können mich verscheißern? @@ -1149,7 +1149,7 @@ Ich habe einen dringenden Job für dich! -Toni ~w~Sorry, Ma. Ja, Ma. [TM1_H] -~w~Ich will, dass du ihre Wãscherei-Transporter zerstörst +~w~Ich will, dass du ihre Wäscherei-Transporter zerstörst [TM1_I] ~w~und jeden Triaden-Tölpel niedermachst, der dir in die Quere kommt. @@ -1164,7 +1164,7 @@ Ich habe einen dringenden Job für dich! -Toni Er wird nie so sein wie sein Papa. Auf dem Tisch hat er dir eine Nachricht hinterlassen. [TM2_B] -~w~Die Wãscherei will jetzt bezahlen. Gute Arbeit, mein Junge! +~w~Die Wäscherei will jetzt bezahlen. Gute Arbeit, mein Junge! [TM2_C] ~w~Hol das Geld ab und bring es hierher. Pass auf die Triaden auf. @@ -1221,7 +1221,7 @@ Er wird nie so sein wie sein Papa. Auf dem Tisch hat er dir eine Nachricht hinte ~g~Jetzt hol Toni ab. [TM3_4] -~g~Jetzt fahr die Mãnner zu Salvatore. +~g~Jetzt fahr die Männer zu Salvatore. [TM3_5] ~y~Ein Hinterhalt der Triaden!! @@ -1230,10 +1230,10 @@ Er wird nie so sein wie sein Papa. Auf dem Tisch hat er dir eine Nachricht hinte ~w~Es herrscht KRIEG! Die Triaden betreiben zur Tarnung einen Fischmarkt in Chinatown. [TM4_C] -~w~Die meisten ihrer Geschãfte werden auf diesem Fischmarkt durchgezogen. +~w~Die meisten ihrer Geschäfte werden auf diesem Fischmarkt durchgezogen. [TM4_D] -~w~Diese Wãscherei schuldet uns immer noch Geld. +~w~Diese Wäscherei schuldet uns immer noch Geld. [TM4_E] ~w~Die denken, die Triaden beschützen sie jetzt. Ich schlage vor, wir führen eine Strafaktion durch. @@ -1257,7 +1257,7 @@ TEXT NO LONGER REQUIRED ~w~Wir machen die Triaden ein für alle Mal fertig. [TM5_D] -8-Ball hat einen Müllkarren mit einer Bombe prãpariert. +8-Ball hat einen Müllkarren mit einer Bombe präpariert. [TM5_E] ~w~Sie hat einen Zeitzünder. Wenn du's vermasselst, hinterlassen wir keine Spuren. Hol den Müllkarren ab. @@ -1293,7 +1293,7 @@ TEXT NO LONGER REQUIRED ~w~HEY, MARIA! WO BLEIBST DU? [FM1_D] -~w~Dãmliche Ziege. Jedes Mal dasselbe. +~w~Dämliche Ziege. Jedes Mal dasselbe. [FM1_E] ~w~Und hier ist sie, die Königin der Nacht höchstpersönlich! @@ -1314,7 +1314,7 @@ TEXT NO LONGER REQUIRED ~w~Nimm die Limo, aber bring sie mir heil wieder, hörst du? [FM1_K] -~w~Und pass auf sie auf, sie kann eine Menge Ãrger machen. +~w~Und pass auf sie auf, sie kann eine Menge Ärger machen. [FM1_L] ~w~Ja, ja, ja! Dein neues Schoßhündchen wird schon alles im Griff haben. @@ -1341,7 +1341,7 @@ TEXT NO LONGER REQUIRED ~g~Steig in die Limo! [FM1_3] -~r~Wenn du Maria im Stich lãsst, bringt Salvatore dich um. Kehr um und hol sie! +~r~Wenn du Maria im Stich lässt, bringt Salvatore dich um. Kehr um und hol sie! [FM1_4] ~g~Du hast die Frau des Don im Stich gelassen! Los, zurück zur Lagerhalle! Warte dort auf Maria! @@ -1374,16 +1374,16 @@ Es gibt da einen Typ namens Curly Bob. Er arbeitet in Luigis Bar. Der verpulvert schon dauernd mehr Geld als er verdient. [FM2_N] -Normalerweise fãhrt er nach der Arbeit mit dem Taxi nach Hause. Folge ihm. +Normalerweise fährt er nach der Arbeit mit dem Taxi nach Hause. Folge ihm. [FM2_O] -Und wenn er der Verrãter ist, mach ihn fertig. +Und wenn er der Verräter ist, mach ihn fertig. [FM2_F] -Da kommt ja unser kleiner, gesprãchiger Freund. +Da kommt ja unser kleiner, gesprächiger Freund. [FM2_G] -Ist man dir gefolgt? Du weißt, was hier lãuft, muss unter uns bleiben. +Ist man dir gefolgt? Du weißt, was hier läuft, muss unter uns bleiben. [FM2_H] Nein, nein, niemand ist mir gefolgt. Hast du meinen Stoff? @@ -1395,7 +1395,7 @@ Hier ist dein SPANK, du Ratte, und jetzt rede. Okay. Die Leones führen einen Zwei-Fronten-Krieg. [FM2_Q] -Sie kãmpfen mit den Triaden um ein Territorium, und keiner der beiden gibt nach. +Sie kämpfen mit den Triaden um ein Territorium, und keiner der beiden gibt nach. [FM2_R] Gleichzeitig hat Joey Leone Streit mit den Forellis angefangen. @@ -1404,7 +1404,7 @@ Gleichzeitig hat Joey Leone Streit mit den Forellis angefangen. Jeden Tag verlieren sie Leute und Einfluss in der Stadt. [FM2_T] -Salvatore wird gefãhrlich und paranoid. Er verdãchtigt alles und jeden. +Salvatore wird gefährlich und paranoid. Er verdächtigt alles und jeden. [FM2_U] Bei treuen Gefolgsleuten wie dir, wie kann er sich da nur Sorgen machen? @@ -1443,7 +1443,7 @@ Bei treuen Gefolgsleuten wie dir, wie kann er sich da nur Sorgen machen? ~w~Wir sollten diese kolumbianischen Mistkerle fertigmachen, [FM3_B] -~w~aber durch den Krieg mit den Triaden sind wir dazu zu geschwãcht. +~w~aber durch den Krieg mit den Triaden sind wir dazu zu geschwächt. [FM3_C] ~w~Das Kartell hat unendlich Geld aus dem Handel mit diesem Mistzeug SPANK. @@ -1479,7 +1479,7 @@ Bei treuen Gefolgsleuten wie dir, wie kann er sich da nur Sorgen machen? ~w~Okay, dann wollen wir mal! [FM3_8F] -~w~Ich kann das Baby scharf machen, aber eine Knarre kann ich mit diesen Hãnden immer noch nicht halten. +~w~Ich kann das Baby scharf machen, aber eine Knarre kann ich mit diesen Händen immer noch nicht halten. [FM3_8G] ~w~Hier, das Gewehr hier wirst du sicher brauchen. @@ -1491,7 +1491,7 @@ Bei treuen Gefolgsleuten wie dir, wie kann er sich da nur Sorgen machen? ~r~8-Ball hat's erwischt! [FM3_8] -~r~Die Wachmãnner wurden alarmiert! +~r~Die Wachmänner wurden alarmiert! [FM4_A] ~w~Ah, sieh an! Mein bester Troubleshooter. @@ -1524,10 +1524,10 @@ Bei treuen Gefolgsleuten wie dir, wie kann er sich da nur Sorgen machen? 'V-MANN TANNER' [AM1_A] -Wir müssen ein paar Dinge klãren, bevor wir unsere Beziehungen fortsetzen, +Wir müssen ein paar Dinge klären, bevor wir unsere Beziehungen fortsetzen, [AM1_B] -geschãftlich oder sonstwie. Legen wir also die Karten auf den Tisch. +geschäftlich oder sonstwie. Legen wir also die Karten auf den Tisch. [AM1_C] Ich bin eine Yakuza und ich weiß, dass du für Salvatore Leones Familie gearbeitet hast. @@ -1551,7 +1551,7 @@ Oh, Asuka, du hast einen Massagestab. Das ist kein Massagestab. [AM1_1] -~g~Salvatore verlãsst jetzt Luigis Club! +~g~Salvatore verlässt jetzt Luigis Club! [AM1_2] ~r~Man hat dich entdeckt! @@ -1563,7 +1563,7 @@ Das ist kein Massagestab. ~r~Na, prima! Du hast dein Opfer verscheucht. Und du willst ein Profi sein? [AM1_5] -~g~Begib dich in den Rotlichtbezirk und warte, bis Salvatore den Club verlãsst. +~g~Begib dich in den Rotlichtbezirk und warte, bis Salvatore den Club verlässt. [AM1_7] ~r~Salvatore sitzt bequem zu Hause und schlürft einen Cocktail. 'Der Schakal' bist du nicht gerade! @@ -1584,10 +1584,10 @@ Maria und ich sind ein bisschen ins Grüne gefahren, bis du diesen miesen Voyeur Ah, mein hübsches Helferlein! [AM4_B] -Maria ist gerade beschãftigt, aber ich richte ihr aus, dass du hier warst. +Maria ist gerade beschäftigt, aber ich richte ihr aus, dass du hier warst. [AM4_C] -Wer ist da? Asuka? Ich weiß, ich war ein böses Mãdchen, aber ich muss dringend pinkeln! +Wer ist da? Asuka? Ich weiß, ich war ein böses Mädchen, aber ich muss dringend pinkeln! [AM4_D] Wird Zeit dass du unseren Mann bei der Polizei kennenlernst. @@ -1596,7 +1596,7 @@ Wird Zeit dass du unseren Mann bei der Polizei kennenlernst. Das ist seine Bezahlung für den letzten Job, den er für uns erledigt hat. [AM4_F] -Verstãndlicherweise ist er vorsichtig. +Verständlicherweise ist er vorsichtig. [AM4_G] Begib dich so schnell wie möglich zu dem öffentlichen Fernsprecher in Torrington und warte auf seine Anweisungen. @@ -1632,49 +1632,49 @@ Tanner hat dich bemerkt! ~w~Trotzdem hat er uns mitgeteilt, wie sehr Catalina deine Rache fürchtet. [AS2_A] -~w~Wir haben Catalinas Plãne mit dem SPANK unterschãtzt. +~w~Wir haben Catalinas Pläne mit dem SPANK unterschätzt. [AS2_B] -~w~Das beschrãnkt sich bei weitem nicht darauf, dass die Yardies es an der Straßenecke verkaufen. +~w~Das beschränkt sich bei weitem nicht darauf, dass die Yardies es an der Straßenecke verkaufen. [AS2_D] -~w~Die verkaufen SPANK über Kaffeestãnde. +~w~Die verkaufen SPANK über Kaffeestände. [AS2_1] -~g~Alle Espressostãnde in Portland zerstört!! +~g~Alle Espressostände in Portland zerstört!! [AS2_2] -~g~Alle Espressostãnde auf Staunton Island zerstört!! +~g~Alle Espressostände auf Staunton Island zerstört!! [AS2_3] -~g~Alle Espressostãnde in Shoreside Vale zerstört!! +~g~Alle Espressostände in Shoreside Vale zerstört!! [AS2_4] ~r~Das Kartell hat seine Dealer gewarnt!! [AS2_5] -~g~Da sind noch Espressostãnde in Shoreside Vale und auf Staunton Island! +~g~Da sind noch Espressostände in Shoreside Vale und auf Staunton Island! [AS2_6] -~g~Da sind noch Espressostãnde in Shoreside Vale! +~g~Da sind noch Espressostände in Shoreside Vale! [AS2_7] -~g~Da sind noch Espressostãnde auf Staunton Island! +~g~Da sind noch Espressostände auf Staunton Island! [AS2_8] -~g~Da sind noch Espressostãnde in Portland! +~g~Da sind noch Espressostände in Portland! [AS2_9] -~g~Da sind noch Espressostãnde in Portland und Shoreside Vale! +~g~Da sind noch Espressostände in Portland und Shoreside Vale! [AS2_10] -~g~Da sind noch Espressostãnde in Portland und auf Staunton Island! +~g~Da sind noch Espressostände in Portland und auf Staunton Island! [AS2_12] -~g~Suche in den Sadtteilen von Liberty City nach ~b~Espresso-2-Go-Stãnden! +~g~Suche in den Sadtteilen von Liberty City nach ~b~Espresso-2-Go-Ständen! [AS3_A] -~W~Drücken wir noch fester zu oder warten wir, bis es von selbst abfãllt? +~W~Drücken wir noch fester zu oder warten wir, bis es von selbst abfällt? [AS3_B] ~w~Hau einfach drauf... @@ -1716,7 +1716,7 @@ Tanner hat dich bemerkt! 'DIE ABRECHNUNG' [KM1_A] -Meine Schwester hãlt große Stücke auf dich, +Meine Schwester hält große Stücke auf dich, [KM1_E] aber ich bin noch nicht überzeugt, dass ein Gajin wie du was auf dem Kasten hat. @@ -1725,13 +1725,13 @@ aber ich bin noch nicht überzeugt, dass ein Gajin wie du was auf dem Kasten hat Vielleicht kannst du mir bei einer etwas kniffligen Sache helfen. [KM1_F] -Ein Fehlschlag wãre natürlich unverzeihlich. +Ein Fehlschlag wäre natürlich unverzeihlich. [KM1_C] Ein Yakuza Kanbu sitzt in Haft und wartet auf seine Überführung zum Prozess. [KM1_G] -Er ist ein geschãtztes Mitglied der Familie. +Er ist ein geschätztes Mitglied der Familie. [KM1_H] Befreie ihn aus der Haft und bring ihn in das Dojo beim Bedford Point. @@ -1767,7 +1767,7 @@ Wir danken dir für deinen selbstlosen Einsatz. Solltest du jemals Hilfe brauche ~r~Du hast dich selbst in Schwierigkeiten gebracht! [KM2_A] -Gewisse Umgangsformen sind in diesem Beruf von nicht zu unterschãtzender Wichtigkeit. +Gewisse Umgangsformen sind in diesem Beruf von nicht zu unterschätzender Wichtigkeit. [KM2_B] Es ist eine Schande. Jemand hat mir einmal einen Gefallen getan, und ich konnte mich nie dafür erkenntlich zeigen. @@ -1782,7 +1782,7 @@ Mein Ehrgefühl verlangt das von mir. ~g~Auto abgeliefert. [KM3_A] -Wenn Ungemach droht, wendet der Narr sich ab, wãhrend der Weise sich ihm stellt. +Wenn Ungemach droht, wendet der Narr sich ab, während der Weise sich ihm stellt. [KM3_B] Das kolumbianische Kartell hat unsere wiederholten Bitten ignoriert, unsere Interessen in Liberty zu berücksichtigen. @@ -1794,7 +1794,7 @@ Jetzt verhandeln die mit den Jamaikanern, um uns weiter zu demütigen. Sie wollen den Deal am anderen Ende der Stadt besiegeln. [KM3_F] -Nimm einen meiner Mãnner, klau einen Yardie-Wagen und statte den Kolumbianern einen Besuch ab. +Nimm einen meiner Männer, klau einen Yardie-Wagen und statte den Kolumbianern einen Besuch ab. [KM3_E] Unser Ehrgefühl verlangt es, dass niemand am Leben bleibt. @@ -1821,7 +1821,7 @@ Unser Ehrgefühl verlangt es, dass niemand am Leben bleibt. ~r~Der Kontaktmann ist tot! [KM4_A] -Um wahrhaft stark zu sein, darfst du niemals Schwãche zeigen. +Um wahrhaft stark zu sein, darfst du niemals Schwäche zeigen. [KM4_C] Sammle die Gelder umgehend ein, damit wir sie in unsere Casinos stecken können. @@ -1866,7 +1866,7 @@ Es scheint, deine Versuche, die Jamaikaner davon abzuhalten, sich mit dem Kartell einzulassen, sind komplett fehlgeschlagen! [KM5_C] -Yardie-Pusher verdealen pãckchenweise SPANK in den Straßen von Liberty, als würden sie Hotdogs verkaufen! +Yardie-Pusher verdealen päckchenweise SPANK in den Straßen von Liberty, als würden sie Hotdogs verkaufen! [KM5_D] Die Mistkerle vom Kartell lachen uns aus, lachen MICH aus! @@ -1887,7 +1887,7 @@ Mach diese Dreckskerle fertig und wasch deine befleckte Ehre im Blut unserer Fei ~g~Du hast ~1~ der Yardies erwischt. BONUS $~1~ [RM1] -'DAS SCHWEIGEN DES VERRÃTERS' +'DAS SCHWEIGEN DES VERRÄTERS' [RM3] 'BRENNENDE BEWEISE' @@ -1899,7 +1899,7 @@ Mach diese Dreckskerle fertig und wasch deine befleckte Ehre im Blut unserer Fei 'DER GEPANZERTE ZEUGE' [RM1_D] -Er steht unter Zeugenschutz und sitzt mit bewaffneten Leibwãchtern in einer Wohnung in Newport, irgendwo hinter dem Parkplatz. +Er steht unter Zeugenschutz und sitzt mit bewaffneten Leibwächtern in einer Wohnung in Newport, irgendwo hinter dem Parkplatz. [RM1_E] Zünde die Bude an, und wenn sie rausgerannt kommen, kannst du sie dir vornehmen. Sorge dafür, dass er mit niemandem redet. @@ -1914,7 +1914,7 @@ Zünde die Bude an, und wenn sie rausgerannt kommen, kannst du sie dir vornehmen Hey, Junge! Hier rüber! [RM2_A] -Ein alter Kumpel aus der Army macht Geschãfte in Rockford. +Ein alter Kumpel aus der Army macht Geschäfte in Rockford. [RM2_D] Er braucht Hilfe. Zum Dank will er dir Superpreise machen für alles, was du bei ihm kaufst. @@ -1932,7 +1932,7 @@ Na ja, drei Arme sind besser als einer, also nimm dir, was du brauchst. ~r~Phil hat's erwischt!! [RM2_L] -Heh-hey! Wãre ich mit DIR in Nicaragua gewesen, hãtte ich vielleicht meinen Arm noch! +Heh-hey! Wäre ich mit DIR in Nicaragua gewesen, hätte ich vielleicht meinen Arm noch! [RM2_N] Lass das Geld da. Und jetzt verschwinde. Ich regle das mit den Cops. @@ -1941,7 +1941,7 @@ Lass das Geld da. Und jetzt verschwinde. Ich regle das mit den Cops. Das Beweismaterial wird gerade quer durch die Stadt transportiert. [RM3_E] -Du wirst diesen Wagen rammen und jedes kleine Beweisstück einsammeln, wenn es rausfãllt. +Du wirst diesen Wagen rammen und jedes kleine Beweisstück einsammeln, wenn es rausfällt. [RM3_F] Wenn du alles hast, lass das Zeug im Wagen und zünde ihn an. @@ -1962,10 +1962,10 @@ Das bringt uns beiden eine Stange Geld ein, mein Junge. ~g~Steck jetzt das Auto in Brand! [RM4_A] -Ich glaube, mein Partner ist ein Verrãter. +Ich glaube, mein Partner ist ein Verräter. [RM4_C] -Meistens fãhrt er abends mit seinem Boot fischen, nahe dem Leuchtturm auf dem Portland Rock. +Meistens fährt er abends mit seinem Boot fischen, nahe dem Leuchtturm auf dem Portland Rock. [RM4_D] Klau ein Polizeiboot und mach seinen miesen Machenschaften ein Ende! @@ -1977,7 +1977,7 @@ Klau ein Polizeiboot und mach seinen miesen Machenschaften ein Ende! ~g~Fahr zum Leuchtturm und nimm dir Rays Partner vor! [RM5_A] -Du unfãhiger Idiot! +Du unfähiger Idiot! [RM5_A1] Du hast alles vermasselt! Es geht um mein Leben, und du kannst nicht mal eine Fliege totschlagen! @@ -2022,10 +2022,10 @@ Also los, erledige den Job, für den ich dich bezahlt habe! 'DAS KENJI-KOMPLOTT' [LOVE3] -'NÃCHTLICHER FISCHZUG' +'NÄCHTLICHER FISCHZUG' [LOVE1_A] -Zunãchst möchte ich dir danken, dass du diese Sache für mich geregelt hast. +Zunächst möchte ich dir danken, dass du diese Sache für mich geregelt hast. [LOVE1_F] Die Leute interpretieren heute in alles etwas hinein. @@ -2055,7 +2055,7 @@ Befreie meinen Freund, egal wie. ~g~Das Tor öffnet sich nur für Autos der kolumbianischen Gang. [LOVE2_A] -Nichts lãsst die Grundstückspreise so tief purzeln wie ein guter alter Bandenkrieg, +Nichts lässt die Grundstückspreise so tief purzeln wie ein guter alter Bandenkrieg, [LOVE2_B] außer vielleicht eine Pestepidemie... Aber das ginge hier wohl zu weit. @@ -2076,7 +2076,7 @@ Kenji ist bei einem Treffen auf dem Dach der Parkgarage in Newport. Besorg dir einen Wagen des Kartells und nimm ihn dir vor. [LOVE2_H] -Die Yakuza werden das als Kriegserklãrung des Kartells auffassen. +Die Yakuza werden das als Kriegserklärung des Kartells auffassen. [LOVE2_1] ~g~Klau in Fort Staunton einen Wagen der kolumbianischen Gang! @@ -2091,13 +2091,13 @@ Die Yakuza werden das als Kriegserklãrung des Kartells auffassen. ~r~Die Yakuza haben dich erkannt! [LOVE2_6] -~r~Du hast alle Zeugen aus dem Weg gerãumt!! +~r~Du hast alle Zeugen aus dem Weg geräumt!! [LOVE3_A] In scheinheiligen Zeiten wie diesen sind bestimmte wertvolle Waren schwer zu importieren. [LOVE3_C] -Es wird einige kleine Pãckchen ins Wasser abwerfen. +Es wird einige kleine Päckchen ins Wasser abwerfen. [LOVE3_D] Sammle sie ein, bevor es ein anderer tut. @@ -2112,10 +2112,10 @@ Sammle sie ein, bevor es ein anderer tut. 'BODYGUARD ACTION' [LOVE4_A] -Danke, dass du die Pãckchen geholt hast. Aber die sollten nur als Köder dienen. +Danke, dass du die Päckchen geholt hast. Aber die sollten nur als Köder dienen. [LOVE4_B] -Sorry, aber so lãuft das manchmal in dem Geschãft. +Sorry, aber so läuft das manchmal in dem Geschäft. [LOVE4_C] Die Ware, um die es mir wirklich geht, ist noch in dem Flugzeug versteckt. @@ -2127,19 +2127,19 @@ Ich habe die Beamten bestochen. ~r~Das kolumbianische Kartell ist da!! [LOVE4_2] -~g~Das Pãckchen ist weg! Du musst die Kolumbianer finden und es ihnen abjagen. +~g~Das Päckchen ist weg! Du musst die Kolumbianer finden und es ihnen abjagen. [LOVE4_3] ~g~Bauunternehmen Panlantic...? [LOVE4_5] -~g~Das Pãckchen müsste im Flugzeug sein... +~g~Das Päckchen müsste im Flugzeug sein... [LOVE4_6] ~g~Nimm den Lift nach oben in den Tower! [LOVE5_B] -Mein asiatischer Freund braucht einen Bodyguard. Er lãsst meine neue Lieferung auf Qualitãt überprüfen. +Mein asiatischer Freund braucht einen Bodyguard. Er lässt meine neue Lieferung auf Qualität überprüfen. [LOVE5_1] ~g~Los! @@ -2178,16 +2178,16 @@ Pass gut auf meinen kugelsicheren Patriot auf, Ray. Wir sehen uns in Miami. 'DIE ÜBERGABE' [CAT1_A] -Ich habe deine Maria. Wenn ihr Gesicht nicht aussehen soll, als wãr's in einen Fleischwolf geraten, +Ich habe deine Maria. Wenn ihr Gesicht nicht aussehen soll, als wär's in einen Fleischwolf geraten, [CAT2_F] Ich hab mir 'nen Fingernagel abgebrochen und meine Frisur ist hin! Fünfzig Dollar im Eimer! [CAT2_G] -Mann, hatte ich Angst. Aber dann dachte ich mir, du bist doch kein kleines Mãdchen mehr. +Mann, hatte ich Angst. Aber dann dachte ich mir, du bist doch kein kleines Mädchen mehr. [CAT2_H] -Du, das wird lustig, weißt du, meine Schwester will nãmlich mit ihren zwei Kindern eine zeitlang bei uns wohnen, +Du, das wird lustig, weißt du, meine Schwester will nämlich mit ihren zwei Kindern eine zeitlang bei uns wohnen, [CAT2_I] weil ihr Mann gerade mal wieder fremdgeht und... @@ -2232,7 +2232,7 @@ XXXX ~g~Maria ist tot! [WEATHER] -WETTER ÃNDERN +WETTER ÄNDERN [WEATHE2] WETTER NORMAL @@ -2304,7 +2304,7 @@ Auf dich ist Verlass. Wenn du alle, die auf der Liste stehen, abgeliefert hast, Du hast alle georderten Karren geliefert. Sehr gut. Hier, für dich. [GA_15] -Hoffentlich gefãllt dir die neue Farbe. +Hoffentlich gefällt dir die neue Farbe. [GA_16] Das Umspritzen ist gratis. @@ -2313,7 +2313,7 @@ Das Umspritzen ist gratis. An dem Modell haben wir kein Interesse. [GA_20] -Von der Sorte haben wir schon mehr als genug. Sorry, da kommen wir nicht ins Geschãft. +Von der Sorte haben wir schon mehr als genug. Sorry, da kommen wir nicht ins Geschäft. [CR_1] Kran kann dieses Fahrzeug nicht anheben. @@ -2388,7 +2388,7 @@ Du blickst bei der Story nicht mehr durch? Taste dich ran, Mann! [FEF_CO2] -Wãhle das Controller-Setup, das zu deinem Spielstil am besten passt +Wähle das Controller-Setup, das zu deinem Spielstil am besten passt [FEF_SA1] Bring deine Daten in Sicherheit! @@ -2397,10 +2397,10 @@ Bring deine Daten in Sicherheit! Spiele laden und speichern [FEF_AU1] -Volle Dröhnung gefãllig? +Volle Dröhnung gefällig? [FEF_AU2] -Radiosender und Soundeffekt auswãhlen +Radiosender und Soundeffekt auswählen [FEF_DI1] Andere Optik? @@ -2412,7 +2412,7 @@ Spiel für deinen Fernseher optimieren Was für ein Gefasel! [FEF_LA2] -Sprache auswãhlen +Sprache auswählen [FEB_PMB] Vorherige Missionsinfos: @@ -2478,10 +2478,10 @@ Hupe Fahrzeug steuern [FEC_RSC] -Radiosender auswãhlen +Radiosender auswählen [FEC_BRA] -Bremsen\rückwãrts fahren +Bremsen\rückwärts fahren [FEC_HAB] Handbremse @@ -2634,7 +2634,7 @@ Explodierte Autos Zahl deiner Verhaftungen [M_WASTE] -Mãnnliche Passanten +Männliche Passanten [F_WASTE] Weibliche Passanten @@ -2646,10 +2646,10 @@ Cops Gang-Mitglieder [MED_WST] -Sanitãter +Sanitäter [FIRE_WS] -Feuerwehrmãnner +Feuerwehrmänner [DED_CRI] Kriminelle @@ -2688,7 +2688,7 @@ Krankenhausbesuche Im Spiel verstrichene Tage [MMRAIN] -Regenfãlle in mm +Regenfälle in mm [MXCARD] Weitester IRRSINNS-Sprung (in Fuß) @@ -2751,7 +2751,7 @@ Begonnene Missionen Erfüllte Missionen [PASDRO] -Beförderte Fahrgãste +Beförderte Fahrgäste [MONTAX] Mit Taxi verdientes Geld @@ -2823,10 +2823,10 @@ Zurück SOUND [MUSVOL] -Lautstãrke Musik +Lautstärke Musik [SFXVOL] -Lautstãrke SFX +Lautstärke SFX [SCROPT] BILDSCHIRMOPTIONEN @@ -2850,25 +2850,25 @@ Du kannst nur in deinem Unterschlupf speichern. GTA3 Dateien löschen [CHFILE] -ZU LADENDE DATEI AUSWÃHLEN +ZU LADENDE DATEI AUSWÄHLEN [CHCDLD] -Wãhle Memory Card (PS2) von der geladen werden soll +Wähle Memory Card (PS2) von der geladen werden soll [CDUNFR] Memory Card (PS2) ist nicht formatiert. [CHFIDL] -ZU LÖSCHENDE DATEI AUSWÃHLEN +ZU LÖSCHENDE DATEI AUSWÄHLEN [SVCONF] -SPEICHERBESTÃTIGUNG +SPEICHERBESTÄTIGUNG [SVFNAM] Dateiname des gespeicherten Spiels: [SAVEDN] -Fehler - Speicherung nicht vollstãndig. +Fehler - Speicherung nicht vollständig. [LANGSL] SPRACHAUSWAHL @@ -2958,10 +2958,10 @@ Mittel Hoch [SCASSL] -Gewalt-Level 'mittel' gewãhlt +Gewalt-Level 'mittel' gewählt [SCSCSL] -Gewalt-Level 'hoch' gewãhlt +Gewalt-Level 'hoch' gewählt [PRVMEN] Vorherige Missionsinfos @@ -3030,7 +3030,7 @@ x Letzte Nachricht [FEDS_XB] -Auswãhlen +Auswählen [FEDS_ST] START-Taste - WEITER @@ -3045,7 +3045,7 @@ Geschützsteuerung Spezialmission aktivieren (R3-Taste) [FEC_RS3] -Radiosender auswãhlen (L3-Taste) +Radiosender auswählen (L3-Taste) [FEC_HO3] Hupe (L3-Taste) @@ -3060,10 +3060,10 @@ Hupe (L3-Taste) 'FEUERTAUFE' [DIAB4] -'JÃGER DES VERLORENEN SCHUNDES' +'JÄGER DES VERLORENEN SCHUNDES' [DIAB1_A] -El Burro bietet dir eine Chance. Über den öffentlichen Fernsprecher in Hepburn Heights erfãhrst du nãheres. +El Burro bietet dir eine Chance. Über den öffentlichen Fernsprecher in Hepburn Heights erfährst du näheres. [DIAB1_C] Du bist kein übler Fahrer. Komm wieder zu dem Telefon. Vielleicht hat El Burro noch mehr Jobs für dich. @@ -3135,13 +3135,13 @@ King Courtney will dich sprechen - am Telefon in Aspatria!! ~w~Meine Yardies könnten einen Fahrer brauchen, und du hast keinen schlechten Ruf. [YD1_B] -~w~Fahr mit einem Wagen zu dem Gelãnde gegenüber dem Stadion und warte auf die anderen Mitbewerber. +~w~Fahr mit einem Wagen zu dem Gelände gegenüber dem Stadion und warte auf die anderen Mitbewerber. [YD1_C] -~w~Meine Mãnner beobachten Checkpoints überall in Staunton. +~w~Meine Männer beobachten Checkpoints überall in Staunton. [YD1_D] -~w~Wer einen Checkpoint als erster erreicht, kriegt $1000. Dann geht's weiter zur nãchsten Station. +~w~Wer einen Checkpoint als erster erreicht, kriegt $1000. Dann geht's weiter zur nächsten Station. [YD1_D1] ~w~Wenn du mehr Checkpoints als die anderen gewinnst, habe ich vielleicht Arbeit für dich. @@ -3150,7 +3150,7 @@ King Courtney will dich sprechen - am Telefon in Aspatria!! ~g~Fertigmachen zum Start! [YD1_F] -~g~Du bist zu früh gestartet. Das gefãllt mir!! +~g~Du bist zu früh gestartet. Das gefällt mir!! [YD1_G] ~r~Dies ist ein AUTORENNEN. Du brauchst ein AUTO, Hirni! @@ -3186,7 +3186,7 @@ $1000!! ~y~Du teilst dir den 1. Platz. ~1~ gewonnene Checkpoints. ~y~Gut, aber du musst der Beste sein, um für Queen Lizzy zu fahren! [Y1_J2ND] -~r~Du teilst dir den 2. Platz. ~1~ gewonnene Checkpoints. Du Schlãfer! +~r~Du teilst dir den 2. Platz. ~1~ gewonnene Checkpoints. Du Schläfer! [Y1JLAST] ~r~Du bist unter den Letzten! Wo hast du deinen Führerschein gemacht? @@ -3213,7 +3213,7 @@ Wollen sehen, ob du so gut bist, wie du sagst. ~w~Hier, du wirst 'ne Knarre brauchen. [YD2_D] -~w~Du fãhrst UND ballerst. Wir achten drauf, dass du keine kalten Füße kriegst. +~w~Du fährst UND ballerst. Wir achten drauf, dass du keine kalten Füße kriegst. [YD2_E] ~w~Los geht's!! @@ -3300,7 +3300,7 @@ Komm nach Bedford Point. In einem alten Wagen ist etwas versteckt. Das brauche ich pronto! [YD4_B] -BRIEF: Man hört, du bist ein viel beschãftigter Mann. Nun, ich bin eine viel beschãftigte Frau. +BRIEF: Man hört, du bist ein viel beschäftigter Mann. Nun, ich bin eine viel beschäftigte Frau. [YD4_C] Es wird Zeit, dass du die wahre Macht von 'SPANK' kennen lernst! Besos y fuderes, Catalina, xxx. @@ -3333,10 +3333,10 @@ Komm zu dem Fernsprecher in Wichita Gardens. Es gibt Arbeit. Yo! Hier spricht D-Ice von den Red Jacks! [HM1_C] -Diese pubertãren Idioten treiben sich hier rum und haben nichts als Knarren und SPANK im Sinn. +Diese pubertären Idioten treiben sich hier rum und haben nichts als Knarren und SPANK im Sinn. [HM1_3] -~g~Die 'Nines' hãngen in ihrem Gebiet in Wichita Gardens rum. +~g~Die 'Nines' hängen in ihrem Gebiet in Wichita Gardens rum. [HM2_3] Wenn du die Reifen eines Wagens triffst, explodiert der Buggy! @@ -3348,7 +3348,7 @@ Wenn er außer Reichweite kommt, explodiert der Buggy! ~r~Außer Reichweite! [HM3_1] -~g~Fahr zur Garage. Aber Vorsicht: Wird der Wagen zu stark beschãdigt, explodiert er! +~g~Fahr zur Garage. Aber Vorsicht: Wird der Wagen zu stark beschädigt, explodiert er! [HM3_2] ~g~Bring den Wagen zurück. Er muss in 1A Zustand sein. Keine Delle! @@ -3369,7 +3369,7 @@ TEXT NO LONGER REQUIRED ~g~Denk dran: Wird der Wagen zu schwer und zu langsam, fahr in die Garage und lade das Zeug aus. [HM5_3] -~r~Du solltest nur einen Baseball-Schlãger verwenden! +~r~Du solltest nur einen Baseball-Schläger verwenden! [HM5_4] ~r~Deine Kontaktperson ist tot! @@ -3444,7 +3444,7 @@ Man sagt, du kannst mir bei einigen Problemen helfen. Wenn das so ist, komm zu d ~g~Hol den Liebhaber seiner Frau ab. [MEA4_B6] -Dazu ist es jetzt zu spãt, Marty. Du hattest deine Chance. Jetzt übernehme ich den Laden hier. +Dazu ist es jetzt zu spät, Marty. Du hattest deine Chance. Jetzt übernehme ich den Laden hier. [MEA4_1] ~r~Carlos ist tot! @@ -3471,7 +3471,7 @@ Die CIA scheint sich sehr für SPANK zu interessieren. Sie wollen, dass wir das Kartell in Ruhe lassen. [C_PASS] -BEDROHUNG AUSGERÃUMT! +BEDROHUNG AUSGERÄUMT! [CTUTOR] Drücke die ~h~~k~~TOGGLE_SUBMISSIONS~-Taste~w~, um Bürgerwehr Missionen zu aktivieren oder zu deaktivieren. @@ -3489,7 +3489,7 @@ Mission beendet! ~r~Bürgerwehr Mission abgebrochen! [C_ESCP] -~r~Der Verdãchtige ist entwischt! +~r~Der Verdächtige ist entwischt! [C_TIME] ~r~Deine Zeit als Gesetzeshüter ist vorbei! @@ -3507,13 +3507,13 @@ BÜRGERWEHR BONUS!! Gerettet! [F_FAIL2] -~r~Du kommst zu spãt! +~r~Du kommst zu spät! [A_COMP2] Du ermüdest nie! [RM2_M] -Wenn du eine Waffe brauchst, komm vorbei und nimm dir aus den Kãsten, was du brauchst. +Wenn du eine Waffe brauchst, komm vorbei und nimm dir aus den Kästen, was du brauchst. [HEAL_A] Dein ~h~Gesundheit~w~ wird rechts oben auf dem Bildschirm in Orange angezeigt. @@ -3522,7 +3522,7 @@ Dein ~h~Gesundheit~w~ wird rechts oben auf dem Bildschirm in Orange angezeigt. ~1~ von 15! [FM1_9] -~g~Da vorne ist die Party. Setz Maria vor dem Gebãude ab. +~g~Da vorne ist die Party. Setz Maria vor dem Gebäude ab. [FM1_Y] ~w~Das war seit langem mal wieder ein guter Abend. Und du hast mich wirklich gut behandelt, mit Respekt und so. @@ -3567,7 +3567,7 @@ Komm wieder, wenn du nicht so viel zu tun hast... In die Garage nebenan kann 1 Fahrzeug eingestellt werden, wenn du das Spiel speicherst. [STOCK] -Nicht vorrãtig +Nicht vorrätig [FM1_O] ~w~Er ist beim Bahnhof am Chinatown-Ufer, glaube ich. @@ -3606,10 +3606,10 @@ Aber ich brauch Hilfe von außerhalb der Polizei. Falls du interessiert bist... du weißt, wo du mich findest. [CAM_A] -Drücke die ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~-taste~w~, um den ~h~Blickwinkel ~w~zu verãndern, wenn du zu Fuß oder in einem Fahrzeug unterwegs bist. +Drücke die ~h~~k~~CAMERA_CHANGE_VIEW_ALL_SITUATIONS~-taste~w~, um den ~h~Blickwinkel ~w~zu verändern, wenn du zu Fuß oder in einem Fahrzeug unterwegs bist. [CAM_B] -Drücke die ~h~Richtungstaste Oben~w~ und die ~h~Richtungstaste Unten~w~, um den ~h~Blickwinkel ~w~zu verãndern, wenn du zu Fuß oder in einem Fahrzeug unterwegs bist. +Drücke die ~h~Richtungstaste Oben~w~ und die ~h~Richtungstaste Unten~w~, um den ~h~Blickwinkel ~w~zu verändern, wenn du zu Fuß oder in einem Fahrzeug unterwegs bist. [KM2_1] ~g~Repariere den Wagen. Er muss top aussehen. @@ -3618,7 +3618,7 @@ Drücke die ~h~Richtungstaste Oben~w~ und die ~h~Richtungstaste Unten~w~, um den Joey... [LM3_6A] -Na, ein bisschen Nahkampf mit deiner Braut gefãllig? +Na, ein bisschen Nahkampf mit deiner Braut gefällig? [LM3_9A] Vielleicht gibt's Arbeit für dich. @@ -3642,22 +3642,22 @@ Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~ Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~ scharf. Sie geht hoch, wenn der Wagen angelassen wird. [BAT1] -~g~Nimm dir den Schlãger! +~g~Nimm dir den Schläger! [EBAL_O] Wenn du deine Sache gut machst, gibt's vielleicht noch mehr Jobs für dich. Und jetzt verschwinde! [HELP9_B] -Drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um mit dem Prãzisionsgewehr zu ~h~feuern~w~. +Drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um mit dem Präzisionsgewehr zu ~h~feuern~w~. [HELP9_C] -Drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um mit dem Prãzisionsgewehr zu ~h~feuern~w~. +Drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um mit dem Präzisionsgewehr zu ~h~feuern~w~. [JM6_8] -~r~Du hast alle Rãuber verloren! +~r~Du hast alle Räuber verloren! [COLT_IN] -Die Pistole ist jetzt im AmmuNation vorrãtig! +Die Pistole ist jetzt im AmmuNation vorrätig! [TAXI2] ~r~Die Zeit ist um! @@ -3687,7 +3687,7 @@ Polizei-Schmiergelder wurde im Versteck angeliefert. Gesundheits-Powerups wurde im Versteck angeliefert. [PAGEB14] -Adrenalin wurde im Versteck vorrãtig. +Adrenalin wurde im Versteck vorrätig. [KM1_4] ~g~Du brauchst einen Polizeiwagen für diesen Job! @@ -3702,7 +3702,7 @@ Er hat eine Imbissbude in Chinatown. Hier ist ein Schlüssel für eine Garage. [RM6_2] -Darin findest du Bargeld und ein paar 'Requisiten' für alle Fãlle. +Darin findest du Bargeld und ein paar 'Requisiten' für alle Fälle. [RM6_3] Bis dann. @@ -3771,7 +3771,7 @@ MEMORY CARD-Steckplatz 1: Datei geschützt. ~1~ von 15! [T4X4_1C] -~y~PASSIERE~g~ den ersten Checkpoint, dann lãuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~20 SEKUNDEN~g~. +~y~PASSIERE~g~ den ersten Checkpoint, dann läuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~20 SEKUNDEN~g~. [T4X4_2A] ~g~Du hast ~y~2 Minuten~g~, um ~y~12~g~ Checkpoints abzufahren. ~g~Die ~y~REIHENFOLGE IST BELIEBIG. @@ -3780,13 +3780,13 @@ MEMORY CARD-Steckplatz 1: Datei geschützt. ~1~ von 12! [T4X4_2C] -~y~PASSIERE~g~ den ersten Checkpoint, dann lãuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~10 SEKUNDEN~g~. +~y~PASSIERE~g~ den ersten Checkpoint, dann läuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~10 SEKUNDEN~g~. [T4X4_3A] ~g~Du hast ~y~5 Minuten~g~, um ~y~20~g~ Checkpoints abzufahren. ~g~Die ~y~REIHENFOLGE IST BELIEBIG. [T4X4_3B] -~y~PASSIERE~g~ den ersten Checkpoint, dann lãuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~15 SEKUNDEN~g~. +~y~PASSIERE~g~ den ersten Checkpoint, dann läuft die Zeit. ~g~Jeder Checkpoint bringt dir ~y~15 SEKUNDEN~g~. [T4X4_3C] ~1~ von 20! @@ -3801,7 +3801,7 @@ MEMORY CARD-Steckplatz 1: Datei geschützt. ~1~ von 20! [MM_1_C] -~g~Das macht 20 Sekunden plus ~y~5 SEKUNDEN~g~ für jeden Checkpoint. ~g~Die Zeit lãuft ~y~AB SOFORT. +~g~Das macht 20 Sekunden plus ~y~5 SEKUNDEN~g~ für jeden Checkpoint. ~g~Die Zeit läuft ~y~AB SOFORT. [FM2_14] ~r~Du warst zu nah dran und hast Curly aufgeschreckt! @@ -4023,10 +4023,10 @@ Kriminelle bei Bürgerwehr Mission Gelöschte Feuer gesamt [FEST_LF] -Lãngster Flug in Dodo +Längster Flug in Dodo [FEST_BD] -Bestzeit Bombenentschãrfung +Bestzeit Bombenentschärfung [FEST_RP] Bestandene Amokfahrten @@ -4080,7 +4080,7 @@ Drücke die~h~ ~k~~VEHICLE_FIREWEAPON~-Taste~w~ zum ~h~Zünden der Bombe~w~. Abe Drücke die~h~ ~k~~VEHICLE_FIREWEAPON~-Taste~w~ zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung! [KM1_12] -~g~Bring ihm zum Dojo, aber hãng vorher die Cops ab! +~g~Bring ihm zum Dojo, aber häng vorher die Cops ab! [RATNG1] Taschendieb @@ -4143,7 +4143,7 @@ Boss ~r~Dein Fahrzeug liegt auf dem Kopf [JM4_10] -Okay, Junge. Fahr mich zuerst in die Wãscherei in Chinatown. Ich hab da was zu erledigen. +Okay, Junge. Fahr mich zuerst in die Wäscherei in Chinatown. Ich hab da was zu erledigen. [JM4_11] Die Waschweiber da haben ihr Schutzgeld nicht bezahlt. @@ -4191,7 +4191,7 @@ Fahre deinen Wagen in die Lackiererei, um deinen ~h~Fahndungslevel~w~ loszuwerde Ja, ich weiß, Toni, ich hab sie gut erzogen. Sie schnurrt, falls du verstehst, was ich meine. [JM4_5] -Komm spãter wieder, dann zeigen wir den Kerlen, was Sache ist. +Komm später wieder, dann zeigen wir den Kerlen, was Sache ist. [AMMU_A] Luigi sagt, du brauchst 'ne Knarre... @@ -4227,10 +4227,10 @@ Halt eine Uzi im Anschlag, wenn du in ein Fahrzeug steigst. Schau dann nach link ~r~KEIN NEUER REKORD! [RCHELP] { re3 change } -Drücke die ~k~~VEHICLE_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Rãder eines Fahrzeugs, um es zu sprengen. +Drücke die ~k~~VEHICLE_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Räder eines Fahrzeugs, um es zu sprengen. [RCHELPA] { re3 change } -Drücke die ~k~~VEHICLE_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Rãder eines Fahrzeugs, um es zu sprengen. +Drücke die ~k~~VEHICLE_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Räder eines Fahrzeugs, um es zu sprengen. [RC_1] Du hast 2 Minuten, um so viele Diablo-Autos wie möglich zu sprengen! @@ -4323,10 +4323,10 @@ Dein Job: ~1~ Kolumbianer in 120 Sekunden! Dein Job: ~1~ Hoods in 120 Sekunden! [JM1_A] -Mir ist langweilig. Wann lãuft hier endlich mal was ab? +Mir ist langweilig. Wann läuft hier endlich mal was ab? [JM1_B] -Gleich, Schãtzchen. Muss nur schnell was erledigen. +Gleich, Schätzchen. Muss nur schnell was erledigen. [JM1_C] Ich hab 'nen kleinen Job für dich. @@ -4335,7 +4335,7 @@ Ich hab 'nen kleinen Job für dich. Die Forelli Brüder zahlen ihre Schulden nicht. [JM1_E] -Ich muss ihnen ein bisschen Respekt einblãuen. +Ich muss ihnen ein bisschen Respekt einbläuen. [JM1_F] Lips Forelli stopft sich gerade in Marcos Bistro seinen fetten Bauch voll. @@ -4374,7 +4374,7 @@ Du bist ein armes Würstchen, Amigo. Wirf die Kohle rüber! [CAT2_E] -Du bist an sich ein fãhiger Bursche. +Du bist an sich ein fähiger Bursche. [CAT2_E2] Aber du kapierst nicht, dass man mir nicht trauen kann. @@ -4386,7 +4386,7 @@ Macht den Idioten fertig. Bring das Ding in die Luft!! [HM5_1] -Yo, Ice hat dich angekündigt. Es gibt hier Regeln. Nur Schlãger. Keine Knarren, keine Autos. +Yo, Ice hat dich angekündigt. Es gibt hier Regeln. Nur Schläger. Keine Knarren, keine Autos. [HM5_5] Hier geht's um Respekt und Achtung, klar? @@ -4398,19 +4398,19 @@ Um Waffen aufzunehmen, gehe darüber hinweg. Dies funktioniert nicht, wenn du in Parke in der markierten Zone und steig aus. Das Fahrzeug wird dann geschrottet. [DIAB2_B] -Eine Bande von Taugenichtsen will mir ans Leder, falls ich sie nicht an meinen Geschãften beteilige. +Eine Bande von Taugenichtsen will mir ans Leder, falls ich sie nicht an meinen Geschäften beteilige. [DIAB2_C] Aber da sind sie an den Falschen geraten, Amigo. [DIAB2_D] -Die haben eine Schwãche für Eiscreme. +Die haben eine Schwäche für Eiscreme. [DIAB2_E] Hol die Bombe ab, die ich in Harwood versteckt habe, [DIAB2_F] -schnapp dir einen normalen Eis-Wagen, der rumfãhrt +schnapp dir einen normalen Eis-Wagen, der rumfährt [DIAB2_G] und locke diese Idioten mit dem Eis-Jingle in ihr Verderben. @@ -4449,7 +4449,7 @@ Aber dieser SPANK-Junkie hat die Hecktüren offen gelassen und jetzt verteilt sich mein wunderschönes, [DIAB4_D] -geschmackvoll fotografiertes Magazin gleichmãßig über ganz Liberty! +geschmackvoll fotografiertes Magazin gleichmäßig über ganz Liberty! [DIAB4_E] Nimm den Transporter, folge der Spur von 'Donkey Does Dallas' Nr. 1, 2 und 3. @@ -4479,7 +4479,7 @@ Die Nines bringen mich in die Klemme. Die Kerle haben gepanzerte Autos, und jetzt verhökern sie SPANK [HM2_C] -an meine Brüder, als wãre das gar nichts. +an meine Brüder, als wäre das gar nichts. [HM2_D] Auf dem Weg steht ein Wagen geparkt. @@ -4497,10 +4497,10 @@ Wenn ich die Karre verliere, stehe ich als Trottel da. Hol meinen Wagen ab und bring ihn in die Werkstatt in St. Mark's. [HM3_D] -Die sollen die Bombe da entschãrfen. +Die sollen die Bombe da entschärfen. [HM3_E] -Die Uhr tickt und die Drãhte sind locker. +Die Uhr tickt und die Drähte sind locker. [HM3_F] Ein Schlagloch zuviel, und das Ding geht hoch. @@ -4524,7 +4524,7 @@ Du kannst das Zeug in einer meiner Garagen abladen. Platin ist verdammt schwer. Dein Auto wird etwas langsamer laufen. [HM4_H] -Also, lade regelmãßig etwas davon in einer Garage ab. +Also, lade regelmäßig etwas davon in einer Garage ab. [HM5_A] Die Nines sind nur noch ein versprengter Haufen... @@ -4542,10 +4542,10 @@ Eine Gang von denen gegen zwei von uns. Oder vielmehr... zwei von euch. [HM5_F] -Ich wãre ja dabei, aber... +Ich wäre ja dabei, aber... [HM5_G] -ich hab noch drei Monate Bewãhrung, +ich hab noch drei Monate Bewährung, [HM5_H] verstehst du, was ich meine? @@ -4566,10 +4566,10 @@ Mir gehört die Bitchin' Dog Food Fleischfabrik um die Ecke. Ich hab Geldsorgen, aber wer hat die nicht, was? [MEA1_E] -Ich treff mich spãter mit meinem Banker. +Ich treff mich später mit meinem Banker. [MEA1_F] -Das ist ein linker Sãger, der mir dauernd die Kreditraten raufsetzt, um sich 'ne Scheibe abzuschneiden. +Das ist ein linker Säger, der mir dauernd die Kreditraten raufsetzt, um sich 'ne Scheibe abzuschneiden. [MEA1_G] Nimm mein Auto, hol ihn ab und bring ihn hierher. @@ -4581,7 +4581,7 @@ Ich habe eine kleine Überraschung für diesen Blutsauger!! Ich hab Diebe angeheuert, um in meine Wohnung einzubrechen. [MEA2_C] -Jetzt drohen diese Dreckskerle, sie erzãhlen alles der Versicherung, +Jetzt drohen diese Dreckskerle, sie erzählen alles der Versicherung, [MEA2_D] wenn ich sie nicht beteilige. @@ -4617,7 +4617,7 @@ Mist, ich steck in der Klemme! Meine Frau hatte was mit einem Typen, dem ich Geld schulde. [MEA4_C] -Der ist jetzt ziemlich sauer und will sich rãchen! +Der ist jetzt ziemlich sauer und will sich rächen! [MEA4_E] Der denkt, er kann mich erpressen... @@ -4632,7 +4632,7 @@ dass auch dieser gute Mann als Hundefutter enden wird. WILLKOMMEN IN [HM1_2] -~g~Besorg dir ein Fahrzeug. Beachte: Hier zãhlt nur die Uzi! +~g~Besorg dir ein Fahrzeug. Beachte: Hier zählt nur die Uzi! [HELP8_B] Drücke die ~h~~k~~PED_SNIPER_ZOOM_IN~-Taste~w~ zum ~h~Heranzoomen~w~ mit dem Gewehr, und die ~h~~k~~PED_SNIPER_ZOOM_OUT~-Taste~w~ zum ~h~Wegzoomen~w~. @@ -4662,7 +4662,7 @@ Dann können wir uns ein bisschen unterhalten. Wenn du 'ne Knarre brauchst, geh zum Hintereingang vom AmmuNation gegenüber der U-Bahn. [LOVE4_7] -~g~Es gibt einen Bauhof auf Staunton Island. Vielleicht haben sie das Pãckchen dorthin gebracht. +~g~Es gibt einen Bauhof auf Staunton Island. Vielleicht haben sie das Päckchen dorthin gebracht. [LOVE4_8] ~g~Du brauchst ein Auto, um die Garage zu öffnen. @@ -4674,7 +4674,7 @@ EINKÜNFTE: $~1~ ~r~Salvatore hat sich in Luigis Club abgesetzt! [AM1_6] -~g~Wenn du vor Luigis Club rumhãngst, bemerken dich die Mafiosi! +~g~Wenn du vor Luigis Club rumhängst, bemerken dich die Mafiosi! [TM2_3] ~g~Das ist eine Falle! Nimm sie dir alle vor! @@ -4701,7 +4701,7 @@ Hier Maria. Das mit dem Wagen ist eine Falle! Komm zu dem Steg südlich der Call Hi, ich bin Joey. [LM3_9] -Luigi sagt, du bist verlãsslich. Also komm spãter wieder. +Luigi sagt, du bist verlässlich. Also komm später wieder. [KM3_5] ~g~Drück die Hupe, damit der Deal in Gang kommt. @@ -4722,7 +4722,7 @@ LOVES VERSCHWINDEN ~g~Das Kartell wurde angegriffen. Die Aktentasche wurde nicht sichergestellt. [KM3_12] -~g~Nimm dir sãmtliche Kolumbianer vor, zerstöre die Fahrzeuge und stell die Aktentasche sicher. +~g~Nimm dir sämtliche Kolumbianer vor, zerstöre die Fahrzeuge und stell die Aktentasche sicher. [KM3_13] ~g~Bring die Aktentasche ins Casino. @@ -4746,7 +4746,7 @@ Du bist neu in Liberty, aber du hast bereits eine guten Ruf auf der Straße. Bei der alten Schulhalle nahe der Callahan Bridge findet ein Rennen statt. [DIAB1_F] -Besorg dir 'nen fahrbaren Untersatz. Wer als erster alle Checkpoints abfãhrt, ist Sieger. +Besorg dir 'nen fahrbaren Untersatz. Wer als erster alle Checkpoints abfährt, ist Sieger. [HM2_1] { re3 change } Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~. @@ -4779,16 +4779,16 @@ Kleine Lektion in Sachen Business, mein Freund: Hast du eine hochinteressante Ware, wird Gott und die Welt sie dir abjagen wollen... [LOVE6_C] -Spezialeinheiten haben die Gegend um meinen Geschãftsfreund und das Pãckchen abgeriegelt. +Spezialeinheiten haben die Gegend um meinen Geschäftsfreund und das Päckchen abgeriegelt. [LOVE6_D] Mach, dass du hinkommst, nimm den Transporter und lenk sie ab. [LOVE6_F] -Beschãftige die Typen, damit er sich absetzen kann. +Beschäftige die Typen, damit er sich absetzen kann. [AM3_C] -Vermutlich ist er in der Bucht draußen, wãhrend du dies liest. Nimm mein Boot und mach seiner Karriere ein Ende! +Vermutlich ist er in der Bucht draußen, während du dies liest. Nimm mein Boot und mach seiner Karriere ein Ende! [FESZ_UC] ABBRECHEN @@ -4797,13 +4797,13 @@ ABBRECHEN L1, R1-MENÜ WECHSELN [FEDS_AS] -;=-AUSWAHL ÃNDERN +;=-AUSWAHL ÄNDERN [FEDSAS2] -<>-AUSWAHL ÃNDERN +<>-AUSWAHL ÄNDERN [FEDS_SS] -L1, R1-AUSWAHL ÃNDERN +L1, R1-AUSWAHL ÄNDERN [FEDSSC1] ;-SCHNELLER BILDLAUF @@ -4848,7 +4848,7 @@ TEXT NO LONGER NEEDED aber wenn du in mein Büro kommst, könnte ich... [MEA3_B4] -Marty will mich sehen? Das muss aber schnell gehen, ich hab nãmlich einen Friseurtermin. +Marty will mich sehen? Das muss aber schnell gehen, ich hab nämlich einen Friseurtermin. [KM3_7] Das ist eine Falle der Yakuza, Mann! @@ -4866,7 +4866,7 @@ Memory Card (PS2) in MEMORY CARD-Steckplatz 1: Kein freier Speicherplatz. Bitte DATEI [FES_ISC] -IST BESCHÃDIGT +IST BESCHÄDIGT [FESZ_TI] Z1 SPEICHERN @@ -4887,10 +4887,10 @@ Laden fehlgeschlagen! Spiel wird neu gestartet [LOVE6_3] -~g~Du hast ~1~ Sekunden, um zu dem Securicar zurückzukehren, bevor die Mission fehlschlãgt. +~g~Du hast ~1~ Sekunden, um zu dem Securicar zurückzukehren, bevor die Mission fehlschlägt. [LOVE6_4] -~r~Du hast den falschen Securicar abgehãngt! +~r~Du hast den falschen Securicar abgehängt! [HELP1] Halte in der Mitte der blauen Markierung. @@ -4956,7 +4956,7 @@ Ich hab 'n Problem. Die wollen mich verscheißern. Sehr erfreulich, dass Salvatore nicht mehr unter uns weilt. [AM2_A2] -Du bist ein effizienter Mann - das gefãllt mir. +Du bist ein effizienter Mann - das gefällt mir. [AM2_B] Das ist mein Bruder Kenji. @@ -4968,7 +4968,7 @@ Asuka hat einen kleinen Job für dich, aber wenn du fertig bist, komm in mein Ca Typisch Kenji, immer will er mit meinen Spielsachen spielen. [AM2_E] -Mein Spitzel bei der Polizei hat mir gesteckt, dass die Mafia unsere Aktivitãten im Auge behãlt. +Mein Spitzel bei der Polizei hat mir gesteckt, dass die Mafia unsere Aktivitäten im Auge behält. [AM2_E2] Sie wollen dich aufstöbern. @@ -4992,7 +4992,7 @@ Komm zu dem Fernsprecher auf dem Liberty Campus. Komm zu dem Fernsprecher im South Belleville Park. [AM4_1D] -Wir treffen uns im Toilettenhãuschen im Park. +Wir treffen uns im Toilettenhäuschen im Park. [HJSTATF] Distanz: ~1~Fuß Höhe: ~1~Fuß Saltos: ~1~ Drehungen: ~1~_ @@ -5025,7 +5025,7 @@ Und stiehl ein paar Sachen, damit ich die Versicherung kassieren kann. ~w~Meine Girls fragen andauernd nach dir, Salvatore. Du warst so lange nicht mehr bei uns. [TM3_L] -~w~Sag ihnen, wenn diese lãstige Geschichte hier vorbei ist, +~w~Sag ihnen, wenn diese lästige Geschichte hier vorbei ist, [TM3_M] ~w~gehen wir alle in den Club und feiern, okay? @@ -5070,7 +5070,7 @@ Dieser McAffrey! Der hat mehr Bestechungsgeld kassiert als jeder andere. Jetzt denkt er, er wird ehrenhaft entlassen, wenn er als Kronzeuge aussagt. [RM1_C] -Er ist einfach ein Verrãter. +Er ist einfach ein Verräter. [RM4_B] Wir müssen ihn zum Schweigen bringen - für immer. @@ -5106,7 +5106,7 @@ DU! Hey, ganz ruhig, Amigo! De nada! De nada! [GTAB_F] -Ich dachte, ich hãtte dich erledigt! +Ich dachte, ich hätte dich erledigt! [GTAB_G] Nicht schießen, Amigo! Kein Problem. Wir sind alle Freunde. Hier, nimm. @@ -5118,7 +5118,7 @@ Nicht so memmenhaft! Wir haben keine Wahl, Baby! [GTAB_J] -Wir haben immer eine Wahl, du dãmlicher Idiot! +Wir haben immer eine Wahl, du dämlicher Idiot! [GTAB_K] Sorry wegen dem abgedrehten Flittchen, Mann. Die sind doch alle gleich. Por favor? @@ -5139,7 +5139,7 @@ Dieser Wurm hat meinen Bruder auf dem Gewissen! I hab nie einen Yakuza umgebracht! [GTAB_Q] -Lügner! Wir alle haben den Kartell-Attentãter gesehen. +Lügner! Wir alle haben den Kartell-Attentäter gesehen. [GTAB_R] Wir werden euch kolumbianische Hunde alle erledigen! @@ -5148,7 +5148,7 @@ Wir werden euch kolumbianische Hunde alle erledigen! Ich befasse mich mit unserem Freund. Mal sehen, was ich aus ihm rauskriege. [GTAB_T] -Komm spãter wieder. Ich werde deine Dienste brauchen. +Komm später wieder. Ich werde deine Dienste brauchen. [GTAB_U] Bitte, Amigo, lass mich nicht hier bei ihr! Die ist 'n Psycho! Amigo? Hey, AMIIIGO!!!...Aiiieeeeaaargghh! @@ -5163,7 +5163,7 @@ Du bist eine sichere Bank. So etwas ist selten in diesen schlechten Zeiten. ~g~Mit einem Wagen der Kolumbianer kommst du in ihren Unterschlupf rein. Im Norden, in Fort Staunton, findest du einen. [FM1_Q1] -~w~Na, kleine Erfrischung gefãllig? Ein bisschen SPANK? +~w~Na, kleine Erfrischung gefällig? Ein bisschen SPANK? [FM1_R] ~w~Hi, Chico. Nein, nur das übliche. @@ -5214,7 +5214,7 @@ da hat er dem Kartell deinen Kopf angeboten, um einen Deal mit denen zu machen. Das kann ich nicht zulassen. Das ist alles meine Schuld. [FM4_4B] -Ich hab ihm erzãhlt, dass wir uns gut verstehen. +Ich hab ihm erzählt, dass wir uns gut verstehen. [FM4_5] Frag mich nicht wieso. Ich weiß es nicht. @@ -6081,7 +6081,7 @@ Cinematic-Kamera Fahr das Fahrzeug in die Garage! [KM3_14] -~r~Du bist gesehen worden. Der Deal fãllt flach! +~r~Du bist gesehen worden. Der Deal fällt flach! [EBAL_H] Warte hier. Ich gehe rein und rede mit Luigi. @@ -6099,13 +6099,13 @@ Hier. Hier, nimm. Hi. Ich bin Misty. [LM4_A] -So ein Mistkerl von den Diablos hat in meinem Gebiet Mãdchen laufen. +So ein Mistkerl von den Diablos hat in meinem Gebiet Mädchen laufen. [FM2_B] -Wir haben einen Verrãter unter uns! +Wir haben einen Verräter unter uns! [FM2_C] -Er verdient kein Geld mit Mãdchen oder Dealen, also wird er Informationen verkaufen. +Er verdient kein Geld mit Mädchen oder Dealen, also wird er Informationen verkaufen. [FM3_CC] ~w~Komm wieder, wenn du die Kohle hast, Bruder. @@ -6132,13 +6132,13 @@ Er verdient kein Geld mit Mãdchen oder Dealen, also wird er Informationen verka ~r~Das Flugzeug ist zerstört worden! [LOV4_10] -~r~Die einzige Spur auf den Verbleib des Pãckchens ist vernichtet worden. +~r~Die einzige Spur auf den Verbleib des Päckchens ist vernichtet worden. [KM2_D] Unnötig zu sagen, dass wir ihm die Autos schenken müssen, um meine Schuld bei ihm zu begleichen. [KM4_B] -Für Lãden, die das Glück haben, unter unserem Schutz zu stehen, ist heute Zahltag. +Für Läden, die das Glück haben, unter unserem Schutz zu stehen, ist heute Zahltag. [KM2_E] Du musst die Autos auf der Liste besorgen und zu einer Garage hinter dem Parkplatz in Newport bringen. @@ -6153,7 +6153,7 @@ Ich weiß, dass einer wie du sehr loyal sein kann, wenn das Geld stimmt. Aber je mehr Leute, desto größer die Gier. [LOVE1_C] -Ein werter Geschãftsfreund, ein alter Asiate, +Ein werter Geschäftsfreund, ein alter Asiate, [LOVE1_I] wird von irgendwelchen Südamerikanern in Aspatria als Geisel festgehalten. @@ -6162,10 +6162,10 @@ wird von irgendwelchen Südamerikanern in Aspatria als Geisel festgehalten. Ich habe ein Treffen mit ihm vereinbart... [MEA4_B4] -Marty schickt dich also? Dem Penner werde ich zeigen, was es heißt, mit mir Geschãfte zu machen. +Marty schickt dich also? Dem Penner werde ich zeigen, was es heißt, mit mir Geschäfte zu machen. [MEA4_B5] -Carl, hi. Ich, ãh, ich brauche noch ein bisschen Zeit, um dein Geld aufzutreiben. +Carl, hi. Ich, äh, ich brauche noch ein bisschen Zeit, um dein Geld aufzutreiben. [MEA1_B4] Mr Chonks schickt dich also. Wollen wir dem Burschen doch mal einen Besuch abstatten. @@ -6174,7 +6174,7 @@ Mr Chonks schickt dich also. Wollen wir dem Burschen doch mal einen Besuch absta Dann wollen wir doch mal ein paar Leute aufmischen... [LOVE1_5] -~g~Hãng hier nicht rum, besorg dir ein Auto der Kolumbianer und rette Loves Geschãftsfreund. +~g~Häng hier nicht rum, besorg dir ein Auto der Kolumbianer und rette Loves Geschäftsfreund. [AS1_D] ~w~Spiel den Köder und locke die Killerkommandos nach Pine Creek, @@ -6210,7 +6210,7 @@ Um die Sirenen dieses Fahrzeugs einzuschalten, drücke die ~h~~k~~VEHICLE_HORN~- ~w~Oh, hi, Baby. [AS3_F] -~w~Das Mãdchen ist ein Naturtalent. +~w~Das Mädchen ist ein Naturtalent. [AS3_F1] ~w~Sie hat unserem Gast eine kleine Info entlockt. @@ -6222,7 +6222,7 @@ Um die Sirenen dieses Fahrzeugs einzuschalten, drücke die ~h~~k~~VEHICLE_HORN~- ~w~Es ist voll mit Catalinas Giftzeug. [AS3_H] -~w~Du entgehst den Security Checks am Flughafen, wenn du dir ein Boot besorgst, zu den Leuchtbojen rausfãhrst +~w~Du entgehst den Security Checks am Flughafen, wenn du dir ein Boot besorgst, zu den Leuchtbojen rausfährst [AS3_H1] und die Maschine im Anflug abschießt. @@ -6252,7 +6252,7 @@ Verdammt, da sind sie!! LOS, LADEN!! Salvatore Leone wird Luigis Club in zirka drei Stunden verlassen (~1~:~1~). [LOVE5_C] -Folge ihm und sorg dafür, dass er und mein Pãckchen wohlbehalten in Pike Creek ankommen. +Folge ihm und sorg dafür, dass er und mein Päckchen wohlbehalten in Pike Creek ankommen. [FESZ_SR] Speicherung fehlgeschlagen! Bitte Memory Card (PS2) in MEMORY CARD-Steckplatz 1 überprüfen und noch einmal versuchen. @@ -6339,13 +6339,13 @@ Daten werden gelöscht. Bitte die Memory Card (PS2) in MEMORY CARD-Steckplatz 1 Luigi sagt, das soll ich dir geben... [LM3_G] -Joey ist einer, den man nicht warten lãsst. Das ist deine Chance. +Joey ist einer, den man nicht warten lässt. Das ist deine Chance. [LM5_E] Bring so viele wie möglich hin, bevor die Cops ihr ganzes Geld versaufen. [JM5_C] -Vor dem Cafe in der Nãhe vom Callahan Point steht ein Auto mit einem Toten drin. +Vor dem Cafe in der Nähe vom Callahan Point steht ein Auto mit einem Toten drin. [RM2_B] Wir waren zusammen in Nicaragua, als dieses Land noch wusste, was es tut. @@ -6354,7 +6354,7 @@ Wir waren zusammen in Nicaragua, als dieses Land noch wusste, was es tut. Irgendwelche Dreckskerle vom Kartell haben ihn gestern verprügelt und kommen heute wieder, um ihm seine Ware abzunehmen. [RM2_D1] -Ich würde es selbst machen, aber meine Bronchien melden sich wieder. Tja, ãh, viel Glück. +Ich würde es selbst machen, aber meine Bronchien melden sich wieder. Tja, äh, viel Glück. [CATINF1] ~g~Schnapp dir Catalina! @@ -6366,13 +6366,13 @@ Ich würde es selbst machen, aber meine Bronchien melden sich wieder. Tja, ãh, Spring auf ein Boot und drücke die ~h~~k~~VEHICLE_ENTER_EXIT~-Taste~w~, um hinein zu gelangen. [BOATIN2] -Wenn du in der Nãhe eines Bootes bist, kannst du die ~h~~k~~VEHICLE_ENTER_EXIT~-Taste ~w~benutzen, um an Bord zu gelangen. +Wenn du in der Nähe eines Bootes bist, kannst du die ~h~~k~~VEHICLE_ENTER_EXIT~-Taste ~w~benutzen, um an Bord zu gelangen. [BOATIN3] Spring auf ein Boot und drücke die ~h~~k~~VEHICLE_ENTER_EXIT~-Taste~w~, um hinein zu gelangen. [BOATIN4] -Wenn du in der Nãhe eines Bootes bist, kannst du die ~h~~k~~VEHICLE_ENTER_EXIT~-Taste ~w~benutzen, um an Bord zu gelangen. +Wenn du in der Nähe eines Bootes bist, kannst du die ~h~~k~~VEHICLE_ENTER_EXIT~-Taste ~w~benutzen, um an Bord zu gelangen. [JM6] 'DIE FLUCHT' @@ -6399,7 +6399,7 @@ Wenn du in der Nãhe eines Bootes bist, kannst du die ~h~~k~~VEHICLE_ENTER_EXIT~ 'GTA' [AS3] -'DER ABFANGJÃGER' +'DER ABFANGJÄGER' [RM2] 'DAS WAFFENARSENAL' @@ -6423,16 +6423,16 @@ Wenn du in der Nãhe eines Bootes bist, kannst du die ~h~~k~~VEHICLE_ENTER_EXIT~ 'ROCK'N ROLL MIT RUMPO' [RM2_E1] -Unglaublich, dass die feigen Sãcke mich wieder ohne ausreichenden Schutz ins Gefecht schicken. +Unglaublich, dass die feigen Säcke mich wieder ohne ausreichenden Schutz ins Gefecht schicken. [GREN_1] -Je lãnger du die ~h~~k~~PED_FIREWEAPON~-Taste~w~ gedrückt hãltst, desto weiter kannst du die Granate werfen. +Je länger du die ~h~~k~~PED_FIREWEAPON~-Taste~w~ gedrückt hältst, desto weiter kannst du die Granate werfen. [GREN_2] -Je lãnger du die ~h~~k~~PED_FIREWEAPON~-Taste~w~ gedrückt hãltst, desto weiter kannst du die Granate werfen. +Je länger du die ~h~~k~~PED_FIREWEAPON~-Taste~w~ gedrückt hältst, desto weiter kannst du die Granate werfen. [GREN_3] -Je lãnger du die ~h~~k~~PED_FIREWEAPON~-Taste~w~ gedrückt hãltst, desto weiter kannst du die Granate werfen. +Je länger du die ~h~~k~~PED_FIREWEAPON~-Taste~w~ gedrückt hältst, desto weiter kannst du die Granate werfen. [LOVE4_G] Die Maschine mit meiner Ware steht im Zollhangar. @@ -6495,7 +6495,7 @@ Neuer Motor und neue Lackierung. Die Cops werden dich nicht identifizieren! Warum nicht ein Taxi 'ausleihen', um dir was dazu zu verdienen...? [TAXIH1] -Halte neben einem gehighlighteten Fußgãnger, um ihn einsteigen zu lassen, dann bringe ihn rechtzeitig an sein Fahrtziel. +Halte neben einem gehighlighteten Fußgänger, um ihn einsteigen zu lassen, dann bringe ihn rechtzeitig an sein Fahrtziel. [LM5_7] ~g~Wenn weniger als vier Girls bei dem ~p~Polizeiball~g~ auftauchen, wird Luigi sauer! @@ -6510,13 +6510,13 @@ Halte neben einem gehighlighteten Fußgãnger, um ihn einsteigen zu lassen, dann Sorry, Baby. [BETRA_B] -Ich bin ein anspruchsvolles Mãdchen und du... +Ich bin ein anspruchsvolles Mädchen und du... [BETRA_C] ... du bist ein kleiner Fisch. [JAILB_C] -Noch gibt es keine nãheren Informationen zu den Hãftlingen, die mit dem Konvoi transportiert wurden, +Noch gibt es keine näheren Informationen zu den Häftlingen, die mit dem Konvoi transportiert wurden, [JAILB_E] Der Konvoi war am frühen Morgen vom Polizei-Hauptquartier aus @@ -6570,10 +6570,10 @@ Diese Memory Card (PS2) ist bereits formatiert. > [FEDSAS3] -- AUSWAHL ÃNDERN +- AUSWAHL ÄNDERN [FEDSAS4] -;=<> - AUSWAHL ÃNDERN +;=<> - AUSWAHL ÄNDERN [SPRAY_4] { re3 change } ~h~~k~~VEHICLE_FIREWEAPON~-Taste ~w~benutzen, um die Wasserkanone abzufeuern. @@ -6594,7 +6594,7 @@ NICK LOVE Liberty City ist heute vom Schrecken gezeichnet. [JAILB_A] -Polizei und Noteinsatzkrãfte arbeiten unter Hochdruck, nachdem heute morgen +Polizei und Noteinsatzkräfte arbeiten unter Hochdruck, nachdem heute morgen [JAILB_B] ein verheerender Anschlag auf einen Polizeikonvoi verübt wurde. @@ -6639,13 +6639,13 @@ Ich habe mein Entertainment-Business mit nichts als dem üppigen Inhalt meiner L GIRLS: [PERPIC] -Versteckte Pãckchen gefunden +Versteckte Päckchen gefunden [CO_ONE] -Verstecktes Pãckchen ~1~ von ~1~ +Verstecktes Päckchen ~1~ von ~1~ [LOVE3_3] -~g~Das Flugzeug hat ~1~ von 6 Pãckchen abgeworfen. +~g~Das Flugzeug hat ~1~ von 6 Päckchen abgeworfen. [FARE11] ~g~Fahrziel: ~w~'Baustelle' ~g~in Fort Staunton. @@ -6681,7 +6681,7 @@ Wetter-Cheat "-Taste - ZURÜCK [RAMP_A] -ALLE AMOKLÃUFE BEENDET! +ALLE AMOKLÄUFE BEENDET! [USJ_ALL] ALLE MONSTER-STUNTS ABSOLVIERT! @@ -6714,7 +6714,7 @@ Jan Feb [MAR] -Mãr +Mär [APR] Apr @@ -6825,7 +6825,7 @@ SUPER-VIERFACH-IRRSINNS-STUNT-BONUS: $~1~ Salvatore Leone wird Luigis Club in zirka drei Stunden verlassen. (0~1~:~1~) [IMPEXPP] -Import-Export Garage, Portland Harbor. Wir haben Bestellungen für verschiedene Fahrzeuge. Nãheres steht auf unserem Schwarzen Brett. +Import-Export Garage, Portland Harbor. Wir haben Bestellungen für verschiedene Fahrzeuge. Näheres steht auf unserem Schwarzen Brett. [VANHSTP] Willst du noch mehr Securicars aufgebrochen haben? Bring sie zu unserer Garage in Portland Harbor. @@ -6834,7 +6834,7 @@ Willst du noch mehr Securicars aufgebrochen haben? Bring sie zu unserer Garage i Zahlen Bestpreise für Neu- und Gebrauchtwagen. Bring sie zum Kran im Nordosten von Portland Harbor. [STANDS] -ZERSTÖRTE ESPRESSOSTÃNDE: +ZERSTÖRTE ESPRESSOSTÄNDE: [STASH] ~g~Deponiere das SPANK auf der ~p~Baustelle! @@ -6846,7 +6846,7 @@ Keine Memory Card (PS2) in MEMORY CARD-Steckplatz 1. Trotzdem starten? (JA oder ~g~Das Flugzeug ist jetzt in Reichweite. [LOVE3_6] -~r~Die Polizei war vor dir bei den Pãckchen! +~r~Die Polizei war vor dir bei den Päckchen! [SIREN_1] Um die Sirenen dieses Fahrzeugs einzuschalten, drücke die ~h~~k~~VEHICLE_HORN~-Taste~w~. @@ -6870,13 +6870,13 @@ Soll die Memory Card (PS2) in MEMORY CARD-Steckplatz 1 wirklich formatiert werde Ladevorgang abgeschlossen. [RM3_5] -~g~Du hast ~1~ von 6 Pãckchen mit Beweisfotos. +~g~Du hast ~1~ von 6 Päckchen mit Beweisfotos. [LOVE3_2] -~g~Du hast alle Pãckchen. Bring sie zu Donald Love. +~g~Du hast alle Päckchen. Bring sie zu Donald Love. [LOVE4_4] -~g~Bring das Pãckchen zu Donald Love! +~g~Bring das Päckchen zu Donald Love! [FEB_SAV] Laden @@ -6894,7 +6894,7 @@ SPIEL LADEN Bitte stecken Sie einen Analog Controller (DUALSHOCK#) oder einen Analog Controller (DUALSHOCK#2) in Controller-Anschluss 1, um fortzufahren. [BET_JB] -VON CATALINA, SEINER GELIEBTEN, IM STICH GELASSEN, FÜR SCHULDIG BEFUNDEN UND VERURTEILT, BEFINDET ER SICH AUF DEM WEG INS GEFÃNGNIS VON LIBERTY CITY. DOCH IN SEINEM KOPF HÃMMERT EIN GEDANKE... MIT EUCH BIN ICH NOCH NICHT FERTIG! +VON CATALINA, SEINER GELIEBTEN, IM STICH GELASSEN, FÜR SCHULDIG BEFUNDEN UND VERURTEILT, BEFINDET ER SICH AUF DEM WEG INS GEFÄNGNIS VON LIBERTY CITY. DOCH IN SEINEM KOPF HÄMMERT EIN GEDANKE... MIT EUCH BIN ICH NOCH NICHT FERTIG! [END_A] Die Bewohner von Cedar Grove erholen sich langsam @@ -6909,13 +6909,13 @@ die sich gestern hier abgespielt haben. Clive Denver, ein Augenzeuge, beschrieb der Polizei [END_E] -den Tãter, den er zusammen mit einer dunkelhaarigen Frau flüchten sah. +den Täter, den er zusammen mit einer dunkelhaarigen Frau flüchten sah. [END_F] Hör mal, wir werden sehr viel Spaß miteinander haben. Weißt du, [END_G] -ich liebe dich nãmlich. Wirklich, du bist so groß und stark, +ich liebe dich nämlich. Wirklich, du bist so groß und stark, [END_H] und genau so einen Mann brauche ich. @@ -6927,7 +6927,7 @@ Jedenfalls - was wollte ich gerade sagen? Weiß nicht mehr. Aber du verstehst doch, was ich meine, oder? [END_K] -Der Donner von Explosionen erschütterte umliegende Hãuser. Menschen rannten in Deckung. +Der Donner von Explosionen erschütterte umliegende Häuser. Menschen rannten in Deckung. [END_L] Mehrere Anwohner wurden verletzt, als es in dem Chaos zu einem Schusswechsel @@ -6936,7 +6936,7 @@ Mehrere Anwohner wurden verletzt, als es in dem Chaos zu einem Schusswechsel zwischen Bodeneinheiten und einem Helikopter kam, der über dem Damm kreiste. [END_N] -Ja, von hier in den Gãrten konnten wir alles genau beobachten. +Ja, von hier in den Gärten konnten wir alles genau beobachten. [END_O] Wie sie den Helikopter dann abgeschossen haben, @@ -6966,7 +6966,7 @@ Ich hab mir 'nen Fingernagel abgebrochen und meine Frisur ist hin! Fünfzig Dollar im Eimer! [PAPER1] -GANGSTER VON KOMPLIZIN, DIE ER LIEBT, VERRATEN. GERICHT BEFINDET RÃUBER EINSTIMMIG FÜR SCHULDIG. +GANGSTER VON KOMPLIZIN, DIE ER LIEBT, VERRATEN. GERICHT BEFINDET RÄUBER EINSTIMMIG FÜR SCHULDIG. [PAPER2] ZEHN JAHRE AUS LIEBE! @@ -6975,10 +6975,10 @@ ZEHN JAHRE AUS LIEBE! und es hat sich bisher auch keine kriminelle Vereinigung zu dem Attentat bekannt. [JAILB_H] -Die meisten Zeugen kamen ums Leben und die Brücke wurde schwer beschãdigt. +Die meisten Zeugen kamen ums Leben und die Brücke wurde schwer beschädigt. [JAILB_I] -Man geht davon aus, dass auch einige der Hãftlinge bei der sich ereignenden Explosion umkamen. +Man geht davon aus, dass auch einige der Häftlinge bei der sich ereignenden Explosion umkamen. [JAILB_J] * @@ -7005,7 +7005,7 @@ Nach links Nach rechts [FEC_PWF] -Vorwãrts gehen +Vorwärts gehen [FEC_PWT] Auf Kamera zugehen @@ -7026,13 +7026,13 @@ Eine Waffe nach rechts Ziel fixieren [FEC_PJP] -Fußgãnger springen +Fußgänger springen [FEC_PSP] -Fußgãnger sprinten +Fußgänger sprinten [FEC_PSH] -Fußgãnger schießen +Fußgänger schießen [FEC_TLF] Ein Ziel nach links @@ -7044,10 +7044,10 @@ Ein Ziel nach rechts Kamera hinter Spieler zentrieren [FEC_SZI] -Mit Prãzisionsgewehr heranzoomen +Mit Präzisionsgewehr heranzoomen [FEC_SZO] -Mit Prãzisionsgewehr herauszoomen +Mit Präzisionsgewehr herauszoomen [FEC_LKL] First-Person nach links schauen @@ -7152,7 +7152,7 @@ Name: Spiel-Name: [FEM_MAP] -Karte auswãhlen +Karte auswählen [FEN_PLS] Spieler-Einstellungen @@ -7326,7 +7326,7 @@ NEUES SPIEL SPIEL SPEICHERN [FET_MAP] -KARTE AUSWÃHLEN +KARTE AUSWÄHLEN [FET_GT] SPIEL-TYP @@ -7353,7 +7353,7 @@ Achtung! OK [FED_CON] -Löschen bestãtigen +Löschen bestätigen [FES_SSC] Spiel wurde gespeichert. @@ -7374,7 +7374,7 @@ Löschen fehlgeschlagen. Speichern fehlgeschlagen. [FEC_LUN] -Laden fehlgeschlagen. Datei beschãdigt. Bitte löschen. +Laden fehlgeschlagen. Datei beschädigt. Bitte löschen. [FEN_PLA] Anzahl der Spieler: @@ -7467,7 +7467,7 @@ Controller-Typ: ÜBERNEHMEN [FES_CSA] -Wãhlen Sie eine Skin aus der Liste aus: +Wählen Sie eine Skin aus der Liste aus: [FES_SKN] SKIN-NAME @@ -7485,7 +7485,7 @@ SPIELER MP3 Dieses Spiel wirklich speichern? [FES_CGA] -Momentan verfügbare Speicherplãtze: +Momentan verfügbare Speicherplätze: [FES_SCG] Laufendes Spiel speichern? @@ -7497,16 +7497,16 @@ Spiel laden und weiterspielen? Feuern [FEC_NWE] -Nãchste Waffe +Nächste Waffe [FEC_PWE] Vorherige Waffe [FEC_FOR] -Vorwãrts +Vorwärts [FEC_BAC] -Rückwãrts +Rückwärts [FEC_LEF] Links @@ -7530,7 +7530,7 @@ Radio Spezialmission [FEC_CMR] -Blickwinkel ãndern +Blickwinkel ändern [FEC_JMP] Springen @@ -7554,7 +7554,7 @@ Nach links schauen Nach rechts schauen [FEC_NTR] -Nãchstes Ziel +Nächstes Ziel [FEC_PTT] Vorheriges Ziel @@ -7599,7 +7599,7 @@ NICHT BEL. STEUERUNGSART [FET_RDK] -STEUERUNG ÃNDERN +STEUERUNG ÄNDERN [FET_AMS] MAUS-EINSTELLG. @@ -7623,10 +7623,10 @@ Geschütz Links Geschütz Rechts [FEC_TFU] -Geschütz /Dodo aufwãrts +Geschütz /Dodo aufwärts [FEC_TFD] -Geschütz /Dodo abwãrts +Geschütz /Dodo abwärts [FEC_MWF] RAD AUFW. @@ -7758,7 +7758,7 @@ WINKLICK GTA 3 [WIN_95] -GTA 3 lãuft nicht unter Windows 95 +GTA 3 läuft nicht unter Windows 95 [WIN_DX] GTA 3 benötigt mind. DirectX Version 8.1 @@ -7809,7 +7809,7 @@ STANDARD WIEDERHERST. HELLIGKEIT [FED_TRA] -UNSCHÃRFE-FX +UNSCHÄRFE-FX [FEM_LOD] DISTANZ-DARSTELLG. @@ -7926,10 +7926,10 @@ NUM STERN LINKS,RECHTS,MAUSRAD ZUR EINSTLLG. [FET_CIG] -RÜCKT. ZUM LÖSCHEN - LMT,RETURN ZUM ÃNDERN +RÜCKT. ZUM LÖSCHEN - LMT,RETURN ZUM ÄNDERN [FET_RIG] -NEUE STEUERUNG FÜR DIESE AKTION WÃHLEN ODER ESC FÜR ABBRUCH +NEUE STEUERUNG FÜR DIESE AKTION WÄHLEN ODER ESC FÜR ABBRUCH [FET_EIG] KANN DIESER AKTION KEINE STEUERUNG ZUWEISEN @@ -7986,7 +7986,7 @@ Lösche Daten, bitte warten... Lade Daten, bitte warten... [FEC_SLC] -Slot ist beschãdigt +Slot ist beschädigt [FED_LFL] Spiel konnte nicht geladen werden. Das Spiel wird neu gestartet. diff --git a/utils/gxt/gxt.exe b/utils/gxt/gxt.exe index ff264dadc8c8e716964fbbf61cf4d1842881c12b..0f55b7605a8a83400f2b7a64d7527cfa2457c6b5 100644 GIT binary patch literal 307200 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

wjK^`mnCeatS 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 G1pWsQQ@aHK delta 46670 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 From 4eb9a149e40a1c580f410bdc8900874d4d765672 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 10 Jul 2021 01:06:34 +0200 Subject: [PATCH 206/314] recompile german.gxt --- gamefiles/TEXT/german.gxt | Bin 242498 -> 242608 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index 88c54095990f0ebb91b3fca3770e1836999a9447..1d6ec98874c68b8b7adceaf0d27e6a0de72e249f 100644 GIT binary patch delta 1372 zcmZ8gU1%It6#njxK|wb~TUfUix+P8OK-0}^b_Ejy?$1oJ$#-*vQL+1{^!z%onP-7!Pf`jJv7O zb}a0Z76UR*{w)W=tFoJ~kI4(TgEbrEKHvFQFVYpUd8D6mrJMD(r(xy@A7!!`NM;IKF@yV6PVr_6BuLC&S$ zir)z_u3f;Lhg2(W({+JYWi*o%t8#?vraYY)j=mNmYk3DJ<<-ou@xOFQw^^U6;)cGT z+nlWBu@zi?qGgCz0(0n`5I+W2haZcG$>95u+u6ti>GjRE*EiP$|B=r&*NmV0GZV<7 zj5=(tqbOmWb{!4vLB|hk--Cl9&lS@1Z(cG?)6q$_P6#e4C@`@GV3Kx;zno4f_&c_Y z*ppcXCUgq!9T1$y7(pJ>9VV$gOF|HtrKkJyvmY8etp=T=+l`f(WV4>feUxyQyK3BK z5srBe?ETK<2y_IQ~i78+SpI{dAnB(~zPGLb? zGhCmiH-{OnCv>ciX`GQ87k2uIH^qH>$FYdBID=&Z6hQ*V2wUQQoRmv)$49Y;S9PSt zbwQsl`!~N7@!COxR&+?!R4FZzED@4mjTMrriY>g0lk8#{hxBd!UruGt6TiUUvVZ$i z!(MZE@iAWiD6iL`V*RM{@>O~z?&{Leqfnw}DTy94i~jd{Bs5kHObw{>Sjw8QOu3ZI zN>Y`7o}Lm>RrNS*XBUfvZ-?P2UAFFTw2hdRqoV?&;cRPq?>vlkW~)~QG8Z{x-LL;` z+o*I^NnP-N`oQS#ouVWs@PZa@o}wrTPgAN{iZrcdqRRg4W#jYv``O?TRDJV`@zt>v zA{}DSlfTG}1SwaTzesV)X+6b73YowV;}d*3>T~h9s~4`Gl&ux)dYN@QTI_vhL1mLsb%dHs_JaAUO21Fu#t{i*jkg)9skuM?I7ly%7&$kkIz-EZLNgfc0j(n-9hUv-AmP5r)eK0BJG zZp8sE>1=TzyJHx8o!KBnIdO{DRQA3Bg`Hv)V^M!UK1F)_CJJgtPxAahFHF3XyO&}@ z-@|W@3CFM#hQNf*P8QUNp5{5DFHTNn-%gQDw}ONE*5t3bj||bU)0&NN$Gk7>%rsrR zm~1_}W~rGZf8v@_ZzQ*-4rSD6^3(LsrOb!pS2wzEZFCiXnJ+iG)-TUYmrzFwHP|R2 zpe&)uvyLi2yN?%mwh>daQK2U=*0_)9eRadicW2GTLj$vfc?_&DB;ePCYeIb{1obw9 z#U^)2SY}Mj2%l$@i2vfHoOnZ0YSAY$VoXSMXgqVgwb49EN0mmfpimH~(5TVLX5u8Z zYVYHlWGXdX!o@6A<$*3w8>bjL$NJI=7thll;W8F*g`bUiyn=Pg^R$Ru;oZh67J0X^ z%=y$n92lvSw`CXSoT2X zE0bt&Ph?Ai1160uh?I{Q>h}(9S&f>kst}IN6r+^Ku0 Date: Sat, 10 Jul 2021 01:17:03 +0200 Subject: [PATCH 207/314] readme: fix lto option --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 53b5a761..9ccabf1e 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ Microsoft recently discontinued its downloads of the DX9 SDK. You can download a **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows).

-> :information_source: premake has an `--lto` option if you want the project to be compiled with Link Time Optimization. +> :information_source: premake has an `--with-lto` option if you want the project to be compiled with Link Time Optimization. > :information_source: There are various settings in [config.h](https://github.com/GTAmodding/re3/tree/master/src/core/config.h), you may want to take a look there. From 011aafa0435d2c60dc4e0769ed4c93ed1761e3f6 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 5 Jul 2021 18:07:26 +0200 Subject: [PATCH 208/314] finish COMPATIBLE_SAVES and FIX_INCOMPATIBLE_SAVES --- src/control/AutoPilot.cpp | 58 ++-- src/control/Garages.cpp | 115 +++++-- src/control/Garages.h | 22 +- src/control/Phones.cpp | 45 ++- src/control/Pickups.cpp | 33 +- src/control/Script5.cpp | 36 +-- src/core/Pools.cpp | 10 +- src/core/Zones.cpp | 78 ++++- src/core/config.h | 4 +- src/entities/Entity.cpp | 4 +- src/objects/ParticleObject.cpp | 109 ++++++- src/peds/Ped.cpp | 12 +- src/peds/PlayerPed.cpp | 6 +- src/save/GenericGameStorage.cpp | 546 ++++++++++++++++++++++++++++++++ src/save/GenericGameStorage.h | 5 + src/save/PCSave.cpp | 7 + src/save/PCSave.h | 2 +- src/save/SaveBuf.h | 9 + src/skel/crossplatform.cpp | 23 ++ src/skel/crossplatform.h | 3 + src/vehicles/Automobile.cpp | 4 +- src/vehicles/Boat.cpp | 2 +- src/vehicles/Cranes.cpp | 86 ++++- src/vehicles/Vehicle.cpp | 99 +++--- src/weapons/Weapon.cpp | 2 +- 25 files changed, 1161 insertions(+), 159 deletions(-) diff --git a/src/control/AutoPilot.cpp b/src/control/AutoPilot.cpp index 22a73179..5af4071a 100644 --- a/src/control/AutoPilot.cpp +++ b/src/control/AutoPilot.cpp @@ -50,41 +50,41 @@ void CAutoPilot::RemoveOnePathNode() #ifdef COMPATIBLE_SAVES void CAutoPilot::Save(uint8*& buf) { - WriteSaveBuf(buf, m_nCurrentRouteNode); - WriteSaveBuf(buf, m_nNextRouteNode); - WriteSaveBuf(buf, m_nPrevRouteNode); - WriteSaveBuf(buf, m_nTimeEnteredCurve); - WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); - WriteSaveBuf(buf, m_nCurrentPathNodeInfo); - WriteSaveBuf(buf, m_nNextPathNodeInfo); - WriteSaveBuf(buf, m_nPreviousPathNodeInfo); - WriteSaveBuf(buf, m_nAntiReverseTimer); - WriteSaveBuf(buf, m_nTimeToStartMission); - WriteSaveBuf(buf, m_nPreviousDirection); - WriteSaveBuf(buf, m_nCurrentDirection); - WriteSaveBuf(buf, m_nNextDirection); - WriteSaveBuf(buf, m_nCurrentLane); - WriteSaveBuf(buf, m_nNextLane); - WriteSaveBuf(buf, m_nDrivingStyle); - WriteSaveBuf(buf, m_nCarMission); - WriteSaveBuf(buf, m_nTempAction); - WriteSaveBuf(buf, m_nTimeTempAction); - WriteSaveBuf(buf, m_fMaxTrafficSpeed); - WriteSaveBuf(buf, m_nCruiseSpeed); + WriteSaveBuf(buf, m_nCurrentRouteNode); + WriteSaveBuf(buf, m_nNextRouteNode); + WriteSaveBuf(buf, m_nPrevRouteNode); + WriteSaveBuf(buf, m_nTimeEnteredCurve); + WriteSaveBuf(buf, m_nTimeToSpendOnCurrentCurve); + WriteSaveBuf(buf, m_nCurrentPathNodeInfo); + WriteSaveBuf(buf, m_nNextPathNodeInfo); + WriteSaveBuf(buf, m_nPreviousPathNodeInfo); + WriteSaveBuf(buf, m_nAntiReverseTimer); + WriteSaveBuf(buf, m_nTimeToStartMission); + WriteSaveBuf(buf, m_nPreviousDirection); + WriteSaveBuf(buf, m_nCurrentDirection); + WriteSaveBuf(buf, m_nNextDirection); + WriteSaveBuf(buf, m_nCurrentLane); + WriteSaveBuf(buf, m_nNextLane); + WriteSaveBuf(buf, m_nDrivingStyle); + WriteSaveBuf(buf, m_nCarMission); + WriteSaveBuf(buf, m_nTempAction); + WriteSaveBuf(buf, m_nTimeTempAction); + WriteSaveBuf(buf, m_fMaxTrafficSpeed); + WriteSaveBuf(buf, m_nCruiseSpeed); uint8 flags = 0; if (m_bSlowedDownBecauseOfCars) flags |= BIT(0); if (m_bSlowedDownBecauseOfPeds) flags |= BIT(1); if (m_bStayInCurrentLevel) flags |= BIT(2); if (m_bStayInFastLane) flags |= BIT(3); if (m_bIgnorePathfinding) flags |= BIT(4); - WriteSaveBuf(buf, flags); - SkipSaveBuf(buf, 2); - WriteSaveBuf(buf, m_vecDestinationCoors.x); - WriteSaveBuf(buf, m_vecDestinationCoors.y); - WriteSaveBuf(buf, m_vecDestinationCoors.z); - SkipSaveBuf(buf, 32); - WriteSaveBuf(buf, m_nPathFindNodesCount); - SkipSaveBuf(buf, 6); + WriteSaveBuf(buf, flags); + ZeroSaveBuf(buf, 2); + WriteSaveBuf(buf, m_vecDestinationCoors.x); + WriteSaveBuf(buf, m_vecDestinationCoors.y); + WriteSaveBuf(buf, m_vecDestinationCoors.z); + ZeroSaveBuf(buf, 32); + WriteSaveBuf(buf, m_nPathFindNodesCount); + ZeroSaveBuf(buf, 6); } void CAutoPilot::Load(uint8*& buf) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 3410c881..91971ae7 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -26,13 +26,6 @@ #include "World.h" #include "SaveBuf.h" -#define CRUSHER_GARAGE_X1 (1135.5f) -#define CRUSHER_GARAGE_Y1 (57.0f) -#define CRUSHER_GARAGE_Z1 (-1.0f) -#define CRUSHER_GARAGE_X2 (1149.5f) -#define CRUSHER_GARAGE_Y2 (63.7f) -#define CRUSHER_GARAGE_Z2 (3.5f) - #define ROTATED_DOOR_OPEN_SPEED (0.015f) #define ROTATED_DOOR_CLOSE_SPEED (0.02f) #define DEFAULT_DOOR_OPEN_SPEED (0.035f) @@ -1883,11 +1876,12 @@ void CStoredCar::StoreCar(CVehicle* pVehicle) m_nRadioStation = pVehicle->m_nRadioStation; m_nVariationA = pVehicle->m_aExtras[0]; m_nVariationB = pVehicle->m_aExtras[1]; - m_bBulletproof = pVehicle->bBulletProof; - m_bFireproof = pVehicle->bFireProof; - m_bExplosionproof = pVehicle->bExplosionProof; - m_bCollisionproof = pVehicle->bCollisionProof; - m_bMeleeproof = pVehicle->bMeleeProof; + m_nFlags = 0; + if (pVehicle->bBulletProof) m_nFlags |= FLAG_BULLETPROOF; + if (pVehicle->bFireProof) m_nFlags |= FLAG_FIREPROOF; + if (pVehicle->bExplosionProof) m_nFlags |= FLAG_EXPLOSIONPROOF; + if (pVehicle->bCollisionProof) m_nFlags |= FLAG_COLLISIONPROOF; + if (pVehicle->bMeleeProof) m_nFlags |= FLAG_MELEEPROOF; if (pVehicle->IsCar()) m_nCarBombType = ((CAutomobile*)pVehicle)->m_bombType; } @@ -1936,11 +1930,11 @@ CVehicle* CStoredCar::RestoreCar() } pVehicle->bHasBeenOwnedByPlayer = true; pVehicle->m_nDoorLock = CARLOCK_UNLOCKED; - pVehicle->bBulletProof = m_bBulletproof; - pVehicle->bFireProof = m_bFireproof; - pVehicle->bExplosionProof = m_bExplosionproof; - pVehicle->bCollisionProof = m_bCollisionproof; - pVehicle->bMeleeProof = m_bMeleeproof; + if (m_nFlags & FLAG_BULLETPROOF) pVehicle->bBulletProof = true; + if (m_nFlags & FLAG_FIREPROOF) pVehicle->bFireProof = true; + if (m_nFlags & FLAG_EXPLOSIONPROOF) pVehicle->bExplosionProof = true; + if (m_nFlags & FLAG_COLLISIONPROOF) pVehicle->bCollisionProof = true; + if (m_nFlags & FLAG_MELEEPROOF) pVehicle->bMeleeProof = true; return pVehicle; } @@ -2327,8 +2321,47 @@ void CGarages::Save(uint8 * buf, uint32 * size) WriteSaveBuf(buf, aCarsInSafeHouse2[i]); WriteSaveBuf(buf, aCarsInSafeHouse3[i]); } - for (int i = 0; i < NUM_GARAGES; i++) + for (int i = 0; i < NUM_GARAGES; i++) { +#ifdef COMPATIBLE_SAVES + WriteSaveBuf(buf, aGarages[i].m_eGarageType); + WriteSaveBuf(buf, aGarages[i].m_eGarageState); + WriteSaveBuf(buf, aGarages[i].field_2); + WriteSaveBuf(buf, aGarages[i].m_bClosingWithoutTargetCar); + WriteSaveBuf(buf, aGarages[i].m_bDeactivated); + WriteSaveBuf(buf, aGarages[i].m_bResprayHappened); + ZeroSaveBuf(buf, 2); + WriteSaveBuf(buf, aGarages[i].m_nTargetModelIndex); + ZeroSaveBuf(buf, 4 + 4); + WriteSaveBuf(buf, aGarages[i].m_bDoor1PoolIndex); + WriteSaveBuf(buf, aGarages[i].m_bDoor2PoolIndex); + WriteSaveBuf(buf, aGarages[i].m_bDoor1IsDummy); + WriteSaveBuf(buf, aGarages[i].m_bDoor2IsDummy); + WriteSaveBuf(buf, aGarages[i].m_bRecreateDoorOnNextRefresh); + WriteSaveBuf(buf, aGarages[i].m_bRotatedDoor); + WriteSaveBuf(buf, aGarages[i].m_bCameraFollowsPlayer); + ZeroSaveBuf(buf, 1); + WriteSaveBuf(buf, aGarages[i].m_fX1); + WriteSaveBuf(buf, aGarages[i].m_fX2); + WriteSaveBuf(buf, aGarages[i].m_fY1); + WriteSaveBuf(buf, aGarages[i].m_fY2); + WriteSaveBuf(buf, aGarages[i].m_fZ1); + WriteSaveBuf(buf, aGarages[i].m_fZ2); + WriteSaveBuf(buf, aGarages[i].m_fDoorPos); + WriteSaveBuf(buf, aGarages[i].m_fDoorHeight); + WriteSaveBuf(buf, aGarages[i].m_fDoor1X); + WriteSaveBuf(buf, aGarages[i].m_fDoor1Y); + WriteSaveBuf(buf, aGarages[i].m_fDoor2X); + WriteSaveBuf(buf, aGarages[i].m_fDoor2Y); + WriteSaveBuf(buf, aGarages[i].m_fDoor1Z); + WriteSaveBuf(buf, aGarages[i].m_fDoor2Z); + WriteSaveBuf(buf, aGarages[i].m_nTimeToStartAction); + WriteSaveBuf(buf, aGarages[i].m_bCollectedCarsState); + ZeroSaveBuf(buf, 3 + 4 + 4); + ZeroSaveBuf(buf, sizeof(aGarages[i].m_sStoredCar)); +#else WriteSaveBuf(buf, aGarages[i]); +#endif + } #ifdef FIX_GARAGE_SIZE VALIDATESAVEBUF(*size); #endif @@ -2339,11 +2372,7 @@ const CStoredCar &CStoredCar::operator=(const CStoredCar & other) m_nModelIndex = other.m_nModelIndex; m_vecPos = other.m_vecPos; m_vecAngle = other.m_vecAngle; - m_bBulletproof = other.m_bBulletproof; - m_bFireproof = other.m_bFireproof; - m_bExplosionproof = other.m_bExplosionproof; - m_bCollisionproof = other.m_bCollisionproof; - m_bMeleeproof = other.m_bMeleeproof; + m_nFlags = other.m_nFlags; m_nPrimaryColor = other.m_nPrimaryColor; m_nSecondaryColor = other.m_nSecondaryColor; m_nRadioStation = other.m_nRadioStation; @@ -2357,7 +2386,7 @@ void CGarages::Load(uint8* buf, uint32 size) { #ifdef FIX_GARAGE_SIZE INITSAVEBUF - assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)); + assert(size == (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage))); #else assert(size == 5484); #endif @@ -2380,7 +2409,45 @@ void CGarages::Load(uint8* buf, uint32 size) ReadSaveBuf(&aCarsInSafeHouse3[i], buf); } for (int i = 0; i < NUM_GARAGES; i++) { +#ifdef COMPATIBLE_SAVES + ReadSaveBuf(&aGarages[i].m_eGarageType, buf); + ReadSaveBuf(&aGarages[i].m_eGarageState, buf); + ReadSaveBuf(&aGarages[i].field_2, buf); + ReadSaveBuf(&aGarages[i].m_bClosingWithoutTargetCar, buf); + ReadSaveBuf(&aGarages[i].m_bDeactivated, buf); + ReadSaveBuf(&aGarages[i].m_bResprayHappened, buf); + SkipSaveBuf(buf, 2); + ReadSaveBuf(&aGarages[i].m_nTargetModelIndex, buf); + SkipSaveBuf(buf, 4 + 4); + ReadSaveBuf(&aGarages[i].m_bDoor1PoolIndex, buf); + ReadSaveBuf(&aGarages[i].m_bDoor2PoolIndex, buf); + ReadSaveBuf(&aGarages[i].m_bDoor1IsDummy, buf); + ReadSaveBuf(&aGarages[i].m_bDoor2IsDummy, buf); + ReadSaveBuf(&aGarages[i].m_bRecreateDoorOnNextRefresh, buf); + ReadSaveBuf(&aGarages[i].m_bRotatedDoor, buf); + ReadSaveBuf(&aGarages[i].m_bCameraFollowsPlayer, buf); + SkipSaveBuf(buf, 1); + ReadSaveBuf(&aGarages[i].m_fX1, buf); + ReadSaveBuf(&aGarages[i].m_fX2, buf); + ReadSaveBuf(&aGarages[i].m_fY1, buf); + ReadSaveBuf(&aGarages[i].m_fY2, buf); + ReadSaveBuf(&aGarages[i].m_fZ1, buf); + ReadSaveBuf(&aGarages[i].m_fZ2, buf); + ReadSaveBuf(&aGarages[i].m_fDoorPos, buf); + ReadSaveBuf(&aGarages[i].m_fDoorHeight, buf); + ReadSaveBuf(&aGarages[i].m_fDoor1X, buf); + ReadSaveBuf(&aGarages[i].m_fDoor1Y, buf); + ReadSaveBuf(&aGarages[i].m_fDoor2X, buf); + ReadSaveBuf(&aGarages[i].m_fDoor2Y, buf); + ReadSaveBuf(&aGarages[i].m_fDoor1Z, buf); + ReadSaveBuf(&aGarages[i].m_fDoor2Z, buf); + ReadSaveBuf(&aGarages[i].m_nTimeToStartAction, buf); + ReadSaveBuf(&aGarages[i].m_bCollectedCarsState, buf); + SkipSaveBuf(buf, 3 + 4 + 4); + SkipSaveBuf(buf, sizeof(aGarages[i].m_sStoredCar)); +#else ReadSaveBuf(&aGarages[i], buf); +#endif aGarages[i].m_pDoor1 = nil; aGarages[i].m_pDoor2 = nil; aGarages[i].m_pTarget = nil; diff --git a/src/control/Garages.h b/src/control/Garages.h index a7dfa462..8a9fd1b6 100644 --- a/src/control/Garages.h +++ b/src/control/Garages.h @@ -51,14 +51,17 @@ enum class CStoredCar { + enum { + FLAG_BULLETPROOF = 0x1, + FLAG_FIREPROOF = 0x2, + FLAG_EXPLOSIONPROOF = 0x4, + FLAG_COLLISIONPROOF = 0x8, + FLAG_MELEEPROOF = 0x10, + }; int32 m_nModelIndex; CVector m_vecPos; CVector m_vecAngle; - int32 m_bBulletproof : 1; - int32 m_bFireproof : 1; - int32 m_bExplosionproof : 1; - int32 m_bCollisionproof : 1; - int32 m_bMeleeproof : 1; + int32 m_nFlags; int8 m_nPrimaryColor; int8 m_nSecondaryColor; int8 m_nRadioStation; @@ -78,6 +81,13 @@ VALIDATE_SIZE(CStoredCar, 0x28); #define SWITCH_GARAGE_DISTANCE_CLOSE 40.0f +#define CRUSHER_GARAGE_X1 (1135.5f) +#define CRUSHER_GARAGE_Y1 (57.0f) +#define CRUSHER_GARAGE_Z1 (-1.0f) +#define CRUSHER_GARAGE_X2 (1149.5f) +#define CRUSHER_GARAGE_Y2 (63.7f) +#define CRUSHER_GARAGE_Z2 (3.5f) + class CGarage { public: @@ -87,7 +97,7 @@ public: bool m_bClosingWithoutTargetCar; bool m_bDeactivated; bool m_bResprayHappened; - int m_nTargetModelIndex; + int32 m_nTargetModelIndex; CEntity *m_pDoor1; CEntity *m_pDoor2; uint8 m_bDoor1PoolIndex; diff --git a/src/control/Phones.cpp b/src/control/Phones.cpp index f9cb1421..7632cfa3 100644 --- a/src/control/Phones.cpp +++ b/src/control/Phones.cpp @@ -18,6 +18,12 @@ #include "Replay.h" #endif +#ifdef COMPATIBLE_SAVES +#define PHONEINFO_SAVE_SIZE 0xA30 +#else +#define PHONEINFO_SAVE_SIZE sizeof(CPhoneInfo) +#endif + CPhoneInfo gPhoneInfo; bool CPhoneInfo::bDisplayingPhoneMessage; // is phone picked up @@ -209,6 +215,22 @@ CPhoneInfo::IsMessageBeingDisplayed(int phoneId) return pPhoneDisplayingMessages == &m_aPhones[phoneId]; } +#ifdef COMPATIBLE_SAVES +static inline void +LoadPhone(CPhone &phone, uint8 *&buf) +{ + ReadSaveBuf(&phone.m_vecPos, buf); + SkipSaveBuf(buf, 6 * 4); + ReadSaveBuf(&phone.m_repeatedMessagePickupStart, buf); + uint32 tmp; + ReadSaveBuf(&tmp, buf); + phone.m_pEntity = (CEntity*)(uintptr)tmp; + ReadSaveBuf(&phone.m_nState, buf); + ReadSaveBuf(&phone.m_visibleToCam, buf); + SkipSaveBuf(buf, 3); +} +#endif + void CPhoneInfo::Load(uint8 *buf, uint32 size) { @@ -226,7 +248,12 @@ INITSAVEBUF // We can do it without touching saves. We'll only load script phones, others are already loaded in Initialise for (int i = 0; i < 50; i++) { CPhone phoneToLoad; +#ifdef COMPATIBLE_SAVES + phoneToLoad.m_apMessages[0]=phoneToLoad.m_apMessages[1]=phoneToLoad.m_apMessages[2]=phoneToLoad.m_apMessages[3]=phoneToLoad.m_apMessages[4]=phoneToLoad.m_apMessages[5] = nil; + LoadPhone(phoneToLoad, buf); +#else ReadSaveBuf(&phoneToLoad, buf); +#endif if (ignoreOtherPhones) continue; @@ -252,7 +279,11 @@ INITSAVEBUF m_nScriptPhonesMax = scriptPhonesMax; for (int i = 0; i < NUMPHONES; i++) { +#ifdef COMPATIBLE_SAVES + LoadPhone(m_aPhones[i], buf); +#else ReadSaveBuf(&m_aPhones[i], buf); +#endif // It's saved as building pool index in save file, convert it to true entity if (m_aPhones[i].m_pEntity) { m_aPhones[i].m_pEntity = CPools::GetBuildingPool()->GetSlot((uintptr)m_aPhones[i].m_pEntity - 1); @@ -376,7 +407,7 @@ CPhoneInfo::Initialise(void) void CPhoneInfo::Save(uint8 *buf, uint32 *size) { - *size = sizeof(CPhoneInfo); + *size = PHONEINFO_SAVE_SIZE; INITSAVEBUF WriteSaveBuf(buf, m_nMax); WriteSaveBuf(buf, m_nScriptPhonesMax); @@ -385,12 +416,24 @@ INITSAVEBUF #else for (int phoneId = 0; phoneId < NUMPHONES; phoneId++) { #endif +#ifdef COMPATIBLE_SAVES + WriteSaveBuf(buf, m_aPhones[phoneId].m_vecPos); + ZeroSaveBuf(buf, 6 * 4); + WriteSaveBuf(buf, m_aPhones[phoneId].m_repeatedMessagePickupStart); + // Convert entity pointer to building pool index while saving + int32 tmp = m_aPhones[phoneId].m_pEntity ? CPools::GetBuildingPool()->GetJustIndex_NoFreeAssert((CBuilding*)m_aPhones[phoneId].m_pEntity) + 1 : 0; + WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, m_aPhones[phoneId].m_nState); + WriteSaveBuf(buf, m_aPhones[phoneId].m_visibleToCam); + ZeroSaveBuf(buf, 3); +#else CPhone* phone = WriteSaveBuf(buf, m_aPhones[phoneId]); // Convert entity pointer to building pool index while saving if (phone->m_pEntity) { phone->m_pEntity = (CEntity*) (CPools::GetBuildingPool()->GetJustIndex_NoFreeAssert((CBuilding*)phone->m_pEntity) + 1); } +#endif } VALIDATESAVEBUF(*size) } diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp index 10175fba..8d3472ea 100644 --- a/src/control/Pickups.cpp +++ b/src/control/Pickups.cpp @@ -32,6 +32,12 @@ #include "WaterLevel.h" #include "World.h" +#ifdef COMPATIBLE_SAVES +#define PICKUPS_SAVE_SIZE 0x24C0 +#else +#define PICKUPS_SAVE_SIZE sizeof(aPickUps) +#endif + CPickup CPickups::aPickUps[NUMPICKUPS]; int16 CPickups::NumMessages; int32 CPickups::aPickUpsCollected[NUMCOLLECTEDPICKUPS]; @@ -1000,10 +1006,23 @@ CPickups::Load(uint8 *buf, uint32 size) INITSAVEBUF for (int32 i = 0; i < NUMPICKUPS; i++) { +#ifdef COMPATIBLE_SAVES + ReadSaveBuf(&aPickUps[i].m_eType, buf); + ReadSaveBuf(&aPickUps[i].m_bRemoved, buf); + ReadSaveBuf(&aPickUps[i].m_nQuantity, buf); + int32 tmp; + ReadSaveBuf(&tmp, buf); + aPickUps[i].m_pObject = aPickUps[i].m_eType != PICKUP_NONE && tmp != 0 ? CPools::GetObjectPool()->GetSlot(tmp - 1) : nil; + ReadSaveBuf(&aPickUps[i].m_nTimer, buf); + ReadSaveBuf(&aPickUps[i].m_eModelIndex, buf); + ReadSaveBuf(&aPickUps[i].m_nIndex, buf); + ReadSaveBuf(&aPickUps[i].m_vecPos, buf); +#else ReadSaveBuf(&aPickUps[i], buf); if (aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil) aPickUps[i].m_pObject = CPools::GetObjectPool()->GetSlot((uintptr)aPickUps[i].m_pObject - 1); +#endif } ReadSaveBuf(&CollectedPickUpIndex, buf); @@ -1019,14 +1038,26 @@ VALIDATESAVEBUF(size) void CPickups::Save(uint8 *buf, uint32 *size) { - *size = sizeof(aPickUps) + sizeof(uint16) + sizeof(uint16) + sizeof(aPickUpsCollected); + *size = PICKUPS_SAVE_SIZE + sizeof(uint16) + sizeof(uint16) + sizeof(aPickUpsCollected); INITSAVEBUF for (int32 i = 0; i < NUMPICKUPS; i++) { +#ifdef COMPATIBLE_SAVES + WriteSaveBuf(buf, aPickUps[i].m_eType); + WriteSaveBuf(buf, aPickUps[i].m_bRemoved); + WriteSaveBuf(buf, aPickUps[i].m_nQuantity); + int32 tmp = aPickUps[i].m_eType != PICKUP_NONE && aPickUps[i].m_pObject != nil ? CPools::GetObjectPool()->GetJustIndex_NoFreeAssert(aPickUps[i].m_pObject) + 1 : 0; + WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, aPickUps[i].m_nTimer); + WriteSaveBuf(buf, aPickUps[i].m_eModelIndex); + WriteSaveBuf(buf, aPickUps[i].m_nIndex); + WriteSaveBuf(buf, aPickUps[i].m_vecPos); +#else CPickup *buf_pickup = WriteSaveBuf(buf, aPickUps[i]); if (buf_pickup->m_eType != PICKUP_NONE && buf_pickup->m_pObject != nil) buf_pickup->m_pObject = (CObject*)(CPools::GetObjectPool()->GetJustIndex_NoFreeAssert(buf_pickup->m_pObject) + 1); +#endif } WriteSaveBuf(buf, CollectedPickUpIndex); diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index a9aec18e..953a1f50 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -2089,33 +2089,33 @@ VALIDATESAVEBUF(size) void CRunningScript::Save(uint8*& buf) { #ifdef COMPATIBLE_SAVES - SkipSaveBuf(buf, 8); + ZeroSaveBuf(buf, 8); for (int i = 0; i < 8; i++) - WriteSaveBuf(buf, m_abScriptName[i]); - WriteSaveBuf(buf, m_nIp); + WriteSaveBuf(buf, m_abScriptName[i]); + WriteSaveBuf(buf, m_nIp); #ifdef CHECK_STRUCT_SIZES static_assert(MAX_STACK_DEPTH == 6, "Compatibility loss: MAX_STACK_DEPTH != 6"); #endif for (int i = 0; i < MAX_STACK_DEPTH; i++) - WriteSaveBuf(buf, m_anStack[i]); - WriteSaveBuf(buf, m_nStackPointer); - SkipSaveBuf(buf, 2); + WriteSaveBuf(buf, m_anStack[i]); + WriteSaveBuf(buf, m_nStackPointer); + ZeroSaveBuf(buf, 2); #ifdef CHECK_STRUCT_SIZES static_assert(NUM_LOCAL_VARS + NUM_TIMERS == 18, "Compatibility loss: NUM_LOCAL_VARS + NUM_TIMERS != 18"); #endif for (int i = 0; i < NUM_LOCAL_VARS + NUM_TIMERS; i++) - WriteSaveBuf(buf, m_anLocalVariables[i]); - WriteSaveBuf(buf, m_bCondResult); - WriteSaveBuf(buf, m_bIsMissionScript); - WriteSaveBuf(buf, m_bSkipWakeTime); - SkipSaveBuf(buf, 1); - WriteSaveBuf(buf, m_nWakeTime); - WriteSaveBuf(buf, m_nAndOrState); - WriteSaveBuf(buf, m_bNotFlag); - WriteSaveBuf(buf, m_bDeatharrestEnabled); - WriteSaveBuf(buf, m_bDeatharrestExecuted); - WriteSaveBuf(buf, m_bMissionFlag); - SkipSaveBuf(buf, 2); + WriteSaveBuf(buf, m_anLocalVariables[i]); + WriteSaveBuf(buf, m_bCondResult); + WriteSaveBuf(buf, m_bIsMissionScript); + WriteSaveBuf(buf, m_bSkipWakeTime); + ZeroSaveBuf(buf, 1); + WriteSaveBuf(buf, m_nWakeTime); + WriteSaveBuf(buf, m_nAndOrState); + WriteSaveBuf(buf, m_bNotFlag); + WriteSaveBuf(buf, m_bDeatharrestEnabled); + WriteSaveBuf(buf, m_bDeatharrestExecuted); + WriteSaveBuf(buf, m_bMissionFlag); + ZeroSaveBuf(buf, 2); #else WriteSaveBuf(buf, *this); #endif diff --git a/src/core/Pools.cpp b/src/core/Pools.cpp index 5cffe9e4..b0248664 100644 --- a/src/core/Pools.cpp +++ b/src/core/Pools.cpp @@ -281,9 +281,9 @@ INITSAVEBUF #else if ((pVehicle->IsCar() || pVehicle->IsBoat()) && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) { #endif - WriteSaveBuf(buf, pVehicle->m_vehType); - WriteSaveBuf(buf, pVehicle->GetModelIndex()); - WriteSaveBuf(buf, GetVehicleRef(pVehicle)); + WriteSaveBuf(buf, pVehicle->m_vehType); + WriteSaveBuf(buf, pVehicle->GetModelIndex()); + WriteSaveBuf(buf, GetVehicleRef(pVehicle)); pVehicle->Save(buf); } #else @@ -292,7 +292,7 @@ INITSAVEBUF #else if (pVehicle->IsCar() && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) { #endif - WriteSaveBuf(buf, (uint32)pVehicle->m_vehType); + WriteSaveBuf(buf, pVehicle->m_vehType); WriteSaveBuf(buf, pVehicle->GetModelIndex()); WriteSaveBuf(buf, GetVehicleRef(pVehicle)); memcpy(buf, pVehicle, sizeof(CAutomobile)); @@ -303,7 +303,7 @@ INITSAVEBUF #else if (pVehicle->IsBoat() && pVehicle->VehicleCreatedBy == MISSION_VEHICLE) { #endif - WriteSaveBuf(buf, (uint32)pVehicle->m_vehType); + WriteSaveBuf(buf, pVehicle->m_vehType); WriteSaveBuf(buf, pVehicle->GetModelIndex()); WriteSaveBuf(buf, GetVehicleRef(pVehicle)); memcpy(buf, pVehicle, sizeof(CBoat)); diff --git a/src/core/Zones.cpp b/src/core/Zones.cpp index 107b1db8..82fbc047 100644 --- a/src/core/Zones.cpp +++ b/src/core/Zones.cpp @@ -10,6 +10,14 @@ #include "Timer.h" #include "SaveBuf.h" +#ifdef COMPATIBLE_SAVES +#define ZONEARRAY_SAVE_SIZE 0xAF0 +#define MAPZONEARRAY_SAVE_SIZE 0x578 +#else +#define ZONEARRAY_SAVE_SIZE sizeof(ZoneArray) +#define MAPZONEARRAY_SAVE_SIZE sizeof(MapZoneArray) +#endif + eLevelName CTheZones::m_CurrLevel; CZone *CTheZones::m_pPlayersZone; int16 CTheZones::FindIndex; @@ -633,6 +641,28 @@ CTheZones::InitialiseAudioZoneArray(void) } } +#ifdef COMPATIBLE_SAVES +static inline void +SaveOneZone(CZone &zone, uint8 *&buffer) +{ + memcpy(buffer, zone.name, sizeof(zone.name)); + SkipSaveBuf(buffer, sizeof(zone.name)); + WriteSaveBuf(buffer, zone.minx); + WriteSaveBuf(buffer, zone.miny); + WriteSaveBuf(buffer, zone.minz); + WriteSaveBuf(buffer, zone.maxx); + WriteSaveBuf(buffer, zone.maxy); + WriteSaveBuf(buffer, zone.maxz); + WriteSaveBuf(buffer, zone.type); + WriteSaveBuf(buffer, zone.level); + WriteSaveBuf(buffer, zone.zoneinfoDay); + WriteSaveBuf(buffer, zone.zoneinfoNight); + WriteSaveBuf(buffer, (int32)CTheZones::GetIndexForZonePointer(zone.child)); + WriteSaveBuf(buffer, (int32)CTheZones::GetIndexForZonePointer(zone.parent)); + WriteSaveBuf(buffer, (int32)CTheZones::GetIndexForZonePointer(zone.next)); +} +#endif + void CTheZones::SaveAllZones(uint8 *buffer, uint32 *size) { @@ -643,9 +673,9 @@ CTheZones::SaveAllZones(uint8 *buffer, uint32 *size) + sizeof(int32) // GetIndexForZonePointer + sizeof(m_CurrLevel) + sizeof(FindIndex) + sizeof(int16) // padding - + sizeof(ZoneArray) + sizeof(ZoneInfoArray) + + ZONEARRAY_SAVE_SIZE + sizeof(ZoneInfoArray) + sizeof(TotalNumberOfZones) + sizeof(TotalNumberOfZoneInfos) - + sizeof(MapZoneArray) + sizeof(AudioZoneArray) + + MAPZONEARRAY_SAVE_SIZE + sizeof(AudioZoneArray) + sizeof(TotalNumberOfMapZones) + sizeof(NumberOfAudioZones); WriteSaveHeader(buffer, 'Z', 'N', 'S', '\0', *size - SAVE_HEADER_SIZE); @@ -656,10 +686,14 @@ CTheZones::SaveAllZones(uint8 *buffer, uint32 *size) WriteSaveBuf(buffer, (int16)0); // padding for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){ +#ifdef COMPATIBLE_SAVES + SaveOneZone(ZoneArray[i], buffer); +#else CZone *zone = WriteSaveBuf(buffer, ZoneArray[i]); zone->child = (CZone*)GetIndexForZonePointer(ZoneArray[i].child); zone->parent = (CZone*)GetIndexForZonePointer(ZoneArray[i].parent); zone->next = (CZone*)GetIndexForZonePointer(ZoneArray[i].next); +#endif } for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++) @@ -669,7 +703,9 @@ CTheZones::SaveAllZones(uint8 *buffer, uint32 *size) WriteSaveBuf(buffer, TotalNumberOfZoneInfos); for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++) { +#ifndef COMPATIBLE_SAVES CZone* zone = WriteSaveBuf(buffer, MapZoneArray[i]); +#endif /* The call of GetIndexForZonePointer is wrong, as it is @@ -679,9 +715,13 @@ CTheZones::SaveAllZones(uint8 *buffer, uint32 *size) assert(MapZoneArray[i].child == nil); assert(MapZoneArray[i].parent == nil); assert(MapZoneArray[i].next == nil); +#ifndef COMPATIBLE_SAVES zone->child = (CZone*)GetIndexForZonePointer(MapZoneArray[i].child); zone->parent = (CZone*)GetIndexForZonePointer(MapZoneArray[i].parent); zone->next = (CZone*)GetIndexForZonePointer(MapZoneArray[i].next); +#else + SaveOneZone(MapZoneArray[i], buffer); +#endif } for(i = 0; i < ARRAY_SIZE(AudioZoneArray); i++) @@ -693,6 +733,32 @@ CTheZones::SaveAllZones(uint8 *buffer, uint32 *size) VALIDATESAVEBUF(*size) } +#ifdef COMPATIBLE_SAVES +static inline void +LoadOneZone(CZone &zone, uint8 *&buffer) +{ + memcpy(zone.name, buffer, sizeof(zone.name)); + SkipSaveBuf(buffer, sizeof(zone.name)); + ReadSaveBuf(&zone.minx, buffer); + ReadSaveBuf(&zone.miny, buffer); + ReadSaveBuf(&zone.minz, buffer); + ReadSaveBuf(&zone.maxx, buffer); + ReadSaveBuf(&zone.maxy, buffer); + ReadSaveBuf(&zone.maxz, buffer); + ReadSaveBuf(&zone.type, buffer); + ReadSaveBuf(&zone.level, buffer); + ReadSaveBuf(&zone.zoneinfoDay, buffer); + ReadSaveBuf(&zone.zoneinfoNight, buffer); + int32 tmp; + ReadSaveBuf(&tmp, buffer); + zone.child = CTheZones::GetPointerForZoneIndex(tmp); + ReadSaveBuf(&tmp, buffer); + zone.parent = CTheZones::GetPointerForZoneIndex(tmp); + ReadSaveBuf(&tmp, buffer); + zone.next = CTheZones::GetPointerForZoneIndex(tmp); +} +#endif + void CTheZones::LoadAllZones(uint8 *buffer, uint32 size) { @@ -708,11 +774,15 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) SkipSaveBuf(buffer, 2); for(i = 0; i < ARRAY_SIZE(ZoneArray); i++){ +#ifdef COMPATIBLE_SAVES + LoadOneZone(ZoneArray[i], buffer); +#else ReadSaveBuf(&ZoneArray[i], buffer); ZoneArray[i].child = GetPointerForZoneIndex((uintptr)ZoneArray[i].child); ZoneArray[i].parent = GetPointerForZoneIndex((uintptr)ZoneArray[i].parent); ZoneArray[i].next = GetPointerForZoneIndex((uintptr)ZoneArray[i].next); +#endif } for(i = 0; i < ARRAY_SIZE(ZoneInfoArray); i++) @@ -722,6 +792,9 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) ReadSaveBuf(&TotalNumberOfZoneInfos, buffer); for(i = 0; i < ARRAY_SIZE(MapZoneArray); i++){ +#ifdef COMPATIBLE_SAVES + LoadOneZone(MapZoneArray[i], buffer); +#else ReadSaveBuf(&MapZoneArray[i], buffer); /* @@ -732,6 +805,7 @@ CTheZones::LoadAllZones(uint8 *buffer, uint32 size) MapZoneArray[i].child = GetPointerForZoneIndex((uintptr)MapZoneArray[i].child); MapZoneArray[i].parent = GetPointerForZoneIndex((uintptr)MapZoneArray[i].parent); MapZoneArray[i].next = GetPointerForZoneIndex((uintptr)MapZoneArray[i].next); +#endif assert(MapZoneArray[i].child == nil); assert(MapZoneArray[i].parent == nil); assert(MapZoneArray[i].next == nil); diff --git a/src/core/config.h b/src/core/config.h index c9339b74..00d7a938 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -237,7 +237,8 @@ enum Config { #define FIX_BUGS // fixes bugs that we've came across during reversing. You can undefine this only on release builds. #define MORE_LANGUAGES // Add more translations to the game -#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible +#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible, and keeps saves compatible between platforms +#define FIX_INCOMPATIBLE_SAVES // try to fix incompatible saves, requires COMPATIBLE_SAVES #define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS #define NO_MOVIES // add option to disable intro videos @@ -464,6 +465,7 @@ enum Config { #define THIS_IS_STUPID #undef MORE_LANGUAGES #undef COMPATIBLE_SAVES +#undef FIX_INCOMPATIBLE_SAVES #undef LOAD_INI_SETTINGS #undef ASPECT_RATIO_SCALE diff --git a/src/entities/Entity.cpp b/src/entities/Entity.cpp index a7f4bd45..c38f12c7 100644 --- a/src/entities/Entity.cpp +++ b/src/entities/Entity.cpp @@ -732,7 +732,7 @@ CEntity::SaveEntityFlags(uint8*& buf) if (bZoneCulled) tmp |= BIT(30); if (bZoneCulled2) tmp |= BIT(31); - WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, tmp); tmp = 0; @@ -748,7 +748,7 @@ CEntity::SaveEntityFlags(uint8*& buf) if (bDistanceFade) tmp |= BIT(8); if (m_flagE2) tmp |= BIT(9); - WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, tmp); } void diff --git a/src/objects/ParticleObject.cpp b/src/objects/ParticleObject.cpp index 211a568c..5d480ecc 100644 --- a/src/objects/ParticleObject.cpp +++ b/src/objects/ParticleObject.cpp @@ -10,6 +10,12 @@ #include "DMAudio.h" #include "screendroplets.h" +#ifdef COMPATIBLE_SAVES +#define PARTICLE_OBJECT_SIZEOF 0x88 +#else +#define PARTICLE_OBJECT_SIZEOF sizeof(CParticleObject) +#endif + CParticleObject gPObjectArray[MAX_PARTICLEOBJECTS]; @@ -1111,6 +1117,49 @@ CParticleObject::UpdateFar(void) } } +#ifdef COMPATIBLE_SAVES +static inline void +SaveOneParticle(CParticleObject *p, uint8 *&buffer) +{ +#define SkipBuf(buf, num) buf += num +#define ZeroBuf(buf, num) memset(buf, 0, num); SkipBuf(buf, num) +#define CopyToBuf(buf, data) memcpy(buf, &data, sizeof(data)); SkipBuf(buf, sizeof(data)) + // CPlaceable + { + ZeroBuf(buffer, 4); + CopyToBuf(buffer, p->GetMatrix().f); + ZeroBuf(buffer, 4); + CopyToBuf(buffer, p->GetMatrix().m_hasRwMatrix); + ZeroBuf(buffer, 3); + } + + // CParticleObject + { + ZeroBuf(buffer, 4); + ZeroBuf(buffer, 4); + ZeroBuf(buffer, 4); + CopyToBuf(buffer, p->m_nRemoveTimer); + CopyToBuf(buffer, p->m_Type); + CopyToBuf(buffer, p->m_ParticleType); + CopyToBuf(buffer, p->m_nNumEffectCycles); + CopyToBuf(buffer, p->m_nSkipFrames); + CopyToBuf(buffer, p->m_nFrameCounter); + CopyToBuf(buffer, p->m_nState); + ZeroBuf(buffer, 2); + CopyToBuf(buffer, p->m_vecTarget); + CopyToBuf(buffer, p->m_fRandVal); + CopyToBuf(buffer, p->m_fSize); + CopyToBuf(buffer, p->m_Color); + CopyToBuf(buffer, p->m_bRemove); + CopyToBuf(buffer, p->m_nCreationChance); + ZeroBuf(buffer, 2); + } +#undef SkipBuf +#undef ZeroBuf +#undef CopyToBuf +} +#endif + bool CParticleObject::SaveParticle(uint8 *buffer, uint32 *length) { @@ -1128,27 +1177,35 @@ CParticleObject::SaveParticle(uint8 *buffer, uint32 *length) *(int32 *)buffer = numObjects; buffer += sizeof(int32); - int32 objectsLength = sizeof(CParticleObject) * (numObjects + 1); + int32 objectsLength = PARTICLE_OBJECT_SIZEOF * (numObjects + 1); int32 dataLength = objectsLength + sizeof(int32); for ( CParticleObject *p = pCloseListHead; p != NULL; p = p->m_pNext ) { -#if 0 // todo better +#ifdef COMPATIBLE_SAVES + SaveOneParticle(p, buffer); +#else +#ifdef THIS_IS_STUPID *(CParticleObject*)buffer = *p; #else memcpy(buffer, p, sizeof(CParticleObject)); #endif buffer += sizeof(CParticleObject); +#endif } for ( CParticleObject *p = pFarListHead; p != NULL; p = p->m_pNext ) { -#if 0 // todo better +#ifdef COMPATIBLE_SAVES + SaveOneParticle(p, buffer); +#else +#ifdef THIS_IS_STUPID *(CParticleObject*)buffer = *p; #else memcpy(buffer, p, sizeof(CParticleObject)); #endif buffer += sizeof(CParticleObject); +#endif } *length = dataLength; @@ -1166,7 +1223,7 @@ CParticleObject::LoadParticle(uint8 *buffer, uint32 length) int32 numObjects = *(int32 *)buffer; buffer += sizeof(int32); - if ( length != sizeof(CParticleObject) * (numObjects + 1) + sizeof(int32) ) + if ( length != PARTICLE_OBJECT_SIZEOF * (numObjects + 1) + sizeof(int32) ) return false; if ( numObjects == 0 ) @@ -1177,14 +1234,17 @@ CParticleObject::LoadParticle(uint8 *buffer, uint32 length) while ( i < numObjects ) { CParticleObject *dst = pUnusedListHead; +#ifndef COMPATIBLE_SAVES CParticleObject *src = (CParticleObject *)buffer; buffer += sizeof(CParticleObject); +#endif if ( dst == NULL ) return false; MoveToList(&pUnusedListHead, &pCloseListHead, dst); +#ifndef COMPATIBLE_SAVES dst->m_nState = POBJECTSTATE_UPDATE_CLOSE; dst->m_Type = src->m_Type; dst->m_ParticleType = src->m_ParticleType; @@ -1200,6 +1260,47 @@ CParticleObject::LoadParticle(uint8 *buffer, uint32 length) dst->m_nNumEffectCycles = src->m_nNumEffectCycles; dst->m_nSkipFrames = src->m_nSkipFrames; dst->m_nCreationChance = src->m_nCreationChance; +#else + dst->m_nState = POBJECTSTATE_UPDATE_CLOSE; + dst->m_pParticle = NULL; + +#define SkipBuf(buf, num) buf += num +#define CopyFromBuf(buf, data) memcpy(&data, buf, sizeof(data)); SkipBuf(buf, sizeof(data)) + // CPlaceable + { + SkipBuf(buffer, 4); + CMatrix matrix; + CopyFromBuf(buffer, matrix.f); + SkipBuf(buffer, 4); + CopyFromBuf(buffer, matrix.m_hasRwMatrix); + SkipBuf(buffer, 3); + dst->SetPosition(matrix.GetPosition()); + } + + // CParticleObject + { + SkipBuf(buffer, 4); + SkipBuf(buffer, 4); + SkipBuf(buffer, 4); + CopyFromBuf(buffer, dst->m_nRemoveTimer); + CopyFromBuf(buffer, dst->m_Type); + CopyFromBuf(buffer, dst->m_ParticleType); + CopyFromBuf(buffer, dst->m_nNumEffectCycles); + CopyFromBuf(buffer, dst->m_nSkipFrames); + CopyFromBuf(buffer, dst->m_nFrameCounter); + SkipBuf(buffer, 2); + SkipBuf(buffer, 2); + CopyFromBuf(buffer, dst->m_vecTarget); + CopyFromBuf(buffer, dst->m_fRandVal); + CopyFromBuf(buffer, dst->m_fSize); + CopyFromBuf(buffer, dst->m_Color); + CopyFromBuf(buffer, dst->m_bRemove); + CopyFromBuf(buffer, dst->m_nCreationChance); + SkipBuf(buffer, 2); + } +#undef CopyFromBuf +#undef SkipBuf +#endif i++; } diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 4d80cac2..5b52d021 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -8496,21 +8496,21 @@ CPed::renderLimb(int node) void CPed::Save(uint8*& buf) { - SkipSaveBuf(buf, 52); + ZeroSaveBuf(buf, 52); CopyToBuf(buf, GetPosition().x); CopyToBuf(buf, GetPosition().y); CopyToBuf(buf, GetPosition().z); - SkipSaveBuf(buf, 288); + ZeroSaveBuf(buf, 288); CopyToBuf(buf, CharCreatedBy); - SkipSaveBuf(buf, 351); + ZeroSaveBuf(buf, 351); CopyToBuf(buf, m_fHealth); CopyToBuf(buf, m_fArmour); - SkipSaveBuf(buf, 148); + ZeroSaveBuf(buf, 148); for (int i = 0; i < 13; i++) // has to be hardcoded m_weapons[i].Save(buf); - SkipSaveBuf(buf, 5); + ZeroSaveBuf(buf, 5); CopyToBuf(buf, m_maxWeaponTypeAllowed); - SkipSaveBuf(buf, 162); + ZeroSaveBuf(buf, 162); } void diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 93a403bd..6d6fc714 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -1492,14 +1492,14 @@ void CPlayerPed::Save(uint8*& buf) { CPed::Save(buf); - SkipSaveBuf(buf, 16); + ZeroSaveBuf(buf, 16); CopyToBuf(buf, m_fMaxStamina); - SkipSaveBuf(buf, 28); + ZeroSaveBuf(buf, 28); CopyToBuf(buf, m_nTargettableObjects[0]); CopyToBuf(buf, m_nTargettableObjects[1]); CopyToBuf(buf, m_nTargettableObjects[2]); CopyToBuf(buf, m_nTargettableObjects[3]); - SkipSaveBuf(buf, 116); + ZeroSaveBuf(buf, 116); } void diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index 23a8fd6a..f51f8233 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -600,6 +600,552 @@ align4bytes(int32 size) return (size + 3) & 0xFFFFFFFC; } +#ifdef FIX_INCOMPATIBLE_SAVES +#define LoadSaveDataBlockNoCheck(buf, file, size) \ +do { \ + CFileMgr::Read(file, (const char *)&size, sizeof(size)); \ + size = align4bytes(size); \ + CFileMgr::Read(file, (const char *)work_buff, size); \ + buf = work_buff; \ +} while(0) + +#define WriteSavaDataBlockNoFunc(buf, file, size) \ +do { \ + if (!PcSaveHelper.PcClassSaveRoutine(file, buf, size)) \ + goto fail; \ + totalSize += size; \ +} while(0) + +#define FixSaveDataBlock(fix_func, file, size) \ +do { \ + ReadDataFromBufferPointer(buf, size); \ + memset(work_buff2, 0, sizeof(work_buff2)); \ + buf2 = work_buff2; \ + reserved = 0; \ + MakeSpaceForSizeInBufferPointer(presize, buf2, postsize); \ + fix_func(save_type, buf, buf2, &size); \ + CopySizeAndPreparePointer(presize, buf2, postsize, reserved, size); \ + if (!PcSaveHelper.PcClassSaveRoutine(file, work_buff2, buf2 - work_buff2)) \ + goto fail; \ + totalSize += buf2 - work_buff2; \ +} while(0) + +#define ReadDataFromBufferPointerWithSize(buf, to, size) memcpy(&to, buf, size); buf += align4bytes(size) + +#define ReadBuf(buf, to) memcpy(&to, buf, sizeof(to)); buf += sizeof(to) +#define WriteBuf(buf, from) memcpy(buf, &from, sizeof(from)); buf += sizeof(from) +#define CopyBuf(from, to, size) memcpy(to, from, size); to += (size); from += (size) +#define CopyPtr(from, to) memcpy(to, from, 4); to += 4; from += 8 +#define SkipBuf(buf, size) buf += (size) +#define SkipBoth(from, to, size) to += (size); from += (size) +#define SkipPtr(from, to) to += 4; from += 8 + +// unfortunately we need a 2nd buffer of the same size to store the fixed output ... +static uint8 work_buff2[sizeof(work_buff)]; + +enum +{ + SAVE_TYPE_NONE = 0, + SAVE_TYPE_32_BIT = 1, + SAVE_TYPE_64_BIT = 2, + SAVE_TYPE_MSVC = 4, + SAVE_TYPE_GCC = 8, +}; + +uint8 +GetSaveType(char *savename) +{ + uint8 save_type = SAVE_TYPE_NONE; + int file = CFileMgr::OpenFile(savename, "rb"); + + uint32 size; + CFileMgr::Read(file, (const char *)&size, sizeof(size)); + + uint8 *buf = work_buff; + CFileMgr::Read(file, (const char *)work_buff, size); // simple vars + scripts + + LoadSaveDataBlockNoCheck(buf, file, size); // ped pool + + LoadSaveDataBlockNoCheck(buf, file, size); // garages + ReadDataFromBufferPointer(buf, size); + + // store for later after we know how much data we need to skip + ReadDataFromBufferPointerWithSize(buf, work_buff2, size); + + LoadSaveDataBlockNoCheck(buf, file, size); // vehicle pool + LoadSaveDataBlockNoCheck(buf, file, size); // object pool + LoadSaveDataBlockNoCheck(buf, file, size); // paths + + LoadSaveDataBlockNoCheck(buf, file, size); // cranes + + CFileMgr::CloseFile(file); + + ReadDataFromBufferPointer(buf, size); + + if (size == 1032) + save_type |= SAVE_TYPE_32_BIT; + else if (size == 1160) + save_type |= SAVE_TYPE_64_BIT; + else + assert(0); // this should never happen + + buf = work_buff2; + + buf += 760; // skip everything before the first garage + buf += save_type & SAVE_TYPE_32_BIT ? 28 : 40; // skip first garage up to m_fX1 + + // now the values we want to verify + float fX1, fX2, fY1, fY2, fZ1, fZ2; + + ReadBuf(buf, fX1); + ReadBuf(buf, fX2); + ReadBuf(buf, fY1); + ReadBuf(buf, fY2); + ReadBuf(buf, fZ1); + ReadBuf(buf, fZ2); + + if (fX1 == CRUSHER_GARAGE_X1 && fX2 == CRUSHER_GARAGE_X2 && + fY1 == CRUSHER_GARAGE_Y1 && fY2 == CRUSHER_GARAGE_Y2 && + fZ1 == CRUSHER_GARAGE_Z1 && fZ2 == CRUSHER_GARAGE_Z2) + save_type |= SAVE_TYPE_MSVC; + else + save_type |= SAVE_TYPE_GCC; + + return save_type; +} + +static void +FixGarages(uint8 save_type, uint8 *buf, uint8 *buf2, uint32 *size) +{ + // hardcoded: 5484 + // x86 msvc: 5240 + // x86 gcc: 5040 + // amd64 msvc: 5880 + // amd64 gcc: 5808 + + uint8 *buf_start = buf; + uint8 *buf2_start = buf2; + uint32 read; + uint32 written = 5240; + + if (save_type & SAVE_TYPE_32_BIT && save_type & SAVE_TYPE_GCC) + read = 5040; + else if (save_type & SAVE_TYPE_64_BIT && save_type & SAVE_TYPE_GCC) + read = 5808; + else + read = 5880; + + uint32 ptrsize = save_type & SAVE_TYPE_32_BIT ? 4 : 8; + + CopyBuf(buf, buf2, 4 * 6); + CopyBuf(buf, buf2, 4 * TOTAL_COLLECTCARS_GARAGES); + CopyBuf(buf, buf2, 4); + + if (save_type & SAVE_TYPE_GCC) + { + for (int32 i = 0; i < NUM_GARAGE_STORED_CARS; i++) + { +#define FixStoredCar(buf, buf2) \ +do { \ + CopyBuf(buf, buf2, 4 + sizeof(CVector) + sizeof(CVector)); \ + uint8 nFlags8; \ + ReadBuf(buf, nFlags8); \ + int32 nFlags32 = nFlags8; \ + WriteBuf(buf2, nFlags32); \ + CopyBuf(buf, buf2, 1 * 6); \ + SkipBuf(buf, 1); \ + SkipBuf(buf2, 2); \ +} while(0) + + FixStoredCar(buf, buf2); + FixStoredCar(buf, buf2); + FixStoredCar(buf, buf2); + +#undef FixStoredCar + } + } + else + { + CopyBuf(buf, buf2, sizeof(CStoredCar) * NUM_GARAGE_STORED_CARS); + CopyBuf(buf, buf2, sizeof(CStoredCar) * NUM_GARAGE_STORED_CARS); + CopyBuf(buf, buf2, sizeof(CStoredCar) * NUM_GARAGE_STORED_CARS); + } + + for (int32 i = 0; i < NUM_GARAGES; i++) + { + // skip the last 5 garages in 64bit builds without FIX_GARAGE_SIZE since they weren't actually saved and are unused + if (save_type & SAVE_TYPE_64_BIT && *size == 5484 && i >= NUM_GARAGES - 5) + { + SkipBuf(buf, 160); // sizeof(CGarage) on x64 + SkipBuf(buf2, 140); // sizeof(CGarage) on x86 + } + else + { + CopyBuf(buf, buf2, 1 * 6); + SkipBoth(buf, buf2, 2); + CopyBuf(buf, buf2, 4); + SkipBuf(buf, ptrsize - 4); // write 4 bytes padding if 8 byte pointer, if not, write 0 + SkipBuf(buf, ptrsize * 2); + SkipBuf(buf2, 4 * 2); + CopyBuf(buf, buf2, 1 * 7); + SkipBoth(buf, buf2, 1); + CopyBuf(buf, buf2, 4 * 15 + 1); + SkipBoth(buf, buf2, 3); + SkipBuf(buf, ptrsize * 2); + SkipBuf(buf2, 4 * 2); + + if (save_type & SAVE_TYPE_GCC) + SkipBuf(buf, save_type & SAVE_TYPE_64_BIT ? 36 + 4 : 36); // sizeof(CStoredCar) on gcc 64/32 before fix + else + SkipBuf(buf, sizeof(CStoredCar)); + + SkipBuf(buf2, sizeof(CStoredCar)); + } + } + + *size = 0; + + assert(buf - buf_start == read); + assert(buf2 - buf2_start == written); + +#ifdef FIX_GARAGE_SIZE + *size = (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CGarages::CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)); +#else + *size = 5484; +#endif +} + +static void +FixCranes(uint8 save_type, uint8 *buf, uint8 *buf2, uint32 *size) +{ + uint8 *buf_start = buf; + uint8 *buf2_start = buf2; + uint32 read = 2 * sizeof(uint32) + 0x480; // sizeof(aCranes) + uint32 written = 2 * sizeof(uint32) + 0x400; // see CRANES_SAVE_SIZE + + CopyBuf(buf, buf2, 4 + 4); + + for (int32 i = 0; i < NUM_CRANES; i++) + { + CopyPtr(buf, buf2); + CopyPtr(buf, buf2); + CopyBuf(buf, buf2, 15 * 4 + sizeof(CVector) * 3 + sizeof(CVector2D)); + CopyPtr(buf, buf2); + CopyBuf(buf, buf2, 4 + 7 * 1); + SkipBuf(buf, 5); + SkipBuf(buf2, 1); + } + + *size = 0; + + assert(buf - buf_start == read); + assert(buf2 - buf2_start == written); + + *size = written; +} + +static void +FixPickups(uint8 save_type, uint8 *buf, uint8 *buf2, uint32 *size) +{ + uint8 *buf_start = buf; + uint8 *buf2_start = buf2; + uint32 read = 0x3480 + sizeof(uint16) + sizeof(uint16) + sizeof(int32) * NUMCOLLECTEDPICKUPS; // sizeof(aPickUps) + uint32 written = 0x24C0 + sizeof(uint16) + sizeof(uint16) + sizeof(int32) * NUMCOLLECTEDPICKUPS; // see PICKUPS_SAVE_SIZE + + for (int32 i = 0; i < NUMPICKUPS; i++) + { + CopyBuf(buf, buf2, 1 + 1 + 2); + SkipBuf(buf, 4); + CopyPtr(buf, buf2); + CopyBuf(buf, buf2, 4 + 2 + 2 + sizeof(CVector)); + SkipBuf(buf, 4); + } + + CopyBuf(buf, buf2, 2); + SkipBoth(buf, buf2, 2); + + CopyBuf(buf, buf2, NUMCOLLECTEDPICKUPS * 4); + + *size = 0; + + assert(buf - buf_start == read); + assert(buf2 - buf2_start == written); + + *size = written; +} + +static void +FixPhoneInfo(uint8 save_type, uint8 *buf, uint8 *buf2, uint32 *size) +{ + uint8 *buf_start = buf; + uint8 *buf2_start = buf2; + uint32 read = 0x1138; // sizeof(CPhoneInfo) + uint32 written = 0xA30; // see PHONEINFO_SAVE_SIZE + + CopyBuf(buf, buf2, 4 + 4); + + for (int32 i = 0; i < NUMPHONES; i++) + { + CopyBuf(buf, buf2, sizeof(CVector)); + SkipBuf(buf, 4); + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + CopyBuf(buf, buf2, 4); + SkipBuf(buf, 4); + CopyPtr(buf, buf2); + CopyBuf(buf, buf2, 4 + 1); + SkipBoth(buf, buf2, 3); + } + + *size = 0; + + assert(buf - buf_start == read); + assert(buf2 - buf2_start == written); + + *size = written; +} + +static void +FixZones(uint8 save_type, uint8 *buf, uint8 *buf2, uint32 *size) +{ + uint8 *buf_start = buf; + uint8 *buf2_start = buf2; + uint32 read = 11300; // see SaveAllZones + uint32 written = 10100; // see SaveAllZones + + CopyBuf(buf, buf2, 1 * 4); + + SkipBuf(buf, 4); + uint32 hdr_size = 10100 - (1 * 4 + 4); // see SaveAllZones + WriteBuf(buf2, hdr_size); + + CopyBuf(buf, buf2, 4 * 2 + 2); + SkipBoth(buf, buf2, 2); + +#define FixOneZone(buf, buf2) \ +do { \ + CopyBuf(buf, buf2, 8 + 8 * 4 + 2 * 2); \ + SkipBuf(buf, 4); \ + CopyPtr(buf, buf2); \ + CopyPtr(buf, buf2); \ + CopyPtr(buf, buf2); \ +} while(0) + + for (int32 i = 0; i < NUMZONES; i++) + FixOneZone(buf, buf2); + + CopyBuf(buf, buf2, sizeof(CZoneInfo) * NUMZONES * 2); + CopyBuf(buf, buf2, 2 + 2); + + for (int32 i = 0; i < NUMMAPZONES; i++) + FixOneZone(buf, buf2); + + CopyBuf(buf, buf2, 2 * NUMAUDIOZONES); + CopyBuf(buf, buf2, 2 + 2); + +#undef FixOneZone + + *size = 0; + + assert(buf - buf_start == read); + assert(buf2 - buf2_start == written); + + *size = written; +} + +static void +FixParticles(uint8 save_type, uint8 *buf, uint8 *buf2, uint32 *size) +{ + uint8 *buf_start = buf; + uint8 *buf2_start = buf2; + + int32 numObjects; + ReadBuf(buf, numObjects); + WriteBuf(buf2, numObjects); + + uint32 read = 0xA0 * (numObjects + 1) + 4; // sizeof(CParticleObject) + uint32 written = 0x88 * (numObjects + 1) + 4; // see PARTICLE_OBJECT_SIZEOF + + for (int32 i = 0; i < numObjects; i++) + { + // CPlaceable + SkipPtr(buf, buf2); + CopyBuf(buf, buf2, 4 * 4 * 4); + SkipPtr(buf, buf2); + CopyBuf(buf, buf2, 1); + SkipBuf(buf, 7); + SkipBuf(buf2, 3); + + // CParticleObject + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + SkipPtr(buf, buf2); + CopyBuf(buf, buf2, 4 * 3 + 2 * 1 + 2 * 2); + SkipBoth(buf, buf2, 2); + CopyBuf(buf, buf2, sizeof(CVector) + 2 * 4 + sizeof(CRGBA) + 2 * 1); + SkipBoth(buf, buf2, 2); + } + + SkipBuf(buf, 0xA0); // sizeof(CParticleObject) + SkipBuf(buf2, 0x88); // see PARTICLE_OBJECT_SIZEOF + + *size = 0; + + assert(buf - buf_start == read); + assert(buf2 - buf2_start == written); + + *size = written; +} + +bool +FixSave(int32 slot, uint8 save_type) +{ + if (save_type & SAVE_TYPE_32_BIT && save_type & SAVE_TYPE_MSVC) + return true; + + bool success = false; + + uint8 *buf, *presize, *postsize, *buf2; + uint32 size; + uint32 reserved; + + uint32 totalSize; + + char savename[MAX_PATH]; + char savename_bak[MAX_PATH]; + + sprintf(savename, "%s%i%s", DefaultPCSaveFileName, slot + 1, ".b"); + sprintf(savename_bak, "%s%i%s.%lld.bak", DefaultPCSaveFileName, slot + 1, ".b", time(nil)); + + assert(caserename(savename, savename_bak) == 0); + + int file_in = CFileMgr::OpenFile(savename_bak, "rb"); + int file_out = CFileMgr::OpenFileForWriting(savename); + + CheckSum = 0; + totalSize = 0; + + CFileMgr::Read(file_in, (const char *)&size, sizeof(size)); + + buf = work_buff; + CFileMgr::Read(file_in, (const char *)work_buff, size); // simple vars + scripts + + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // ped pool + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // garages + FixSaveDataBlock(FixGarages, file_out, size); // garages need to be fixed in either case + + LoadSaveDataBlockNoCheck(buf, file_in, size); // vehicle pool + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // object pool + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // paths + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // cranes + if (save_type & SAVE_TYPE_64_BIT) + FixSaveDataBlock(FixCranes, file_out, size); + else + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // pickups + if (save_type & SAVE_TYPE_64_BIT) + FixSaveDataBlock(FixPickups, file_out, size); + else + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // phoneinfo + if (save_type & SAVE_TYPE_64_BIT) + FixSaveDataBlock(FixPhoneInfo, file_out, size); + else + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // restart + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // radar blips + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // zones + if (save_type & SAVE_TYPE_64_BIT) + FixSaveDataBlock(FixZones, file_out, size); + else + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // gang data + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // car generators + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // particles + if (save_type & SAVE_TYPE_64_BIT) + FixSaveDataBlock(FixParticles, file_out, size); + else + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // audio script objects + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // player info + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // stats + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // streaming + WriteSavaDataBlockNoFunc(buf, file_out, size); + + LoadSaveDataBlockNoCheck(buf, file_in, size); // ped type + WriteSavaDataBlockNoFunc(buf, file_out, size); + + memset(work_buff, 0, sizeof(work_buff)); + + for (int i = 0; i < 4; i++) { + size = align4bytes(SIZE_OF_ONE_GAME_IN_BYTES - totalSize - 4); + if (size > sizeof(work_buff)) + size = sizeof(work_buff); + if (size > 4) { + if (!PcSaveHelper.PcClassSaveRoutine(file_out, work_buff, size)) + goto fail; + totalSize += size; + } + } + + if (!CFileMgr::Write(file_out, (const char *)&CheckSum, sizeof(CheckSum))) + goto fail; + + success = true; + +fail:; + CFileMgr::CloseFile(file_in); + CFileMgr::CloseFile(file_out); + + return success; +} + +#undef LoadSaveDataBlockNoCheck +#undef WriteSavaDataBlockNoFunc +#undef FixSaveDataBlock +#undef ReadDataFromBufferPointerWithSize +#undef ReadBuf +#undef WriteBuf +#undef CopyBuf +#undef CopyPtr +#undef SkipBuf +#undef SkipBoth +#undef SkipPtr +#endif + #ifdef MISSION_REPLAY void DisplaySaveResult(int unk, char* name) diff --git a/src/save/GenericGameStorage.h b/src/save/GenericGameStorage.h index 069ba7cd..b291ddf9 100644 --- a/src/save/GenericGameStorage.h +++ b/src/save/GenericGameStorage.h @@ -22,6 +22,11 @@ bool CheckDataNotCorrupt(int32 slot, char *name); bool RestoreForStartLoad(); int align4bytes(int32 size); +#ifdef FIX_INCOMPATIBLE_SAVES +uint8 GetSaveType(char *savename); +bool FixSave(int32 slot, uint8 save_type); +#endif + extern class CDate CompileDateAndTime; extern char DefaultPCSaveFileName[260]; diff --git a/src/save/PCSave.cpp b/src/save/PCSave.cpp index a9df00af..0c228a6d 100644 --- a/src/save/PCSave.cpp +++ b/src/save/PCSave.cpp @@ -122,6 +122,13 @@ C_PcSave::PopulateSlotInfo() } if (Slots[i + 1] == SLOT_OK) { if (CheckDataNotCorrupt(i, savename)) { +#ifdef FIX_INCOMPATIBLE_SAVES + if (!FixSave(i, GetSaveType(savename))) { + CMessages::InsertNumberInString(TheText.Get("FEC_SLC"), i + 1, -1, -1, -1, -1, -1, SlotFileName[i]); + Slots[i + 1] = SLOT_CORRUPTED; + continue; + } +#endif SYSTEMTIME st; memcpy(&st, &header.SaveDateTime, sizeof(SYSTEMTIME)); const char *month; diff --git a/src/save/PCSave.h b/src/save/PCSave.h index 4a2d9a66..83471b5d 100644 --- a/src/save/PCSave.h +++ b/src/save/PCSave.h @@ -33,7 +33,7 @@ public: void PopulateSlotInfo(); bool DeleteSlot(int32 slot); bool SaveSlot(int32 slot); - bool PcClassSaveRoutine(int32 a2, uint8 *data, uint32 size); + bool PcClassSaveRoutine(int32 file, uint8 *data, uint32 size); static void SetSaveDirectory(const char *path); }; diff --git a/src/save/SaveBuf.h b/src/save/SaveBuf.h index 98fe888b..aad2e1a8 100644 --- a/src/save/SaveBuf.h +++ b/src/save/SaveBuf.h @@ -36,6 +36,15 @@ WriteSaveBuf(uint8 *&buf, const T &value) return p; } +#ifdef COMPATIBLE_SAVES +inline void +ZeroSaveBuf(uint8 *&buf, uint32 length) +{ + memset(buf, 0, length); + SkipSaveBuf(buf, length); +} +#endif + #define SAVE_HEADER_SIZE (4 * sizeof(char) + sizeof(uint32)) #define WriteSaveHeader(buf, a, b, c, d, size) \ diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp index 1d49ebd2..577983b6 100644 --- a/src/skel/crossplatform.cpp +++ b/src/skel/crossplatform.cpp @@ -155,6 +155,29 @@ FILE* _fcaseopen(char const* filename, char const* mode) return result; } +int _caserename(const char *old_filename, const char *new_filename) +{ + int result; + char *real_old = casepath(old_filename); + char *real_new = casepath(new_filename); + + // hack so we don't even try to rename it to new_filename if it already exists + if (!real_new) { + free(real_old); + return -1; + } + + if (!real_old) + result = rename(old_filename, real_new); + else + result = rename(real_old, real_new); + + free(real_old); + free(real_new); + + return result; +} + // Case-insensitivity on linux (from https://github.com/OneSadCookie/fcaseopen) // Returned string should freed manually (if exists) char* casepath(char const* path, bool checkPathFirst) diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index 2dd9c162..aa90ce5a 100644 --- a/src/skel/crossplatform.h +++ b/src/skel/crossplatform.h @@ -29,6 +29,7 @@ enum eWinVersion #endif extern DWORD _dwOperatingSystemVersion; #define fcaseopen fopen +#define caserename rename #else char *strupr(char *str); char *strlwr(char *str); @@ -51,6 +52,8 @@ extern long _dwOperatingSystemVersion; char *casepath(char const *path, bool checkPathFirst = true); FILE *_fcaseopen(char const *filename, char const *mode); #define fcaseopen _fcaseopen +int _caserename(const char *old_filename, const char *new_filename); +#define caserename _caserename #endif #ifdef RW_GL3 diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 3de3e12b..7d942dcd 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -4717,8 +4717,8 @@ void CAutomobile::Save(uint8*& buf) { CVehicle::Save(buf); - WriteSaveBuf(buf, Damage); - SkipSaveBuf(buf, 800 - sizeof(CDamageManager)); + WriteSaveBuf(buf, Damage); + ZeroSaveBuf(buf, 800 - sizeof(CDamageManager)); } void diff --git a/src/vehicles/Boat.cpp b/src/vehicles/Boat.cpp index 88444e95..65cdd8c6 100644 --- a/src/vehicles/Boat.cpp +++ b/src/vehicles/Boat.cpp @@ -940,7 +940,7 @@ void CBoat::Save(uint8*& buf) { CVehicle::Save(buf); - SkipSaveBuf(buf, 1156 - 648); + ZeroSaveBuf(buf, 1156 - 648); } void diff --git a/src/vehicles/Cranes.cpp b/src/vehicles/Cranes.cpp index 0f1b8b4c..db9d2e00 100644 --- a/src/vehicles/Cranes.cpp +++ b/src/vehicles/Cranes.cpp @@ -37,6 +37,12 @@ #define MIN_VALID_POSITION (-10000.0f) #define DEFAULT_OFFSET (20.0f) +#ifdef COMPATIBLE_SAVES +#define CRANES_SAVE_SIZE 0x400 +#else +#define CRANES_SAVE_SIZE sizeof(aCranes) +#endif + uint32 TimerForCamInterpolation; uint32 CCranes::CarsCollectedMilitaryCrane; @@ -634,10 +640,46 @@ void CCranes::Save(uint8* buf, uint32* size) { INITSAVEBUF - *size = 2 * sizeof(uint32) + sizeof(aCranes); + *size = 2 * sizeof(uint32) + CRANES_SAVE_SIZE; WriteSaveBuf(buf, NumCranes); WriteSaveBuf(buf, CarsCollectedMilitaryCrane); for (int i = 0; i < NUM_CRANES; i++) { +#ifdef COMPATIBLE_SAVES + int32 tmp = aCranes[i].m_pCraneEntity != nil ? CPools::GetBuildingPool()->GetJustIndex_NoFreeAssert(aCranes[i].m_pCraneEntity) + 1 : 0; + WriteSaveBuf(buf, tmp); + tmp = aCranes[i].m_pHook != nil ? CPools::GetObjectPool()->GetJustIndex_NoFreeAssert(aCranes[i].m_pHook) + 1 : 0; + WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, aCranes[i].m_nAudioEntity); + WriteSaveBuf(buf, aCranes[i].m_fPickupX1); + WriteSaveBuf(buf, aCranes[i].m_fPickupX2); + WriteSaveBuf(buf, aCranes[i].m_fPickupY1); + WriteSaveBuf(buf, aCranes[i].m_fPickupY2); + WriteSaveBuf(buf, aCranes[i].m_vecDropoffTarget); + WriteSaveBuf(buf, aCranes[i].m_fDropoffHeading); + WriteSaveBuf(buf, aCranes[i].m_fPickupAngle); + WriteSaveBuf(buf, aCranes[i].m_fDropoffAngle); + WriteSaveBuf(buf, aCranes[i].m_fPickupDistance); + WriteSaveBuf(buf, aCranes[i].m_fDropoffDistance); + WriteSaveBuf(buf, aCranes[i].m_fPickupHeight); + WriteSaveBuf(buf, aCranes[i].m_fDropoffHeight); + WriteSaveBuf(buf, aCranes[i].m_fHookAngle); + WriteSaveBuf(buf, aCranes[i].m_fHookOffset); + WriteSaveBuf(buf, aCranes[i].m_fHookHeight); + WriteSaveBuf(buf, aCranes[i].m_vecHookInitPos); + WriteSaveBuf(buf, aCranes[i].m_vecHookCurPos); + WriteSaveBuf(buf, aCranes[i].m_vecHookVelocity); + tmp = aCranes[i].m_pVehiclePickedUp != nil ? CPools::GetVehiclePool()->GetJustIndex_NoFreeAssert(aCranes[i].m_pVehiclePickedUp) + 1 : 0; + WriteSaveBuf(buf, tmp); + WriteSaveBuf(buf, aCranes[i].m_nTimeForNextCheck); + WriteSaveBuf(buf, aCranes[i].m_nCraneStatus); + WriteSaveBuf(buf, aCranes[i].m_nCraneState); + WriteSaveBuf(buf, aCranes[i].m_nVehiclesCollected); + WriteSaveBuf(buf, aCranes[i].m_bIsCrusher); + WriteSaveBuf(buf, aCranes[i].m_bIsMilitaryCrane); + WriteSaveBuf(buf, aCranes[i].m_bWasMilitaryCrane); + WriteSaveBuf(buf, aCranes[i].m_bIsTop); + ZeroSaveBuf(buf, 1); +#else CCrane *pCrane = WriteSaveBuf(buf, aCranes[i]); if (pCrane->m_pCraneEntity != nil) pCrane->m_pCraneEntity = (CBuilding*)(CPools::GetBuildingPool()->GetJustIndex_NoFreeAssert(pCrane->m_pCraneEntity) + 1); @@ -645,6 +687,7 @@ void CCranes::Save(uint8* buf, uint32* size) pCrane->m_pHook = (CObject*)(CPools::GetObjectPool()->GetJustIndex_NoFreeAssert(pCrane->m_pHook) + 1); if (pCrane->m_pVehiclePickedUp != nil) pCrane->m_pVehiclePickedUp = (CVehicle*)(CPools::GetVehiclePool()->GetJustIndex_NoFreeAssert(pCrane->m_pVehiclePickedUp) + 1); +#endif } VALIDATESAVEBUF(*size); @@ -656,8 +699,46 @@ void CCranes::Load(uint8* buf, uint32 size) ReadSaveBuf(&NumCranes, buf); ReadSaveBuf(&CarsCollectedMilitaryCrane, buf); - for (int i = 0; i < NUM_CRANES; i++) + for (int i = 0; i < NUM_CRANES; i++) { +#ifdef COMPATIBLE_SAVES + int32 tmp; + ReadSaveBuf(&tmp, buf); + aCranes[i].m_pCraneEntity = tmp != 0 ? CPools::GetBuildingPool()->GetSlot(tmp - 1) : nil; + ReadSaveBuf(&tmp, buf); + aCranes[i].m_pHook = tmp != 0 ? CPools::GetObjectPool()->GetSlot(tmp - 1) : nil; + ReadSaveBuf(&aCranes[i].m_nAudioEntity, buf); + ReadSaveBuf(&aCranes[i].m_fPickupX1, buf); + ReadSaveBuf(&aCranes[i].m_fPickupX2, buf); + ReadSaveBuf(&aCranes[i].m_fPickupY1, buf); + ReadSaveBuf(&aCranes[i].m_fPickupY2, buf); + ReadSaveBuf(&aCranes[i].m_vecDropoffTarget, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffHeading, buf); + ReadSaveBuf(&aCranes[i].m_fPickupAngle, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffAngle, buf); + ReadSaveBuf(&aCranes[i].m_fPickupDistance, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffDistance, buf); + ReadSaveBuf(&aCranes[i].m_fPickupHeight, buf); + ReadSaveBuf(&aCranes[i].m_fDropoffHeight, buf); + ReadSaveBuf(&aCranes[i].m_fHookAngle, buf); + ReadSaveBuf(&aCranes[i].m_fHookOffset, buf); + ReadSaveBuf(&aCranes[i].m_fHookHeight, buf); + ReadSaveBuf(&aCranes[i].m_vecHookInitPos, buf); + ReadSaveBuf(&aCranes[i].m_vecHookCurPos, buf); + ReadSaveBuf(&aCranes[i].m_vecHookVelocity, buf); + ReadSaveBuf(&tmp, buf); + aCranes[i].m_pVehiclePickedUp = tmp != 0 ? CPools::GetVehiclePool()->GetSlot(tmp - 1) : nil; + ReadSaveBuf(&aCranes[i].m_nTimeForNextCheck, buf); + ReadSaveBuf(&aCranes[i].m_nCraneStatus, buf); + ReadSaveBuf(&aCranes[i].m_nCraneState, buf); + ReadSaveBuf(&aCranes[i].m_nVehiclesCollected, buf); + ReadSaveBuf(&aCranes[i].m_bIsCrusher, buf); + ReadSaveBuf(&aCranes[i].m_bIsMilitaryCrane, buf); + ReadSaveBuf(&aCranes[i].m_bWasMilitaryCrane, buf); + ReadSaveBuf(&aCranes[i].m_bIsTop, buf); + SkipSaveBuf(buf, 1); +#else ReadSaveBuf(&aCranes[i], buf); + } for (int i = 0; i < NUM_CRANES; i++) { CCrane *pCrane = &aCranes[i]; if (pCrane->m_pCraneEntity != nil) @@ -666,6 +747,7 @@ void CCranes::Load(uint8* buf, uint32 size) pCrane->m_pHook = CPools::GetObjectPool()->GetSlot((uintptr)pCrane->m_pHook - 1); if (pCrane->m_pVehiclePickedUp != nil) pCrane->m_pVehiclePickedUp = CPools::GetVehiclePool()->GetSlot((uintptr)pCrane->m_pVehiclePickedUp - 1); +#endif } for (int i = 0; i < NUM_CRANES; i++) { aCranes[i].m_nAudioEntity = DMAudio.CreateEntity(AUDIOTYPE_CRANE, &aCranes[i]); diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 3d3ba8f2..4259f9d8 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -1262,42 +1262,42 @@ DestroyVehicleAndDriverAndPassengers(CVehicle* pVehicle) void CVehicle::Save(uint8*& buf) { - SkipSaveBuf(buf, 4); - WriteSaveBuf(buf, GetRight().x); - WriteSaveBuf(buf, GetRight().y); - WriteSaveBuf(buf, GetRight().z); - SkipSaveBuf(buf, 4); - WriteSaveBuf(buf, GetForward().x); - WriteSaveBuf(buf, GetForward().y); - WriteSaveBuf(buf, GetForward().z); - SkipSaveBuf(buf, 4); - WriteSaveBuf(buf, GetUp().x); - WriteSaveBuf(buf, GetUp().y); - WriteSaveBuf(buf, GetUp().z); - SkipSaveBuf(buf, 4); - WriteSaveBuf(buf, GetPosition().x); - WriteSaveBuf(buf, GetPosition().y); - WriteSaveBuf(buf, GetPosition().z); - SkipSaveBuf(buf, 16); + ZeroSaveBuf(buf, 4); + WriteSaveBuf(buf, GetRight().x); + WriteSaveBuf(buf, GetRight().y); + WriteSaveBuf(buf, GetRight().z); + ZeroSaveBuf(buf, 4); + WriteSaveBuf(buf, GetForward().x); + WriteSaveBuf(buf, GetForward().y); + WriteSaveBuf(buf, GetForward().z); + ZeroSaveBuf(buf, 4); + WriteSaveBuf(buf, GetUp().x); + WriteSaveBuf(buf, GetUp().y); + WriteSaveBuf(buf, GetUp().z); + ZeroSaveBuf(buf, 4); + WriteSaveBuf(buf, GetPosition().x); + WriteSaveBuf(buf, GetPosition().y); + WriteSaveBuf(buf, GetPosition().z); + ZeroSaveBuf(buf, 16); SaveEntityFlags(buf); - SkipSaveBuf(buf, 212); + ZeroSaveBuf(buf, 212); AutoPilot.Save(buf); - WriteSaveBuf(buf, m_currentColour1); - WriteSaveBuf(buf, m_currentColour2); - SkipSaveBuf(buf, 2); - WriteSaveBuf(buf, m_nAlarmState); - SkipSaveBuf(buf, 43); - WriteSaveBuf(buf, m_nNumMaxPassengers); - SkipSaveBuf(buf, 2); - WriteSaveBuf(buf, field_1D0[0]); - WriteSaveBuf(buf, field_1D0[1]); - WriteSaveBuf(buf, field_1D0[2]); - WriteSaveBuf(buf, field_1D0[3]); - SkipSaveBuf(buf, 8); - WriteSaveBuf(buf, m_fSteerAngle); - WriteSaveBuf(buf, m_fGasPedal); - WriteSaveBuf(buf, m_fBrakePedal); - WriteSaveBuf(buf, VehicleCreatedBy); + WriteSaveBuf(buf, m_currentColour1); + WriteSaveBuf(buf, m_currentColour2); + ZeroSaveBuf(buf, 2); + WriteSaveBuf(buf, m_nAlarmState); + ZeroSaveBuf(buf, 43); + WriteSaveBuf(buf, m_nNumMaxPassengers); + ZeroSaveBuf(buf, 2); + WriteSaveBuf(buf, field_1D0[0]); + WriteSaveBuf(buf, field_1D0[1]); + WriteSaveBuf(buf, field_1D0[2]); + WriteSaveBuf(buf, field_1D0[3]); + ZeroSaveBuf(buf, 8); + WriteSaveBuf(buf, m_fSteerAngle); + WriteSaveBuf(buf, m_fGasPedal); + WriteSaveBuf(buf, m_fBrakePedal); + WriteSaveBuf(buf, VehicleCreatedBy); uint8 flags = 0; if (bIsLawEnforcer) flags |= BIT(0); if (bIsLocked) flags |= BIT(3); @@ -1305,19 +1305,19 @@ CVehicle::Save(uint8*& buf) if (bIsHandbrakeOn) flags |= BIT(5); if (bLightsOn) flags |= BIT(6); if (bFreebies) flags |= BIT(7); - WriteSaveBuf(buf, flags); - SkipSaveBuf(buf, 10); - WriteSaveBuf(buf, m_fHealth); - WriteSaveBuf(buf, m_nCurrentGear); - SkipSaveBuf(buf, 3); - WriteSaveBuf(buf, m_fChangeGearTime); - SkipSaveBuf(buf, 4); - WriteSaveBuf(buf, m_nTimeOfDeath); - SkipSaveBuf(buf, 2); - WriteSaveBuf(buf, m_nBombTimer); - SkipSaveBuf(buf, 12); - WriteSaveBuf(buf, m_nDoorLock); - SkipSaveBuf(buf, 99); + WriteSaveBuf(buf, flags); + ZeroSaveBuf(buf, 10); + WriteSaveBuf(buf, m_fHealth); + WriteSaveBuf(buf, m_nCurrentGear); + ZeroSaveBuf(buf, 3); + WriteSaveBuf(buf, m_fChangeGearTime); + ZeroSaveBuf(buf, 4); + WriteSaveBuf(buf, m_nTimeOfDeath); + ZeroSaveBuf(buf, 2); + WriteSaveBuf(buf, m_nBombTimer); + ZeroSaveBuf(buf, 12); + WriteSaveBuf(buf, m_nDoorLock); + ZeroSaveBuf(buf, 96); } void @@ -1379,8 +1379,7 @@ CVehicle::Load(uint8*& buf) SkipSaveBuf(buf, 2); ReadSaveBuf(&m_nBombTimer, buf); SkipSaveBuf(buf, 12); - ReadSaveBuf(&flags, buf); - m_nDoorLock = (eCarLock)flags; - SkipSaveBuf(buf, 99); + ReadSaveBuf(&m_nDoorLock, buf); + SkipSaveBuf(buf, 96); } #endif diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index 43a85db8..6f0e9094 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -2337,7 +2337,7 @@ CWeapon::Save(uint8*& buf) CopyToBuf(buf, m_nAmmoTotal); CopyToBuf(buf, m_nTimer); CopyToBuf(buf, m_bAddRotOffset); - SkipSaveBuf(buf, 3); + ZeroSaveBuf(buf, 3); } void From 33c45e4ae0f10a4b296e520d3691b47bc801ea73 Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Sat, 10 Jul 2021 08:56:28 -0700 Subject: [PATCH 209/314] Fix debug script loader crashing missions * open_script is now exposed in Script.h, perhaps it should be namespaced as a static method on CTheScripts? I'm unsure what is preferred. * I've moved the joypad code out of open_script to prevent buttons held down at mission load time from changing the scriptToLoad. --- src/control/Script.cpp | 24 +++++++++++------------- src/control/Script.h | 1 + src/control/Script6.cpp | 4 ++++ 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index e06acdc3..09891765 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -1771,20 +1771,12 @@ int scriptToLoad = 0; int open_script() { - // glfwGetKey doesn't work because of CGame::Initialise is blocking - CPad::UpdatePads(); - if (CPad::GetPad(0)->GetChar('G')) - scriptToLoad = 0; - if (CPad::GetPad(0)->GetChar('R')) - scriptToLoad = 1; - if (CPad::GetPad(0)->GetChar('D')) - scriptToLoad = 2; switch (scriptToLoad) { - case 0: return CFileMgr::OpenFile("main.scm", "rb"); - case 1: return CFileMgr::OpenFile("main_freeroam.scm", "rb"); - case 2: return CFileMgr::OpenFile("main_d.scm", "rb"); + case 0: return CFileMgr::OpenFile("data\\main.scm", "rb"); + case 1: return CFileMgr::OpenFile("data\\main_freeroam.scm", "rb"); + case 2: return CFileMgr::OpenFile("data\\main_d.scm", "rb"); } - return CFileMgr::OpenFile("main.scm", "rb"); + return CFileMgr::OpenFile("data\\main.scm", "rb"); } #endif @@ -1800,10 +1792,16 @@ void CTheScripts::Init() MissionCleanUp.Init(); UpsideDownCars.Init(); StuckCars.Init(); - CFileMgr::SetDir("data"); #ifdef USE_DEBUG_SCRIPT_LOADER + // glfwGetKey doesn't work because of CGame::Initialise is blocking + CPad::UpdatePads(); + if(CPad::GetPad(0)->GetChar('G')) scriptToLoad = 0; + if(CPad::GetPad(0)->GetChar('R')) scriptToLoad = 1; + if(CPad::GetPad(0)->GetChar('D')) scriptToLoad = 2; + int mainf = open_script(); #else + CFileMgr::SetDir("data"); int mainf = CFileMgr::OpenFile("main.scm", "rb"); #endif CFileMgr::Read(mainf, (char*)ScriptSpace, SIZE_MAIN_SCRIPT); diff --git a/src/control/Script.h b/src/control/Script.h index 5682024b..cefd6747 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -591,5 +591,6 @@ void RetryMission(int, int); #endif #ifdef USE_DEBUG_SCRIPT_LOADER +int open_script(); extern int scriptToLoad; #endif \ No newline at end of file diff --git a/src/control/Script6.cpp b/src/control/Script6.cpp index 31be6987..c9b2b070 100644 --- a/src/control/Script6.cpp +++ b/src/control/Script6.cpp @@ -305,7 +305,11 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command) CTimer::Suspend(); int offset = CTheScripts::MultiScriptArray[ScriptParams[0]]; CFileMgr::ChangeDir("\\"); +#ifdef USE_DEBUG_SCRIPT_LOADER + int handle = open_script(); +#else int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); +#endif CFileMgr::Seek(handle, offset, 0); CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT); CFileMgr::CloseFile(handle); From 12efd1209bedcd3ad7e572fc600c59846cd9f119 Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Sat, 10 Jul 2021 10:18:32 -0700 Subject: [PATCH 210/314] Fix Cheat menu debug script loader --- src/control/Script.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 09891765..b07c0701 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -4390,7 +4390,11 @@ CTheScripts::SwitchToMission(int32 mission) CTimer::Suspend(); int offset = CTheScripts::MultiScriptArray[mission]; CFileMgr::ChangeDir("\\"); +#ifdef USE_DEBUG_SCRIPT_LOADER + int handle = open_script(); +#else int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); +#endif CFileMgr::Seek(handle, offset, 0); CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT); CFileMgr::CloseFile(handle); From ab73c2f539bdebfd12391db6cb3af99a762e898c Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 25 Jun 2021 05:06:38 +0300 Subject: [PATCH 211/314] Multi-threaded audio streams Under MULTITHREADED_AUDIO define. --- src/audio/oal/stream.cpp | 531 ++++++++++++++++++++++++++++++++------ src/audio/oal/stream.h | 87 ++++++- src/audio/sampman_oal.cpp | 35 ++- src/core/config.h | 1 + 4 files changed, 559 insertions(+), 95 deletions(-) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 5d3ff08e..68847906 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -1,8 +1,6 @@ #include "common.h" #ifdef AUDIO_OAL -#include "stream.h" -#include "sampman.h" #if defined _MSC_VER && !defined RE3_NO_AUTOLINK #ifdef AUDIO_OAL_USE_SNDFILE @@ -22,6 +20,28 @@ #include #endif +#include +#include + +#ifdef MULTITHREADED_AUDIO +#include +#include +#include +#include +#include "MusicManager.h" +#include "stream.h" + +std::thread gAudioThread; +std::mutex gAudioThreadQueueMutex; +std::condition_variable gAudioThreadCv; +bool gAudioThreadTerm = false; +std::queue gStreamsToProcess; // values are not unique, we will handle that ourself +#else +#include "stream.h" +#endif + +#include "sampman.h" + #ifndef _WIN32 #include "crossplatform.h" #endif @@ -39,6 +59,10 @@ class CSortStereoBuffer { uint16* PcmBuf; size_t BufSize; +//#ifdef MULTITHREADED_AUDIO +// std::mutex Mutex; +//#endif + public: CSortStereoBuffer() : PcmBuf(nil), BufSize(0) {} ~CSortStereoBuffer() @@ -65,6 +89,9 @@ public: void SortStereo(void* buf, size_t size) { +//#ifdef MULTITHREADED_AUDIO +// std::lock_guard lock(Mutex); +//#endif uint16* InBuf = (uint16*)buf; uint16* OutBuf = GetBuffer(size); @@ -279,6 +306,10 @@ public: #undef CLOSE_ON_ERROR } + void FileOpen() + { + } + ~CWavFile() { Close(); @@ -289,6 +320,7 @@ public: return m_bIsOpen; } + uint32 GetSampleSize() { return sizeof(uint16); @@ -405,6 +437,10 @@ public: m_pfSound = sf_open(path, SFM_READ, &m_soundInfo); } + void FileOpen() + { + } + ~CSndFile() { if ( m_pfSound ) @@ -464,8 +500,6 @@ public: #endif #ifdef AUDIO_OAL_USE_MPG123 -// fuzzy seek eliminates stutter when playing ADF but spams errors a lot (nothing breaks though) -#define MP3_USE_FUZZY_SEEK class CMP3File : public IDecoder { @@ -473,37 +507,51 @@ class CMP3File : public IDecoder bool m_bOpened; uint32 m_nRate; uint32 m_nChannels; + const char* m_pPath; + bool m_bFileNotOpenedYet; public: CMP3File(const char *path) : m_pMH(nil), m_bOpened(false), m_nRate(0), - m_nChannels(0) + m_nChannels(0), + m_pPath(path), + m_bFileNotOpenedYet(false) { m_pMH = mpg123_new(nil, nil); if ( m_pMH ) { -#ifdef MP3_USE_FUZZY_SEEK - mpg123_param(m_pMH, MPG123_FLAGS, MPG123_FUZZY | MPG123_SEEKBUFFER | MPG123_GAPLESS | MPG123_QUIET, 0.0); -#endif - long rate = 0; - int channels = 0; - int encoding = 0; - - m_bOpened = mpg123_open(m_pMH, path) == MPG123_OK - && mpg123_getformat(m_pMH, &rate, &channels, &encoding) == MPG123_OK; + mpg123_param(m_pMH, MPG123_FLAGS, MPG123_SEEKBUFFER | MPG123_GAPLESS, 0.0); - m_nRate = rate; - m_nChannels = channels; - - if ( IsOpened() ) - { - mpg123_format_none(m_pMH); - mpg123_format(m_pMH, rate, channels, encoding); - } + m_bOpened = true; + m_bFileNotOpenedYet = true; + // It's possible to move this to audioFileOpsThread(), but effect isn't noticable + probably not compatible with our current cutscene audio handling +#if 1 + FileOpen(); +#endif } } + void FileOpen() + { + if(!m_bFileNotOpenedYet) return; + + long rate = 0; + int channels = 0; + int encoding = 0; + m_bOpened = mpg123_open(m_pMH, m_pPath) == MPG123_OK + && mpg123_getformat(m_pMH, &rate, &channels, &encoding) == MPG123_OK; + + m_nRate = rate; + m_nChannels = channels; + + if(IsOpened()) { + mpg123_format_none(m_pMH); + mpg123_format(m_pMH, rate, channels, encoding); + } + m_bFileNotOpenedYet = false; + } + ~CMP3File() { if ( m_pMH ) @@ -526,7 +574,7 @@ public: uint32 GetSampleCount() { - if ( !IsOpened() ) return 0; + if ( !IsOpened() || m_bFileNotOpenedYet ) return 0; return mpg123_length(m_pMH); } @@ -542,19 +590,19 @@ public: void Seek(uint32 milliseconds) { - if ( !IsOpened() ) return; + if ( !IsOpened() || m_bFileNotOpenedYet ) return; mpg123_seek(m_pMH, ms2samples(milliseconds), SEEK_SET); } uint32 Tell() { - if ( !IsOpened() ) return 0; + if ( !IsOpened() || m_bFileNotOpenedYet ) return 0; return samples2ms(mpg123_tell(m_pMH)); } uint32 Decode(void *buffer) { - if ( !IsOpened() ) return 0; + if ( !IsOpened() || m_bFileNotOpenedYet ) return 0; size_t size; int err = mpg123_read(m_pMH, (unsigned char *)buffer, GetBufferSize(), &size); @@ -685,6 +733,10 @@ public: m_ppVagBuffers[i] = new uint8[VB_BLOCK_SIZE]; } + void FileOpen() + { + } + ~CVbFile() { if (m_pFile) @@ -837,6 +889,10 @@ public: m_bOpened = true; } } + + void FileOpen() + { + } ~COpusFile() { @@ -902,11 +958,183 @@ public: }; #endif + +// For multi-thread: Someone always acquire stream's mutex before entering here +void +CStream::BuffersShouldBeFilled() +{ +#ifdef MULTITHREADED_AUDIO + if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE) { + std::queue> tempQueue; + for(int i = 0; i < NUM_STREAMBUFFERS / 2; i++) { + tempQueue.push(std::pair(m_alBuffers[i * 2], m_alBuffers[i * 2 + 1])); + } + m_fillBuffers.swap(tempQueue); + + FlagAsToBeProcessed(); + + m_bActive = true; // to allow Update() to queue the filled buffers & play + return; + } + std::queue>().swap(m_fillBuffers); +#endif + if ( FillBuffers() != 0 ) + { + SetPlay(true); + } +} + +// returns whether it's queued (not on multi-thread) +bool +CStream::BufferShouldBeFilledAndQueued(std::pair* bufs) +{ +#ifdef MULTITHREADED_AUDIO + if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE) + m_fillBuffers.push(*bufs); + else +#endif + { + ALuint alBuffers[2] = {(*bufs).first, (*bufs).second}; // left - right + if (FillBuffer(alBuffers)) { + alSourceQueueBuffers(m_pAlSources[0], 1, &alBuffers[0]); + alSourceQueueBuffers(m_pAlSources[1], 1, &alBuffers[1]); + return true; + } + } + return false; +} + +#ifdef MULTITHREADED_AUDIO +void +CStream::FlagAsToBeProcessed(bool close) +{ + if (!close && MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) + return; + + gAudioThreadQueueMutex.lock(); + gStreamsToProcess.push(this); + gAudioThreadQueueMutex.unlock(); + + gAudioThreadCv.notify_one(); +} + +extern CStream *aStream[]; +void audioFileOpsThread() +{ + std::queue m_streamsToDelete; + + do + { + CStream *stream; + { + // Just a semaphore + std::unique_lock queueMutex(gAudioThreadQueueMutex); + gAudioThreadCv.wait(queueMutex, [m_streamsToDelete] { return gStreamsToProcess.size() > 0 || m_streamsToDelete.size() > 0 || gAudioThreadTerm; }); + if (gAudioThreadTerm) + return; + + if (!gStreamsToProcess.empty()) { + stream = gStreamsToProcess.front(); + gStreamsToProcess.pop(); + } else { + // End of streams. Perform deleting streams + while(!m_streamsToDelete.empty()) { + CStream *stream = m_streamsToDelete.front(); + m_streamsToDelete.pop(); + if (stream->m_pSoundFile) { + delete stream->m_pSoundFile; + stream->m_pSoundFile = nil; + } + + if (stream->m_pBuffer) { + free(stream->m_pBuffer); + stream->m_pBuffer = nil; + } + delete stream; + } + continue; + } + } + + std::unique_lock lock(stream->m_mutex); + + std::pair buffers, *lastBufAddr; + bool insertBufsAfterCheck = false; + + do { + if (stream->m_nDeleteMe == 1) { + m_streamsToDelete.push(stream); + stream->m_nDeleteMe = 2; + break; + } else if (stream->m_nDeleteMe == 2) { + break; + } + + if (!stream->IsOpened()) + break; + + if (stream->m_bReset) + break; + + // We gave up this idea for now + /* + stream->m_pSoundFile->FileOpen(); + + // Deffered allocation, do it now + if (stream->m_pBuffer == nil) { + stream->m_pBuffer = malloc(stream->m_pSoundFile->GetBufferSize()); + ASSERT(stream->m_pBuffer != nil); + } + */ + + if (stream->m_bDoSeek) { + stream->m_bDoSeek = false; + int pos = stream->m_SeekPos; + lock.unlock(); + stream->m_pSoundFile->Seek(pos); + lock.lock(); + + continue; // let's do the checks again, make sure we didn't miss anything while Seeking + } + + if (insertBufsAfterCheck) { + stream->m_queueBuffers.push(buffers); + insertBufsAfterCheck = false; + } + + if (!stream->m_fillBuffers.empty()) { + lastBufAddr = &stream->m_fillBuffers.front(); + buffers = *lastBufAddr; + lock.unlock(); + + ALuint alBuffers[2] = {buffers.first, buffers.second}; // left - right + bool filled = stream->FillBuffer(alBuffers); + + lock.lock(); + + // Make sure queue isn't touched after we released mutex + if (!stream->m_fillBuffers.empty() && lastBufAddr == &stream->m_fillBuffers.front()) { + stream->m_fillBuffers.pop(); + if (filled) + insertBufsAfterCheck = true; // Also make sure stream's properties aren't changed. So make one more pass, and push it to m_queueBuffers only if it pass checks again. + } + } else + break; + + } while (true); + + } while(true); +} +#endif + void CStream::Initialise() { #ifdef AUDIO_OAL_USE_MPG123 mpg123_init(); #endif +#ifdef MULTITHREADED_AUDIO + gAudioThread = std::thread(audioFileOpsThread); +#endif } void CStream::Terminate() @@ -914,6 +1142,14 @@ void CStream::Terminate() #ifdef AUDIO_OAL_USE_MPG123 mpg123_exit(); #endif +#ifdef MULTITHREADED_AUDIO + gAudioThreadQueueMutex.lock(); + gAudioThreadTerm = true; + gAudioThreadQueueMutex.unlock(); + + gAudioThreadCv.notify_one(); + gAudioThread.join(); +#endif } CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBUFFERS], uint32 overrideSampleRate) : @@ -922,6 +1158,11 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU m_pBuffer(nil), m_bPaused(false), m_bActive(false), +#ifdef MULTITHREADED_AUDIO + m_nDeleteMe(false), + m_bDoSeek(false), + m_SeekPos(0), +#endif m_pSoundFile(nil), m_bReset(false), m_nVolume(0), @@ -966,42 +1207,57 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU if ( IsOpened() ) { - m_pBuffer = malloc(m_pSoundFile->GetBufferSize()); - ASSERT(m_pBuffer!=nil); - - DEV("AvgSamplesPerSec: %d\n", m_pSoundFile->GetAvgSamplesPerSec()); - DEV("SampleCount: %d\n", m_pSoundFile->GetSampleCount()); - DEV("SampleRate: %d\n", m_pSoundFile->GetSampleRate()); - DEV("Channels: %d\n", m_pSoundFile->GetChannels()); - DEV("Buffer Samples: %d\n", m_pSoundFile->GetBufferSamples()); - DEV("Buffer sec: %f\n", (float(m_pSoundFile->GetBufferSamples()) / float(m_pSoundFile->GetChannels())/ float(m_pSoundFile->GetSampleRate()))); - DEV("Length MS: %02d:%02d\n", (m_pSoundFile->GetLength() / 1000) / 60, (m_pSoundFile->GetLength() / 1000) % 60); - + uint32 bufSize = m_pSoundFile->GetBufferSize(); + if(bufSize != 0) { // Otherwise it's deferred + m_pBuffer = malloc(bufSize); + ASSERT(m_pBuffer != nil); + + DEV("AvgSamplesPerSec: %d\n", m_pSoundFile->GetAvgSamplesPerSec()); + DEV("SampleCount: %d\n", m_pSoundFile->GetSampleCount()); + DEV("SampleRate: %d\n", m_pSoundFile->GetSampleRate()); + DEV("Channels: %d\n", m_pSoundFile->GetChannels()); + DEV("Buffer Samples: %d\n", m_pSoundFile->GetBufferSamples()); + DEV("Buffer sec: %f\n", (float(m_pSoundFile->GetBufferSamples()) / float(m_pSoundFile->GetChannels())/ float(m_pSoundFile->GetSampleRate()))); + DEV("Length MS: %02d:%02d\n", (m_pSoundFile->GetLength() / 1000) / 60, (m_pSoundFile->GetLength() / 1000) % 60); + } return; } } CStream::~CStream() { - Delete(); + assert(!IsOpened()); } -void CStream::Delete() +void CStream::Close() { +#ifdef MULTITHREADED_AUDIO + { + std::lock_guard lock(m_mutex); + + Stop(); + ClearBuffers(); + m_nDeleteMe = true; + // clearing buffer queues are not needed. after m_nDeleteMe set, this stream is ded + } + + FlagAsToBeProcessed(true); +#else Stop(); ClearBuffers(); - + if ( m_pSoundFile ) { delete m_pSoundFile; m_pSoundFile = nil; } - + if ( m_pBuffer ) { free(m_pBuffer); m_pBuffer = nil; } +#endif } bool CStream::HasSource() @@ -1025,6 +1281,14 @@ bool CStream::IsPlaying() alGetSourcei(m_pAlSources[1], AL_SOURCE_STATE, &sourceState[1]); if (sourceState[0] == AL_PLAYING || sourceState[1] == AL_PLAYING) return true; + +#ifdef MULTITHREADED_AUDIO + std::lock_guard lock(m_mutex); + + // Streams are designed in such a way that m_fillBuffers and m_queueBuffers will be *always* filled if audio is playing, and mutex is acquired + if (!m_fillBuffers.empty() || !m_queueBuffers.emptyNts()) + return true; +#endif } return false; @@ -1099,8 +1363,24 @@ void CStream::SetPan(uint8 nPan) void CStream::SetPosMS(uint32 nPos) { if ( !IsOpened() ) return; - m_pSoundFile->Seek(nPos); + +#ifdef MULTITHREADED_AUDIO + std::lock_guard lock(m_mutex); + + std::queue>().swap(m_fillBuffers); + tsQueue>().swapNts(m_queueBuffers); // TSness not required, second thread always access it when stream mutex acquired + + if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE) { + m_bDoSeek = true; + m_SeekPos = nPos; + } else +#endif + { + m_pSoundFile->Seek(nPos); + } ClearBuffers(); + + // adding to gStreamsToProcess not needed, someone always calls Start() / BuffersShouldBeFilled() after SetPosMS } uint32 CStream::GetPosMS() @@ -1108,10 +1388,16 @@ uint32 CStream::GetPosMS() if ( !HasSource() ) return 0; if ( !IsOpened() ) return 0; + // Deferred init causes division by zero + if (m_pSoundFile->GetChannels() == 0) + return 0; + ALint offset; //alGetSourcei(m_alSource, AL_SAMPLE_OFFSET, &offset); alGetSourcei(m_pAlSources[0], AL_BYTE_OFFSET, &offset); + //std::lock_guard lock(m_mutex); + return m_pSoundFile->Tell() - m_pSoundFile->samples2ms(m_pSoundFile->GetBufferSamples() * (NUM_STREAMBUFFERS/2-1)) / m_pSoundFile->GetChannels() + m_pSoundFile->samples2ms(offset/m_pSoundFile->GetSampleSize()) / m_pSoundFile->GetChannels(); @@ -1125,6 +1411,7 @@ uint32 CStream::GetLengthMS() bool CStream::FillBuffer(ALuint *alBuffer) { +#ifndef MULTITHREADED_AUDIO if ( !HasSource() ) return false; if ( !IsOpened() ) @@ -1133,7 +1420,8 @@ bool CStream::FillBuffer(ALuint *alBuffer) return false; if ( !(alBuffer[1] != AL_NONE && alIsBuffer(alBuffer[1])) ) return false; - +#endif + uint32 size = m_pSoundFile->Decode(m_pBuffer); if( size == 0 ) return false; @@ -1149,6 +1437,26 @@ bool CStream::FillBuffer(ALuint *alBuffer) return true; } +#ifdef MULTITHREADED_AUDIO +bool CStream::QueueBuffers() +{ + bool buffersQueued = false; + std::pair buffers; + while (m_queueBuffers.peekPop(&buffers)) // beware: m_queueBuffers is tsQueue + { + ALuint leftBuf = buffers.first; + ALuint rightBuf = buffers.second; + + alSourceQueueBuffers(m_pAlSources[0], 1, &leftBuf); + alSourceQueueBuffers(m_pAlSources[1], 1, &rightBuf); + + buffersQueued = true; + } + return buffersQueued; +} +#endif + +// Only used in single-threaded audio or cutscene audio int32 CStream::FillBuffers() { int32 i = 0; @@ -1178,17 +1486,33 @@ void CStream::ClearBuffers() alSourceUnqueueBuffers(m_pAlSources[1], 1, &value); } -bool CStream::Setup(bool imSureQueueIsEmpty) +bool CStream::Setup(bool imSureQueueIsEmpty, bool lock) { if ( IsOpened() ) { - alSourcei(m_pAlSources[0], AL_LOOPING, AL_FALSE); - alSourcei(m_pAlSources[1], AL_LOOPING, AL_FALSE); +#ifdef MULTITHREADED_AUDIO + if (lock) + m_mutex.lock(); +#endif + if (!imSureQueueIsEmpty) { - SetPlay(false); + Stop(); ClearBuffers(); } +#ifdef MULTITHREADED_AUDIO + if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) { + m_pSoundFile->Seek(0); + } else { + m_bDoSeek = true; + m_SeekPos = 0; + } + + if (lock) + m_mutex.unlock(); +#else m_pSoundFile->Seek(0); +#endif + //SetPosition(0.0f, 0.0f, 0.0f); SetPitch(1.0f); //SetPan(m_nPan); @@ -1241,8 +1565,12 @@ void CStream::SetPlay(bool state) void CStream::Start() { if ( !HasSource() ) return; - if ( FillBuffers() != 0 ) - SetPlay(true); + +#ifdef MULTITHREADED_AUDIO + std::lock_guard lock(m_mutex); + tsQueue>().swapNts(m_queueBuffers); // TSness not required, second thread always access it when stream mutex acquired +#endif + BuffersShouldBeFilled(); } void CStream::Stop() @@ -1264,9 +1592,23 @@ void CStream::Update() if ( !m_bPaused ) { - ALint totalBuffers[2] = { 0, 0 }; - ALint buffersProcessed[2] = { 0, 0 }; + bool buffersQueuedAndStarted = false; + bool buffersQueuedButNotStarted = false; +#ifdef MULTITHREADED_AUDIO + // Put it in here because we need totalBuffers after queueing to decide when to loop audio + if (m_bActive) + { + buffersQueuedAndStarted = QueueBuffers(); + if(buffersQueuedAndStarted) { + SetPlay(true); + } + } +#endif + + ALint totalBuffers[2] = {0, 0}; + ALint buffersProcessed[2] = {0, 0}; + // Relying a lot on left buffer states in here do @@ -1278,44 +1620,66 @@ void CStream::Update() alGetSourcei(m_pAlSources[1], AL_BUFFERS_QUEUED, &totalBuffers[1]); alGetSourcei(m_pAlSources[1], AL_BUFFERS_PROCESSED, &buffersProcessed[1]); } while (buffersProcessed[0] != buffersProcessed[1]); - + assert(buffersProcessed[0] == buffersProcessed[1]); // Correcting OpenAL concepts here: // AL_BUFFERS_QUEUED = Number of *all* buffers in queue, including processed, processing and pending // AL_BUFFERS_PROCESSED = Index of the buffer being processing right now. Buffers coming after that(have greater index) are pending buffers. // which means: totalBuffers[0] - buffersProcessed[0] = pending buffers - - bool buffersRefilled = false; - + // We should wait queue to be cleared to loop track, because position calculation relies on queue. if (m_nLoopCount != 1 && m_bActive && totalBuffers[0] == 0) { - Setup(true); - buffersRefilled = FillBuffers() != 0; - if (m_nLoopCount != 0) - m_nLoopCount--; +#ifdef MULTITHREADED_AUDIO + std::lock_guard lock(m_mutex); + + if (m_fillBuffers.empty() && m_queueBuffers.emptyNts()) // we already acquired stream mutex, which is enough for second thread. thus Nts variant +#endif + { + Setup(true, false); + BuffersShouldBeFilled(); // will also call SetPlay(true) + if (m_nLoopCount != 0) + m_nLoopCount--; + } } else { - while( buffersProcessed[0]-- ) + static std::queue> tempFillBuffer; + + while ( buffersProcessed[0]-- ) { ALuint buffer[2]; alSourceUnqueueBuffers(m_pAlSources[0], 1, &buffer[0]); alSourceUnqueueBuffers(m_pAlSources[1], 1, &buffer[1]); - - if (m_bActive && FillBuffer(buffer)) + + if (m_bActive) { - buffersRefilled = true; - alSourceQueueBuffers(m_pAlSources[0], 1, &buffer[0]); - alSourceQueueBuffers(m_pAlSources[1], 1, &buffer[1]); + tempFillBuffer.push(std::pair(buffer[0], buffer[1])); } } + + if (m_bActive && buffersProcessed[1]) + { +#ifdef MULTITHREADED_AUDIO + m_mutex.lock(); +#endif + while (!tempFillBuffer.empty()) { + auto elem = tempFillBuffer.front(); + tempFillBuffer.pop(); + buffersQueuedButNotStarted = BufferShouldBeFilledAndQueued(&elem); + } +#ifdef MULTITHREADED_AUDIO + m_mutex.unlock(); + FlagAsToBeProcessed(); +#endif + + } } - // Two reasons: 1-Source may be starved to audio and stopped itself, 2- We're already waiting it to starve and die for looping track! - if (m_bActive && (buffersRefilled || (totalBuffers[1] - buffersProcessed[1] != 0))) + // Source may be starved to audio and stopped itself + if (m_bActive && !buffersQueuedAndStarted && (buffersQueuedButNotStarted || (totalBuffers[1] - buffersProcessed[1] != 0))) SetPlay(true); } } @@ -1324,28 +1688,45 @@ void CStream::ProviderInit() { if ( m_bReset ) { - if ( Setup(true) ) + if ( Setup(true, false) ) // lock not needed, thread can't process streams with m_bReset set { SetPan(m_nPan); SetVolume(m_nVolume); SetLoopCount(m_nLoopCount); SetPosMS(m_nPosBeforeReset); - if (m_bActive) - FillBuffers(); - SetPlay(m_bActive); - if ( m_bPaused ) +#ifdef MULTITHREADED_AUDIO + std::unique_lock lock(m_mutex); +#endif + if(m_bActive) + BuffersShouldBeFilled(); + + if (m_bPaused) Pause(); + + m_bReset = false; + + } else { +#ifdef MULTITHREADED_AUDIO + std::unique_lock lock(m_mutex); +#endif + m_bReset = false; } - - m_bReset = false; } } void CStream::ProviderTerm() { +#ifdef MULTITHREADED_AUDIO + std::lock_guard lock(m_mutex); + + // unlike Close() we will reuse this stream, so clearing queues are important. + std::queue>().swap(m_fillBuffers); + tsQueue>().swapNts(m_queueBuffers); // stream mutex is already acquired, thus Nts variant +#endif m_bReset = true; m_nPosBeforeReset = GetPosMS(); - + + Stop(); ClearBuffers(); } diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h index 9a2a2fbe..bdbf19e0 100644 --- a/src/audio/oal/stream.h +++ b/src/audio/oal/stream.h @@ -11,6 +11,7 @@ public: virtual ~IDecoder() { } virtual bool IsOpened() = 0; + virtual void FileOpen() = 0; virtual uint32 GetSampleSize() = 0; virtual uint32 GetSampleCount() = 0; @@ -48,12 +49,70 @@ public: uint32 GetLength() { + FileOpen(); // abort deferred init, we need length now - game has to cache audio file sizes return float(GetSampleCount()) * 1000.0f / float(GetSampleRate()); } virtual uint32 Decode(void *buffer) = 0; }; +#ifdef MULTITHREADED_AUDIO +template class tsQueue +{ +public: + tsQueue() : count(0) { } + + void push(const T &value) + { + std::lock_guard lock(m_mutex); + m_queue.push(value); + count++; + } + bool peekPop(T *retVal) + { + std::lock_guard lock(m_mutex); + if (count == 0) + return false; + + *retVal = m_queue.front(); + m_queue.pop(); + count--; + return true; + } + + void swapNts(tsQueue &replaceWith) + { + m_queue.swap(replaceWith.m_queue); + replaceWith.count = count; + } + + /* + void swapTs(tsQueue &replaceWith) + { + std::lock_guard lock(m_mutex); + std::lock_guard lock2(replaceWith.m_mutex); + swapNts(replaceWith); + } + */ + + bool emptyNts() + { + return count == 0; + } + + /* + bool emptyTs() + { + std::lock_guard lock(m_mutex); + return emptyNts(); + } + */ + + std::queue m_queue; + int count; + mutable std::mutex m_mutex; +}; +#endif class CStream { char m_aFilename[128]; @@ -63,6 +122,16 @@ class CStream bool m_bPaused; bool m_bActive; +public: +#ifdef MULTITHREADED_AUDIO + std::mutex m_mutex; + std::queue> m_fillBuffers; // left and right buffer + tsQueue> m_queueBuffers; + bool m_bDoSeek; + uint32 m_SeekPos; + uint8 m_nDeleteMe; // 1: add to delete list 2: already on delete list +#endif + void *m_pBuffer; bool m_bReset; @@ -72,7 +141,14 @@ class CStream int32 m_nLoopCount; IDecoder *m_pSoundFile; - + + void BuffersShouldBeFilled(); // all + bool BufferShouldBeFilledAndQueued(std::pair*); // two (left-right) +#ifdef MULTITHREADED_AUDIO + void FlagAsToBeProcessed(bool close = false); + bool QueueBuffers(); +#endif + bool HasSource(); void SetPosition(int i, float x, float y, float z); void SetPitch(float pitch); @@ -81,15 +157,15 @@ class CStream void SetPlay(bool state); bool FillBuffer(ALuint *alBuffer); - int32 FillBuffers(); + int32 FillBuffers(); void ClearBuffers(); -public: +//public: static void Initialise(); static void Terminate(); CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBUFFERS], uint32 overrideSampleRate = 32000); ~CStream(); - void Delete(); + void Close(); bool IsOpened(); bool IsPlaying(); @@ -100,12 +176,11 @@ public: uint32 GetPosMS(); uint32 GetLengthMS(); - bool Setup(bool imSureQueueIsEmpty = false); + bool Setup(bool imSureQueueIsEmpty = false, bool lock = true); void Start(); void Stop(); void Update(void); void SetLoopCount(int32); - void ProviderInit(); void ProviderTerm(); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 7fb84965..d546acf2 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -34,6 +34,12 @@ #include "oal/oal_utils.h" #include "oal/aldlist.h" #include "oal/channel.h" + +#include +#ifdef MULTITHREADED_AUDIO +#include +#include +#endif #include "oal/stream.h" #include "AudioManager.h" @@ -520,7 +526,7 @@ _FindMP3s(void) if (aStream[0] && aStream[0]->IsOpened()) { total_ms = aStream[0]->GetLengthMS(); - delete aStream[0]; + aStream[0]->Close(); aStream[0] = NULL; OutputDebugString(fd.cFileName); @@ -578,7 +584,7 @@ _FindMP3s(void) if (aStream[0] && aStream[0]->IsOpened()) { total_ms = aStream[0]->GetLengthMS(); - delete aStream[0]; + aStream[0]->Close(); aStream[0] = NULL; pList->pNext = new tMP3Entry; @@ -732,6 +738,7 @@ cSampleManager::Initialise(void) return TRUE; EFXInit(); + CStream::Initialise(); { @@ -890,7 +897,7 @@ cSampleManager::Initialise(void) if(aStream[0] && aStream[0]->IsOpened()) { uint32 tatalms = aStream[0]->GetLengthMS(); - delete aStream[0]; + aStream[0]->Close(); aStream[0] = NULL; nStreamLength[i] = tatalms; @@ -939,7 +946,7 @@ cSampleManager::Initialise(void) nStreamPan[i] = 63; } } - + { _bSampmanInitialised = TRUE; @@ -1025,7 +1032,7 @@ cSampleManager::Terminate(void) CStream *stream = aStream[i]; if (stream) { - delete stream; + stream->Close(); aStream[i] = NULL; } } @@ -1607,7 +1614,7 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) { if ( aStream[nStream] ) { - delete aStream[nStream]; + aStream[nStream]->Close(); aStream[nStream] = NULL; } @@ -1619,7 +1626,7 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) aStream[nStream] = stream; if ( !stream->Setup() ) { - delete stream; + stream->Close(); aStream[nStream] = NULL; } } @@ -1666,7 +1673,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) if ( aStream[nStream] ) { - delete aStream[nStream]; + aStream[nStream]->Close(); aStream[nStream] = NULL; } if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) @@ -1697,7 +1704,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { - delete stream; + stream->Close(); aStream[nStream] = NULL; } return FALSE; @@ -1721,7 +1728,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) _bIsMp3Active = TRUE; return TRUE; } else { - delete aStream[nStream]; + aStream[nStream]->Close(); aStream[nStream] = NULL; } // fall through, start playing from another song @@ -1753,7 +1760,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { - delete stream; + stream->Close(); aStream[nStream] = NULL; } return FALSE; @@ -1775,7 +1782,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) #endif return TRUE; } else { - delete aStream[nStream]; + aStream[nStream]->Close(); aStream[nStream] = NULL; } @@ -1800,7 +1807,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { - delete stream; + stream->Close(); aStream[nStream] = NULL; } return FALSE; @@ -1815,7 +1822,7 @@ cSampleManager::StopStreamedFile(uint8 nStream) if ( stream ) { - delete stream; + stream->Close(); aStream[nStream] = NULL; if ( nStream == 0 ) diff --git a/src/core/config.h b/src/core/config.h index c9339b74..8f10e10d 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -399,6 +399,7 @@ enum Config { //#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) //#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder #define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files +#define MULTITHREADED_AUDIO #define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused #ifdef AUDIO_OPUS From 5458632c405fd81e76e625ba9dfabe8831509d1b Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 26 Jun 2021 23:59:40 +0300 Subject: [PATCH 212/314] Multi-threaded audio fixes --- src/audio/oal/stream.cpp | 93 ++++++++++++++++----------- src/audio/oal/stream.h | 7 ++- src/audio/sampman_oal.cpp | 129 ++++++++++++++------------------------ src/core/config.h | 3 +- 4 files changed, 113 insertions(+), 119 deletions(-) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 68847906..8b627e2a 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -1018,42 +1018,23 @@ CStream::FlagAsToBeProcessed(bool close) gAudioThreadCv.notify_one(); } -extern CStream *aStream[]; void audioFileOpsThread() { - std::queue m_streamsToDelete; - do { CStream *stream; { // Just a semaphore std::unique_lock queueMutex(gAudioThreadQueueMutex); - gAudioThreadCv.wait(queueMutex, [m_streamsToDelete] { return gStreamsToProcess.size() > 0 || m_streamsToDelete.size() > 0 || gAudioThreadTerm; }); + gAudioThreadCv.wait(queueMutex, [] { return gStreamsToProcess.size() > 0 || gAudioThreadTerm; }); if (gAudioThreadTerm) return; if (!gStreamsToProcess.empty()) { stream = gStreamsToProcess.front(); gStreamsToProcess.pop(); - } else { - // End of streams. Perform deleting streams - while(!m_streamsToDelete.empty()) { - CStream *stream = m_streamsToDelete.front(); - m_streamsToDelete.pop(); - if (stream->m_pSoundFile) { - delete stream->m_pSoundFile; - stream->m_pSoundFile = nil; - } - - if (stream->m_pBuffer) { - free(stream->m_pBuffer); - stream->m_pBuffer = nil; - } - delete stream; - } + } else continue; - } } std::unique_lock lock(stream->m_mutex); @@ -1062,17 +1043,22 @@ void audioFileOpsThread() bool insertBufsAfterCheck = false; do { - if (stream->m_nDeleteMe == 1) { - m_streamsToDelete.push(stream); - stream->m_nDeleteMe = 2; - break; - } else if (stream->m_nDeleteMe == 2) { + if (!stream->IsOpened()) { + // We MUST do that here, because we release mutex for m_pSoundFile->Seek() and m_pSoundFile->Decode() since they're costly + if (stream->m_pSoundFile) { + delete stream->m_pSoundFile; + stream->m_pSoundFile = nil; + } + + if (stream->m_pBuffer) { + free(stream->m_pBuffer); + stream->m_pBuffer = nil; + } + lock.unlock(); + stream->m_closeCv.notify_one(); break; } - if (!stream->IsOpened()) - break; - if (stream->m_bReset) break; @@ -1152,14 +1138,14 @@ void CStream::Terminate() #endif } -CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBUFFERS], uint32 overrideSampleRate) : +CStream::CStream(ALuint *sources, ALuint (&buffers)[NUM_STREAMBUFFERS]) : m_pAlSources(sources), m_alBuffers(buffers), m_pBuffer(nil), m_bPaused(false), m_bActive(false), #ifdef MULTITHREADED_AUDIO - m_nDeleteMe(false), + m_bIExist(false), m_bDoSeek(false), m_SeekPos(0), #endif @@ -1171,6 +1157,31 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU m_nLoopCount(1) { +} + +bool CStream::Open(const char* filename, uint32 overrideSampleRate) +{ + if (IsOpened()) return false; + +#ifdef MULTITHREADED_AUDIO + std::unique_lock lock(m_mutex); + + CStream *stream = this; + // Wait for thread to close old one. We can't close it here, because the thread might be running Decode() or Seek(), while mutex is released + m_closeCv.wait(lock, [this] { return m_pSoundFile == nil && m_pBuffer == nil; }); + + m_bDoSeek = false; + m_SeekPos = 0; +#endif + + m_bPaused = false; + m_bActive = false; + m_bReset = false; + m_nVolume = 0; + m_nPan = 0; + m_nPosBeforeReset = 0; + m_nLoopCount = 1; + // Be case-insensitive on linux (from https://github.com/OneSadCookie/fcaseopen/) #if !defined(_WIN32) char *real = casepath(filename); @@ -1205,7 +1216,7 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU else m_pSoundFile = nil; - if ( IsOpened() ) + if ( m_pSoundFile && m_pSoundFile->IsOpened() ) { uint32 bufSize = m_pSoundFile->GetBufferSize(); if(bufSize != 0) { // Otherwise it's deferred @@ -1220,8 +1231,12 @@ CStream::CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBU DEV("Buffer sec: %f\n", (float(m_pSoundFile->GetBufferSamples()) / float(m_pSoundFile->GetChannels())/ float(m_pSoundFile->GetSampleRate()))); DEV("Length MS: %02d:%02d\n", (m_pSoundFile->GetLength() / 1000) / 60, (m_pSoundFile->GetLength() / 1000) % 60); } - return; +#ifdef MULTITHREADED_AUDIO + m_bIExist = true; +#endif + return true; } + return false; } CStream::~CStream() @@ -1231,18 +1246,21 @@ CStream::~CStream() void CStream::Close() { + if(!IsOpened()) return; + #ifdef MULTITHREADED_AUDIO { std::lock_guard lock(m_mutex); Stop(); ClearBuffers(); - m_nDeleteMe = true; - // clearing buffer queues are not needed. after m_nDeleteMe set, this stream is ded + m_bIExist = false; + // clearing buffer queues are not needed. after m_bIExist is cleared, this stream is ded } FlagAsToBeProcessed(true); #else + Stop(); ClearBuffers(); @@ -1265,9 +1283,14 @@ bool CStream::HasSource() return (m_pAlSources[0] != AL_NONE) && (m_pAlSources[1] != AL_NONE); } +// m_bIExist only written in main thread, thus mutex is not needed on main thread bool CStream::IsOpened() { +#ifdef MULTITHREADED_AUDIO + return m_bIExist; +#else return m_pSoundFile && m_pSoundFile->IsOpened(); +#endif } bool CStream::IsPlaying() diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h index bdbf19e0..10b595c1 100644 --- a/src/audio/oal/stream.h +++ b/src/audio/oal/stream.h @@ -127,9 +127,10 @@ public: std::mutex m_mutex; std::queue> m_fillBuffers; // left and right buffer tsQueue> m_queueBuffers; + std::condition_variable m_closeCv; bool m_bDoSeek; uint32 m_SeekPos; - uint8 m_nDeleteMe; // 1: add to delete list 2: already on delete list + bool m_bIExist; #endif void *m_pBuffer; @@ -163,8 +164,10 @@ public: static void Initialise(); static void Terminate(); - CStream(char *filename, ALuint *sources, ALuint (&buffers)[NUM_STREAMBUFFERS], uint32 overrideSampleRate = 32000); + CStream(ALuint *sources, ALuint (&buffers)[NUM_STREAMBUFFERS]); ~CStream(); + void Delete(); + bool Open(const char *filename, uint32 overrideSampleRate = 32000); void Close(); bool IsOpened(); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index d546acf2..6c25cf79 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -39,6 +39,7 @@ #ifdef MULTITHREADED_AUDIO #include #include +#include #endif #include "oal/stream.h" @@ -521,14 +522,10 @@ _FindMP3s(void) continue; } } - aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]); - - if (aStream[0] && aStream[0]->IsOpened()) + if (aStream[0] && aStream[0]->Open(filepath)) { total_ms = aStream[0]->GetLengthMS(); aStream[0]->Close(); - aStream[0] = NULL; - OutputDebugString(fd.cFileName); _pMP3List = new tMP3Entry; @@ -579,13 +576,10 @@ _FindMP3s(void) else bShortcut = FALSE; - aStream[0] = new CStream(filepath, ALStreamSources[0], ALStreamBuffers[0]); - - if (aStream[0] && aStream[0]->IsOpened()) + if (aStream[0] && aStream[0]->Open(filepath)) { total_ms = aStream[0]->GetLengthMS(); aStream[0]->Close(); - aStream[0] = NULL; pList->pNext = new tMP3Entry; @@ -739,6 +733,9 @@ cSampleManager::Initialise(void) EFXInit(); + for(int i = 0; i < MAX_STREAMS; i++) + aStream[i] = new CStream(ALStreamSources[i], ALStreamBuffers[i]); + CStream::Initialise(); { @@ -892,14 +889,12 @@ cSampleManager::Initialise(void) debug("Cannot load audio cache\n"); #endif - for(int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++) { - aStream[0] = new CStream(StreamedNameTable[i], ALStreamSources[0], ALStreamBuffers[0], IsThisTrackAt16KHz(i) ? 16000 : 32000); - - if(aStream[0] && aStream[0]->IsOpened()) { + for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) + { + if ( aStream[0] && aStream[0]->Open(StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000) ) + { uint32 tatalms = aStream[0]->GetLengthMS(); aStream[0]->Close(); - aStream[0] = NULL; - nStreamLength[i] = tatalms; } else USERERROR("Can't open '%s'\n", StreamedNameTable[i]); @@ -941,7 +936,8 @@ cSampleManager::Initialise(void) { for ( int32 i = 0; i < MAX_STREAMS; i++ ) { - aStream[i] = NULL; + aStream[i]->Close(); + nStreamVolume[i] = 100; nStreamPan[i] = 63; } @@ -1028,15 +1024,8 @@ void cSampleManager::Terminate(void) { for (int32 i = 0; i < MAX_STREAMS; i++) - { - CStream *stream = aStream[i]; - if (stream) - { - stream->Close(); - aStream[i] = NULL; - } - } - + aStream[i]->Close(); + for ( int32 i = 0; i < NUM_CHANNELS; i++ ) aChannel[i].Term(); @@ -1086,6 +1075,9 @@ cSampleManager::Terminate(void) CStream::Terminate(); + for(int32 i = 0; i < MAX_STREAMS; i++) + delete aStream[i]; + if ( nSampleBankMemoryStartAddress[SFX_BANK_0] != 0 ) { free((void *)nSampleBankMemoryStartAddress[SFX_BANK_0]); @@ -1612,22 +1604,16 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) if ( nFile < TOTAL_STREAMED_SOUNDS ) { - if ( aStream[nStream] ) - { - aStream[nStream]->Close(); - aStream[nStream] = NULL; - } - + CStream *stream = aStream[nStream]; + + stream->Close(); + strcpy(filename, StreamedNameTable[nFile]); - CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - ASSERT(stream != NULL); - - aStream[nStream] = stream; + stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( !stream->Setup() ) { stream->Close(); - aStream[nStream] = NULL; } } } @@ -1639,7 +1625,7 @@ cSampleManager::PauseStream(bool8 nPauseFlag, uint8 nStream) CStream *stream = aStream[nStream]; - if ( stream ) + if ( stream->IsOpened() ) { stream->SetPause(nPauseFlag != FALSE); } @@ -1652,12 +1638,9 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) CStream *stream = aStream[nStream]; - if ( stream ) + if ( stream->IsOpened() ) { - if ( stream->IsOpened() ) - { - stream->Start(); - } + stream->Start(); } } @@ -1671,11 +1654,8 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) if ( nFile >= TOTAL_STREAMED_SOUNDS ) return FALSE; - if ( aStream[nStream] ) - { - aStream[nStream]->Close(); - aStream[nStream] = NULL; - } + aStream[nStream]->Close(); + if ( nFile == STREAMED_SOUND_RADIO_MP3_PLAYER ) { do @@ -1691,12 +1671,10 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { nFile = 0; strcpy(filename, StreamedNameTable[nFile]); - - CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - aStream[nStream] = stream; - - if (stream->Setup()) { + CStream *stream = aStream[nStream]; + stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + if ( stream->Setup() ) { if (position != 0) stream->SetPosMS(position); @@ -1705,18 +1683,17 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { stream->Close(); - aStream[nStream] = NULL; } return FALSE; } else { - if ( e->pLinkPath != NULL ) - aStream[nStream] = new CStream(e->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + if (e->pLinkPath != NULL) + aStream[nStream]->Open(e->pLinkPath, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); else { strcpy(filename, _mp3DirectoryPath); strcat(filename, e->aFilename); - - aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]); + + aStream[nStream]->Open(filename); } if (aStream[nStream]->Setup()) { @@ -1729,7 +1706,6 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { aStream[nStream]->Close(); - aStream[nStream] = NULL; } // fall through, start playing from another song } @@ -1748,9 +1724,8 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) _bIsMp3Active = 0; strcpy(filename, StreamedNameTable[nFile]); - CStream* stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); - - aStream[nStream] = stream; + CStream* stream = aStream[nStream]; + stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if (stream->Setup()) { if (position != 0) @@ -1761,18 +1736,16 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { stream->Close(); - aStream[nStream] = NULL; } return FALSE; } } - if(mp3->pLinkPath != NULL) - aStream[nStream] = new CStream(mp3->pLinkPath, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + if (mp3->pLinkPath != NULL) + aStream[nStream]->Open(mp3->pLinkPath, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); else { strcpy(filename, _mp3DirectoryPath); strcat(filename, mp3->aFilename); - - aStream[nStream] = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream]); + aStream[nStream]->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); } if (aStream[nStream]->Setup()) { @@ -1783,7 +1756,6 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { aStream[nStream]->Close(); - aStream[nStream] = NULL; } } @@ -1795,9 +1767,9 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) } strcpy(filename, StreamedNameTable[nFile]); - CStream *stream = new CStream(filename, ALStreamSources[nStream], ALStreamBuffers[nStream], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + CStream *stream = aStream[nStream]; - aStream[nStream] = stream; + aStream[nStream]->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( stream->Setup() ) { if (position != 0) @@ -1808,7 +1780,6 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) return TRUE; } else { stream->Close(); - aStream[nStream] = NULL; } return FALSE; } @@ -1820,14 +1791,10 @@ cSampleManager::StopStreamedFile(uint8 nStream) CStream *stream = aStream[nStream]; - if ( stream ) - { - stream->Close(); - aStream[nStream] = NULL; + stream->Close(); - if ( nStream == 0 ) - _bIsMp3Active = FALSE; - } + if ( nStream == 0 ) + _bIsMp3Active = FALSE; } int32 @@ -1837,7 +1804,7 @@ cSampleManager::GetStreamedFilePosition(uint8 nStream) CStream *stream = aStream[nStream]; - if ( stream ) + if ( stream->IsOpened() ) { if ( _bIsMp3Active ) { @@ -1875,7 +1842,7 @@ cSampleManager::SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffect CStream *stream = aStream[nStream]; - if ( stream ) + if ( stream->IsOpened() ) { if ( nEffectFlag ) stream->SetVolume(m_nEffectsFadeVolume*nVolume*m_nEffectsVolume >> 14); @@ -1901,7 +1868,7 @@ cSampleManager::IsStreamPlaying(uint8 nStream) CStream *stream = aStream[nStream]; - if ( stream ) + if ( stream->IsOpened() ) { if ( stream->IsPlaying() ) return TRUE; @@ -1917,7 +1884,7 @@ cSampleManager::Service(void) { CStream *stream = aStream[i]; - if ( stream ) + if ( stream->IsOpened() ) stream->Update(); } int refCount = CChannel::channelsThatNeedService; diff --git a/src/core/config.h b/src/core/config.h index 8f10e10d..1c7b06d3 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -399,8 +399,8 @@ enum Config { //#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) //#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder #define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files -#define MULTITHREADED_AUDIO #define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused +#define MULTITHREADED_AUDIO // for streams. requires C++11 or later #ifdef AUDIO_OPUS #define AUDIO_OAL_USE_OPUS // enable support of opus files @@ -527,6 +527,7 @@ enum Config { #undef CANCELLABLE_CAR_ENTER #undef IMPROVED_CAMERA #undef FREE_CAM +#undef MULTITHREADED_AUDIO #undef RADIO_SCROLL_TO_PREV_STATION #undef BIG_IMG #undef PS2_AUDIO_CHANNELS From db4ae18e5d7a582c01c759409ba909b24d640e40 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 27 Jun 2021 14:42:52 +0300 Subject: [PATCH 213/314] Remove waiting for stream closure in multi-thread audio --- src/audio/oal/stream.cpp | 40 ++++++++++++++++++++------------------- src/audio/oal/stream.h | 2 +- src/audio/sampman_oal.cpp | 1 + 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 8b627e2a..0209202a 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -36,6 +36,7 @@ std::mutex gAudioThreadQueueMutex; std::condition_variable gAudioThreadCv; bool gAudioThreadTerm = false; std::queue gStreamsToProcess; // values are not unique, we will handle that ourself +std::queue> gStreamsToClose; #else #include "stream.h" #endif @@ -1012,7 +1013,11 @@ CStream::FlagAsToBeProcessed(bool close) return; gAudioThreadQueueMutex.lock(); - gStreamsToProcess.push(this); + if (close) + gStreamsToClose.push(std::pair(m_pSoundFile ? m_pSoundFile : nil, m_pBuffer ? m_pBuffer : nil)); + else + gStreamsToProcess.push(this); + gAudioThreadQueueMutex.unlock(); gAudioThreadCv.notify_one(); @@ -1026,10 +1031,22 @@ void audioFileOpsThread() { // Just a semaphore std::unique_lock queueMutex(gAudioThreadQueueMutex); - gAudioThreadCv.wait(queueMutex, [] { return gStreamsToProcess.size() > 0 || gAudioThreadTerm; }); + gAudioThreadCv.wait(queueMutex, [] { return gStreamsToProcess.size() > 0 || gStreamsToClose.size() > 0 || gAudioThreadTerm; }); if (gAudioThreadTerm) return; + if (!gStreamsToClose.empty()) { + auto streamToClose = gStreamsToClose.front(); + gStreamsToClose.pop(); + if (streamToClose.first) { // pSoundFile + delete streamToClose.first; + } + + if (streamToClose.second) { // pBuffer + free(streamToClose.second); + } + } + if (!gStreamsToProcess.empty()) { stream = gStreamsToProcess.front(); gStreamsToProcess.pop(); @@ -1044,18 +1061,6 @@ void audioFileOpsThread() do { if (!stream->IsOpened()) { - // We MUST do that here, because we release mutex for m_pSoundFile->Seek() and m_pSoundFile->Decode() since they're costly - if (stream->m_pSoundFile) { - delete stream->m_pSoundFile; - stream->m_pSoundFile = nil; - } - - if (stream->m_pBuffer) { - free(stream->m_pBuffer); - stream->m_pBuffer = nil; - } - lock.unlock(); - stream->m_closeCv.notify_one(); break; } @@ -1166,10 +1171,6 @@ bool CStream::Open(const char* filename, uint32 overrideSampleRate) #ifdef MULTITHREADED_AUDIO std::unique_lock lock(m_mutex); - CStream *stream = this; - // Wait for thread to close old one. We can't close it here, because the thread might be running Decode() or Seek(), while mutex is released - m_closeCv.wait(lock, [this] { return m_pSoundFile == nil && m_pBuffer == nil; }); - m_bDoSeek = false; m_SeekPos = 0; #endif @@ -1255,7 +1256,8 @@ void CStream::Close() Stop(); ClearBuffers(); m_bIExist = false; - // clearing buffer queues are not needed. after m_bIExist is cleared, this stream is ded + std::queue>().swap(m_fillBuffers); + tsQueue>().swapNts(m_queueBuffers); // TSness not required, mutex is acquired } FlagAsToBeProcessed(true); diff --git a/src/audio/oal/stream.h b/src/audio/oal/stream.h index 10b595c1..f0456925 100644 --- a/src/audio/oal/stream.h +++ b/src/audio/oal/stream.h @@ -127,7 +127,7 @@ public: std::mutex m_mutex; std::queue> m_fillBuffers; // left and right buffer tsQueue> m_queueBuffers; - std::condition_variable m_closeCv; +// std::condition_variable m_closeCv; bool m_bDoSeek; uint32 m_SeekPos; bool m_bIExist; diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 6c25cf79..b96df8c4 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -526,6 +526,7 @@ _FindMP3s(void) { total_ms = aStream[0]->GetLengthMS(); aStream[0]->Close(); + OutputDebugString(fd.cFileName); _pMP3List = new tMP3Entry; From d82dbf91efc022a27853decd109f58aa54ebc1ee Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 10 Jul 2021 23:06:36 +0300 Subject: [PATCH 214/314] Merge/sync fixes after threaded audio --- src/audio/sampman_oal.cpp | 2 ++ src/core/config.h | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index b96df8c4..fdd449f7 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -582,6 +582,8 @@ _FindMP3s(void) total_ms = aStream[0]->GetLengthMS(); aStream[0]->Close(); + OutputDebugString(fd.cFileName); + pList->pNext = new tMP3Entry; tMP3Entry *e = pList->pNext; diff --git a/src/core/config.h b/src/core/config.h index 1c7b06d3..298b2a1a 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -527,8 +527,11 @@ enum Config { #undef CANCELLABLE_CAR_ENTER #undef IMPROVED_CAMERA #undef FREE_CAM -#undef MULTITHREADED_AUDIO + #undef RADIO_SCROLL_TO_PREV_STATION -#undef BIG_IMG +#undef AUDIO_CACHE #undef PS2_AUDIO_CHANNELS +#undef PAUSE_RADIO_IN_FRONTEND +#undef MULTITHREADED_AUDIO +#undef BIG_IMG #endif From e9baf31ad87d85d4159f98dcc91cd3a879122bcb Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 10 Jul 2021 23:24:27 +0300 Subject: [PATCH 215/314] Physical: division by zero fix --- src/entities/Physical.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp index 182ff46b..591fb501 100644 --- a/src/entities/Physical.cpp +++ b/src/entities/Physical.cpp @@ -480,6 +480,10 @@ CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &poin { float speedA = DotProduct(speed, springDir); float speedB = DotProduct(GetSpeed(point), springDir); +#ifdef FIX_BUGS + if (speedB == 0.0f) + return true; +#endif float step = Min(CTimer::GetTimeStep(), 3.0f); float impulse = -damping * (speedA + speedB)/2.0f * m_fMass * step * 0.53f; From d7ceb4870c621dedc088cd4c8eccde63ad281230 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 11 Jul 2021 03:26:21 +0200 Subject: [PATCH 216/314] tiny diff fixes --- src/animation/AnimBlendAssociation.h | 2 +- src/animation/AnimBlendClumpData.cpp | 1 - src/audio/oal/stream.cpp | 3 ++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/animation/AnimBlendAssociation.h b/src/animation/AnimBlendAssociation.h index 80927da2..45720b6f 100644 --- a/src/animation/AnimBlendAssociation.h +++ b/src/animation/AnimBlendAssociation.h @@ -35,7 +35,7 @@ public: CAnimBlendLink link; - int numNodes; // taken from CAnimBlendClumpData::numFrames + int32 numNodes; // taken from CAnimBlendClumpData::numFrames // NB: Order of these depends on order of nodes in Clump this was built from CAnimBlendNode *nodes; CAnimBlendHierarchy *hierarchy; diff --git a/src/animation/AnimBlendClumpData.cpp b/src/animation/AnimBlendClumpData.cpp index 702ee811..b333a449 100644 --- a/src/animation/AnimBlendClumpData.cpp +++ b/src/animation/AnimBlendClumpData.cpp @@ -3,7 +3,6 @@ #include "AnimBlendClumpData.h" #include "MemoryMgr.h" - CAnimBlendClumpData::CAnimBlendClumpData(void) { numFrames = 0; diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index 0209202a..6afe8e30 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -2,7 +2,7 @@ #ifdef AUDIO_OAL -#if defined _MSC_VER && !defined RE3_NO_AUTOLINK +#if defined _MSC_VER && !defined CMAKE_NO_AUTOLINK #ifdef AUDIO_OAL_USE_SNDFILE #pragma comment( lib, "libsndfile-1.lib" ) #endif @@ -504,6 +504,7 @@ public: class CMP3File : public IDecoder { +protected: mpg123_handle *m_pMH; bool m_bOpened; uint32 m_nRate; From 3194fdb2c18dbff4c24a3c901ec2d4b473e4ab30 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 11 Jul 2021 03:34:43 +0200 Subject: [PATCH 217/314] fix the fix (and another fix) --- src/CMakeLists.txt | 2 +- src/audio/AudioManager.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 35b7ec11..28090d7e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -39,7 +39,7 @@ target_compile_definitions(${EXECUTABLE} PRIVATE $,DEBUG,NDEBUG> LIBRW - ${PROJECT}_NO_AUTOLINK + CMAKE_NO_AUTOLINK ) if(LIBRW_PLATFORM_D3D9) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 2e391349..a113cc93 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -993,4 +993,4 @@ cAudioManager::ComputeEmittingVolume(uint8 emittingVolume, float intensity, floa return (quatIntensity - (dist - diffIntensity)) * (float)emittingVolume / quatIntensity; return emittingVolume; } -#endif \ No newline at end of file +#endif From 11434f96cc26bc937adeb6db8ce17ed748d7220e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 11 Jul 2021 23:52:55 +0300 Subject: [PATCH 218/314] Add PED DENSITY and CAR DENSITY lines to GXT --- gamefiles/TEXT/american.gxt | Bin 220570 -> 220642 bytes gamefiles/TEXT/french.gxt | Bin 246544 -> 246616 bytes gamefiles/TEXT/german.gxt | Bin 242608 -> 242680 bytes gamefiles/TEXT/italian.gxt | Bin 241978 -> 242050 bytes gamefiles/TEXT/polish.gxt | Bin 241610 -> 241682 bytes gamefiles/TEXT/russian.gxt | Bin 222396 -> 222468 bytes gamefiles/TEXT/spanish.gxt | Bin 235542 -> 235614 bytes utils/gxt/american.txt | 6 ++++++ utils/gxt/french.txt | 6 ++++++ utils/gxt/german.txt | 6 ++++++ utils/gxt/italian.txt | 6 ++++++ utils/gxt/polish.txt | 6 ++++++ utils/gxt/russian.txt | 6 ++++++ utils/gxt/spanish.txt | 6 ++++++ 14 files changed, 42 insertions(+) diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index ebd1ac397cb3e27d04811ef373f5f384130c9f62..d4034411526937d7ade63a589ceccc11fc74787b 100644 GIT binary patch delta 114 zcmbQWoA=RfUe*wA*T{;EtoFv-PWPD@++2O*ogITVI~&hrBch|xqF}j0j@5a|C==WGVW<^ xY-(?8VgzEQ?Tt;${SF2J46Y0=3<^N(%HYQk%;3oo!Vt;8z~Ic_$Pk1@8~|bj9(Di# delta 45 zcmcc7#y_ErpEbnWHL_$QYqIg?65|<+nMP1XEwFZY+?jrrtLGEnEM?7hGY?I diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index 1d6ec98874c68b8b7adceaf0d27e6a0de72e249f..c3309d6150155b6d5a372d1527baa50b7af655c9 100644 GIT binary patch delta 118 zcmdn+obShTKGqO#*T@YUSh_C4}A8UxWYvhBCte=g!s|=YL++2O*ogITVe>a}V$ejcg2yk`T+;8gY#W<SIX4?L?o;lSJ0KXa& Aod5s; diff --git a/gamefiles/TEXT/polish.gxt b/gamefiles/TEXT/polish.gxt index 5519c290eefd3a20a7422990f0e062400b2eb076..d771427b1df8f496ec6b70067b94aab2c2701026 100755 GIT binary patch delta 118 zcmX?gpKsCwKGqO#*T{;EtoFv-MTX1_Zmz!Z&W=HwosDNQaz{Z00$g1--!_@($=KDL xTi2dj#|Xqs+jHxfV+{=g7+e`#7!-immBEi8n8A}FgdviFfx(%-R-K>&j*gA0QK5W6z?F$6PsGK4ThGB7YWGdMB?VG#!a@Dd$( delta 48 zcmV-00MGw~$_>294Fyz7MOk361wS*hP&1eTv-C8ONdrvg0+XM9VUwVK7=nL>e*w0C G0@UTz_!L6` diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index be659528f99d07bdf150634f34babc1233015935..8980eb4d081ff875802534336af464dcb40d0c85 100644 GIT binary patch delta 118 zcmbQXf$!c1KGqO#*T@eWS*wk?-6WYA++2O*ogITV*Bj4d@ZAq Date: Mon, 12 Jul 2021 00:11:11 +0300 Subject: [PATCH 219/314] Add ped and car density slider to menu, remove dumb collision "optimization" --- src/control/CarCtrl.cpp | 2 +- src/core/Frontend.cpp | 98 +++++++++++++++++++++++----------- src/core/Frontend.h | 29 +++++++++- src/core/Game.cpp | 6 ++- src/core/IniFile.cpp | 4 +- src/core/IniFile.h | 3 ++ src/core/MenuScreensCustom.cpp | 27 ++++++++++ src/core/config.h | 2 + src/core/re3.cpp | 26 ++++++--- src/extras/frontendoption.h | 2 + src/peds/Population.cpp | 8 +-- 11 files changed, 157 insertions(+), 50 deletions(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index 0516e214..35580053 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -77,7 +77,7 @@ int32 CCarCtrl::NumRandomCars; int32 CCarCtrl::NumParkedCars; int32 CCarCtrl::NumPermanentCars; int8 CCarCtrl::CountDownToCarsAtStart; -int32 CCarCtrl::MaxNumberOfCarsInUse = 12; +int32 CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS; uint32 CCarCtrl::LastTimeLawEnforcerCreated; uint32 CCarCtrl::LastTimeFireTruckCreated; uint32 CCarCtrl::LastTimeAmbulanceCreated; diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 7ff80697..ecb893b4 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -336,6 +336,7 @@ const char* MenuFilenames[][2] = { CFont::SetScale(MENU_X(SMALLESTTEXT_X_SCALE), MENU_Y(SMALLESTTEXT_Y_SCALE)); \ CFont::SetFontStyle(FONT_LOCALE(FONT_BANK)); +// value must be between 0.0-1.0 #define ProcessSlider(value, increaseAction, decreaseAction, hoverStartX, hoverEndX) \ do { \ lastActiveBarX = DisplaySlider(MENU_X_RIGHT_ALIGNED(MENUSLIDER_X + columnWidth), MENU_Y(bitAboveNextItemY), MENU_Y(smallestSliderBar), MENU_Y(usableLineHeight), MENU_X(MENUSLIDER_UNK), value); \ @@ -489,7 +490,7 @@ CMenuManager::ThingsToDoBeforeGoingBack() option.m_CFODynamic->buttonPressFunc(FEOPTION_ACTION_FOCUSLOSS); if (option.m_Action == MENUACTION_CFO_SELECT && option.m_CFOSelect->onlyApplyOnEnter && option.m_CFOSelect->lastSavedValue != option.m_CFOSelect->displayedValue) - option.m_CFOSelect->displayedValue = *option.m_CFO->value = option.m_CFOSelect->lastSavedValue; + option.m_CFOSelect->displayedValue = *(int8*)option.m_CFO->value = option.m_CFOSelect->lastSavedValue; if (aScreens[m_nCurrScreen].returnPrevPageFunc) { aScreens[m_nCurrScreen].returnPrevPageFunc(); @@ -898,29 +899,29 @@ CMenuManager::CheckSliderMovement(int value) { switch (aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action) { case MENUACTION_BRIGHTNESS: - m_PrefsBrightness += value * (512/16); + m_PrefsBrightness += value * (512/MENUSLIDER_LOGICAL_BARS); m_PrefsBrightness = Clamp(m_PrefsBrightness, 0, 511); break; case MENUACTION_DRAWDIST: if(value > 0) - m_PrefsLOD += ((1.8f - 0.8f) / 16.0f); + m_PrefsLOD += ((1.8f - 0.8f) / MENUSLIDER_LOGICAL_BARS); else - m_PrefsLOD -= ((1.8f - 0.8f) / 16.0f); + m_PrefsLOD -= ((1.8f - 0.8f) / MENUSLIDER_LOGICAL_BARS); m_PrefsLOD = Clamp(m_PrefsLOD, 0.8f, 1.8f); CRenderer::ms_lodDistScale = m_PrefsLOD; break; case MENUACTION_MUSICVOLUME: - m_PrefsMusicVolume += value * (128/16); + m_PrefsMusicVolume += value * (128/MENUSLIDER_LOGICAL_BARS); m_PrefsMusicVolume = Clamp(m_PrefsMusicVolume, 0, 127); DMAudio.SetMusicMasterVolume(m_PrefsMusicVolume); break; case MENUACTION_SFXVOLUME: - m_PrefsSfxVolume += value * (128/16); + m_PrefsSfxVolume += value * (128/MENUSLIDER_LOGICAL_BARS); m_PrefsSfxVolume = Clamp(m_PrefsSfxVolume, 0, 127); DMAudio.SetEffectsMasterVolume(m_PrefsSfxVolume); break; case MENUACTION_MOUSESENS: - TheCamera.m_fMouseAccelHorzntl += value * 1.0f/200.0f/15.0f; // ??? + TheCamera.m_fMouseAccelHorzntl += value * 1.0f/200.0f/15.0f; // probably because diving it to 15 instead of 16(MENUSLIDER_LOGICAL_BARS) had more accurate steps TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f/3200.0f, 1.0f/200.0f); #ifdef FIX_BUGS TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f; @@ -928,6 +929,20 @@ CMenuManager::CheckSliderMovement(int value) TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl; #endif break; +#ifdef CUSTOM_FRONTEND_OPTIONS + case MENUACTION_CFO_SLIDER: + { + CMenuScreenCustom::CMenuEntry &option = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption]; + float oldValue = *(float*)option.m_CFOSlider->value; + *(float*)option.m_CFOSlider->value += value * ((option.m_CFOSlider->max - option.m_CFOSlider->min) / MENUSLIDER_LOGICAL_BARS); + *(float*)option.m_CFOSlider->value = Clamp(*(float*)option.m_CFOSlider->value, option.m_CFOSlider->min, option.m_CFOSlider->max); + + if (*(float*)option.m_CFOSlider->value != oldValue && option.m_CFOSlider->changeFunc) + option.m_CFOSlider->changeFunc(oldValue, *(float*)option.m_CFOSlider->value); + + break; + } +#endif default: return; } @@ -1001,10 +1016,10 @@ CMenuManager::DisplaySlider(float x, float y, float mostLeftBarSize, float mostR int lastActiveBarX = 0; float curBarX = 0.0f; float spacing = SCREEN_SCALE_X(10.0f); - for (int i = 0; i < 16; i++) { - curBarX = i * rectSize/16.0f + x; + for (int i = 0; i < MENUSLIDER_BARS; i++) { + curBarX = i * rectSize/MENUSLIDER_BARS + x; - if (i / 16.0f + 1 / 32.0f < progress) { + if (i / (float)MENUSLIDER_BARS + 1 / (MENUSLIDER_BARS * 2.f) < progress) { color = CRGBA(SLIDERON_COLOR.r, SLIDERON_COLOR.g, SLIDERON_COLOR.b, FadeIn(255)); lastActiveBarX = curBarX; } else @@ -1012,7 +1027,7 @@ CMenuManager::DisplaySlider(float x, float y, float mostLeftBarSize, float mostR maxBarHeight = Max(mostLeftBarSize, mostRightBarSize); - float curBarFreeSpace = ((16 - i) * mostLeftBarSize + i * mostRightBarSize) / 16.0f; + float curBarFreeSpace = ((MENUSLIDER_BARS - i) * mostLeftBarSize + i * mostRightBarSize) / (float)MENUSLIDER_BARS; float left = curBarX; float top = y + maxBarHeight - curBarFreeSpace; float right = spacing + curBarX; @@ -1595,10 +1610,10 @@ CMenuManager::Draw() // If that was previously selected option, restore it to default value. // if (m_nCurrOption != lastSelectedOpt && lastSelectedOpt == i) - option.m_CFOSelect->displayedValue = option.m_CFOSelect->lastSavedValue = *option.m_CFO->value; + option.m_CFOSelect->displayedValue = option.m_CFOSelect->lastSavedValue = *(int8*)option.m_CFO->value; } else { - if (option.m_CFOSelect->displayedValue != *option.m_CFO->value) + if (option.m_CFOSelect->displayedValue != *(int8*)option.m_CFO->value) SetHelperText(1); // Enter to apply else if (m_nHelperTextMsgId == 1) ResetHelperText(); // Applied @@ -1606,8 +1621,8 @@ CMenuManager::Draw() } // To whom manipulate option.m_CFO->value of select options externally (like RestoreDef functions) - if (*option.m_CFO->value != option.m_CFOSelect->lastSavedValue) - option.m_CFOSelect->displayedValue = option.m_CFOSelect->lastSavedValue = *option.m_CFO->value; + if (*(int8*)option.m_CFO->value != option.m_CFOSelect->lastSavedValue) + option.m_CFOSelect->displayedValue = option.m_CFOSelect->lastSavedValue = *(int8*)option.m_CFO->value; if (option.m_CFOSelect->displayedValue >= option.m_CFOSelect->numRightTexts || option.m_CFOSelect->displayedValue < 0) option.m_CFOSelect->displayedValue = 0; @@ -1799,6 +1814,12 @@ CMenuManager::Draw() case MENUACTION_MOUSESENS: ProcessSlider(TheCamera.m_fMouseAccelHorzntl * 200.0f, HOVEROPTION_INCREASE_MOUSESENS, HOVEROPTION_DECREASE_MOUSESENS, MENU_X_LEFT_ALIGNED(200.0f), SCREEN_WIDTH); break; +#ifdef CUSTOM_FRONTEND_OPTIONS + case MENUACTION_CFO_SLIDER: + CMenuScreenCustom::CMenuEntry &option = aScreens[m_nCurrScreen].m_aEntries[i]; + ProcessSlider((*(float*)option.m_CFOSlider->value - option.m_CFOSlider->min) / (option.m_CFOSlider->max - option.m_CFOSlider->min), HOVEROPTION_INCREASE_CFO_SLIDER, HOVEROPTION_DECREASE_CFO_SLIDER, MENU_X_LEFT_ALIGNED(170.0f), SCREEN_WIDTH); + break; +#endif } // Needed after the bug fix in Font.cpp @@ -4477,7 +4498,7 @@ CMenuManager::ProcessButtonPresses(void) #ifndef TIDY_UP_PBP switch (m_nHoverOption) { case HOVEROPTION_INCREASE_BRIGHTNESS: - m_PrefsBrightness = m_PrefsBrightness + 32; + m_PrefsBrightness = m_PrefsBrightness + (512 / MENUSLIDER_LOGICAL_BARS); if (m_PrefsBrightness < 0) { m_PrefsBrightness = 0; } @@ -4487,7 +4508,7 @@ CMenuManager::ProcessButtonPresses(void) SaveSettings(); break; case HOVEROPTION_DECREASE_BRIGHTNESS: - m_PrefsBrightness = m_PrefsBrightness - 32; + m_PrefsBrightness = m_PrefsBrightness - (512 / MENUSLIDER_LOGICAL_BARS); if (m_PrefsBrightness < 0) { m_PrefsBrightness = 0; } @@ -4497,25 +4518,25 @@ CMenuManager::ProcessButtonPresses(void) SaveSettings(); break; case HOVEROPTION_INCREASE_DRAWDIST: - m_PrefsLOD = m_PrefsLOD + (1.0f / 16); + m_PrefsLOD = m_PrefsLOD + (1.0f / MENUSLIDER_LOGICAL_BARS); m_PrefsLOD = min(1.8f, m_PrefsLOD); CRenderer::ms_lodDistScale = m_PrefsLOD; SaveSettings(); break; case HOVEROPTION_DECREASE_DRAWDIST: - m_PrefsLOD = m_PrefsLOD - (1.0f / 16); + m_PrefsLOD = m_PrefsLOD - (1.0f / MENUSLIDER_LOGICAL_BARS); m_PrefsLOD = max(0.8f, m_PrefsLOD); CRenderer::ms_lodDistScale = m_PrefsLOD; SaveSettings(); break; case HOVEROPTION_INCREASE_MUSICVOLUME: - m_PrefsMusicVolume = m_PrefsMusicVolume + 8; + m_PrefsMusicVolume = m_PrefsMusicVolume + (128 / MENUSLIDER_LOGICAL_BARS); m_PrefsMusicVolume = Clamp(m_PrefsMusicVolume, 0, 127); DMAudio.SetMusicMasterVolume(uchar)(m_PrefsMusicVolume); SaveSettings(); break; case HOVEROPTION_DECREASE_MUSICVOLUME: - m_PrefsMusicVolume = m_PrefsMusicVolume - 8; + m_PrefsMusicVolume = m_PrefsMusicVolume - (128 / MENUSLIDER_LOGICAL_BARS); if (m_PrefsMusicVolume < 0) { m_PrefsMusicVolume = 0; } @@ -4526,7 +4547,7 @@ CMenuManager::ProcessButtonPresses(void) SaveSettings(); break; case HOVEROPTION_INCREASE_SFXVOLUME: - m_PrefsSFXVolume = m_PrefsSFXVolume + 8; + m_PrefsSFXVolume = m_PrefsSFXVolume + (128 / MENUSLIDER_LOGICAL_BARS); if (m_PrefsSFXVolume < 0) { m_PrefsSFXVolume = 0; } @@ -4537,7 +4558,7 @@ CMenuManager::ProcessButtonPresses(void) SaveSettings(); break; case HOVEROPTION_DECREASE_SFXVOLUME: - m_PrefsSFXVolume = m_PrefsSFXVolume - 8; + m_PrefsSFXVolume = m_PrefsSFXVolume - (128 / MENUSLIDER_LOGICAL_BARS); if (m_PrefsSFXVolume < 0) { m_PrefsSFXVolume = 0; } @@ -4548,7 +4569,7 @@ CMenuManager::ProcessButtonPresses(void) SaveSettings(); break; case HOVEROPTION_INCREASE_MOUSESENS: - TheCamera.m_fMouseAccelHorzntl += (1.0f / 3000); + TheCamera.m_fMouseAccelHorzntl += 1.0f/200.0f/15.0f; // probably because diving it to 15 instead of 16(MENUSLIDER_LOGICAL_BARS) had more accurate steps TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f / 3200, 1.0f / 200); #ifdef FIX_BUGS TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f; @@ -4558,7 +4579,7 @@ CMenuManager::ProcessButtonPresses(void) SaveSettings(); break; case HOVEROPTION_DECREASE_MOUSESENS: - TheCamera.m_fMouseAccelHorzntl -= (1.0f / 3000); + TheCamera.m_fMouseAccelHorzntl -= 1.0f/200.0f/15.0f; // probably because diving it to 15 instead of 16(MENUSLIDER_LOGICAL_BARS) had more accurate steps TheCamera.m_fMouseAccelHorzntl = Clamp(TheCamera.m_fMouseAccelHorzntl, 1.0f / 3200, 1.0f / 200); #ifdef FIX_BUGS TheCamera.m_fMouseAccelVertical = TheCamera.m_fMouseAccelHorzntl + 0.0005f; @@ -4575,6 +4596,9 @@ CMenuManager::ProcessButtonPresses(void) case HOVEROPTION_INCREASE_MUSICVOLUME: case HOVEROPTION_INCREASE_SFXVOLUME: case HOVEROPTION_INCREASE_MOUSESENS: +#ifdef CUSTOM_FRONTEND_OPTIONS + case HOVEROPTION_INCREASE_CFO_SLIDER: +#endif CheckSliderMovement(1); break; case HOVEROPTION_DECREASE_BRIGHTNESS: @@ -4582,6 +4606,9 @@ CMenuManager::ProcessButtonPresses(void) case HOVEROPTION_DECREASE_MUSICVOLUME: case HOVEROPTION_DECREASE_SFXVOLUME: case HOVEROPTION_DECREASE_MOUSESENS: +#ifdef CUSTOM_FRONTEND_OPTIONS + case HOVEROPTION_DECREASE_CFO_SLIDER: +#endif CheckSliderMovement(-1); break; } @@ -4612,7 +4639,11 @@ CMenuManager::ProcessButtonPresses(void) || CPad::GetPad(0)->GetAnaloguePadLeftJustUp() || CPad::GetPad(0)->GetAnaloguePadRightJustUp() || CPad::GetPad(0)->GetMouseWheelUpJustDown() || CPad::GetPad(0)->GetMouseWheelDownJustDown()) { int option = aScreens[m_nCurrScreen].m_aEntries[m_nCurrOption].m_Action; - if (option == MENUACTION_BRIGHTNESS || option == MENUACTION_DRAWDIST) + if (option == MENUACTION_BRIGHTNESS || option == MENUACTION_DRAWDIST +#ifdef CUSTOM_FRONTEND_OPTIONS + || option == MENUACTION_CFO_SLIDER +#endif + ) DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); else if (option == MENUACTION_SFXVOLUME) DMAudio.PlayFrontEndSound(SOUND_FRONTEND_AUDIO_TEST, 0); @@ -4775,7 +4806,12 @@ CMenuManager::ProcessButtonPresses(void) } else if (option != MENUACTION_CHANGEMENU && option != MENUACTION_BRIGHTNESS && option != MENUACTION_DRAWDIST && option != MENUACTION_MUSICVOLUME && option != MENUACTION_SFXVOLUME && option != MENUACTION_CHECKSAVE && option != MENUACTION_UNK24 - && option != MENUACTION_MOUSESENS && option != MENUACTION_SCREENRES) { + && option != MENUACTION_MOUSESENS && option != MENUACTION_SCREENRES +#ifdef CUSTOM_FRONTEND_OPTIONS + && option != MENUACTION_CFO_SLIDER +#endif + ) + { DMAudio.PlayFrontEndSound(SOUND_FRONTEND_MENU_SETTING_CHANGE, 0); } @@ -5166,9 +5202,9 @@ CMenuManager::ProcessButtonPresses(void) if (option.m_CFOSelect->displayedValue >= option.m_CFOSelect->numRightTexts || option.m_CFOSelect->displayedValue < 0) option.m_CFOSelect->displayedValue = 0; } - int8 oldValue = *option.m_CFO->value; + int8 oldValue = *(int8*)option.m_CFO->value; - *option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue; + *(int8*)option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue; // Now everything is saved in .ini, and LOAD_INI_SETTINGS is fundamental for CFO // if (option.m_CFOSelect->save) @@ -5412,9 +5448,9 @@ CMenuManager::ProcessButtonPresses(void) option.m_CFOSelect->displayedValue = option.m_CFOSelect->numRightTexts - 1; } if (!option.m_CFOSelect->onlyApplyOnEnter) { - int8 oldValue = *option.m_CFO->value; + int8 oldValue = *(int8*)option.m_CFO->value; - *option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue; + *(int8*)option.m_CFO->value = option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue; // Now everything is saved in .ini, and LOAD_INI_SETTINGS is fundamental for CFO // if (option.m_CFOSelect->save) diff --git a/src/core/Frontend.h b/src/core/Frontend.h index 5c3523ab..32e5ef9d 100644 --- a/src/core/Frontend.h +++ b/src/core/Frontend.h @@ -25,6 +25,9 @@ #define MENUSLIDER_X 256.0f #define MENUSLIDER_UNK 256.0f +#define MENUSLIDER_BARS 16 +#define MENUSLIDER_LOGICAL_BARS MENUSLIDER_BARS + #define BIGTEXT_X_SCALE 0.75f // For FONT_HEADING #define BIGTEXT_Y_SCALE 0.9f #define MEDIUMTEXT_X_SCALE 0.55f // For FONT_HEADING @@ -256,6 +259,7 @@ enum eMenuScreen enum eMenuAction { #ifdef CUSTOM_FRONTEND_OPTIONS + MENUACTION_CFO_SLIDER = -3, MENUACTION_CFO_SELECT = -2, MENUACTION_CFO_DYNAMIC = -1, #endif @@ -424,6 +428,10 @@ enum eCheckHover HOVEROPTION_DECREASE_SFXVOLUME, HOVEROPTION_INCREASE_MOUSESENS, HOVEROPTION_DECREASE_MOUSESENS, +#ifdef CUSTOM_FRONTEND_OPTIONS + HOVEROPTION_INCREASE_CFO_SLIDER, + HOVEROPTION_DECREASE_CFO_SLIDER, +#endif HOVEROPTION_NOT_HOVERING, }; @@ -493,7 +501,7 @@ struct CCustomScreenLayout { struct CCFO { - int8 *value; + void *value; const char *saveCat; const char *save; }; @@ -524,6 +532,24 @@ struct CCFOSelect : CCFO } }; +// Value is float in here +struct CCFOSlider : CCFO +{ + ChangeFuncFloat changeFunc; + float min; + float max; + + CCFOSlider() {}; + CCFOSlider(float* value, const char* saveCat, const char* save, float min, float max, ChangeFuncFloat changeFunc = nil){ + this->value = value; + this->saveCat = saveCat; + this->save = save; + this->changeFunc = changeFunc; + this->min = min; + this->max = max; + } +}; + struct CCFODynamic : CCFO { DrawFunc drawFunc; @@ -555,6 +581,7 @@ struct CMenuScreenCustom CCFO *m_CFO; // for initializing CCFOSelect *m_CFOSelect; CCFODynamic *m_CFODynamic; + CCFOSlider *m_CFOSlider; }; int32 m_SaveSlot; // eSaveSlot int32 m_TargetMenu; // eMenuScreen diff --git a/src/core/Game.cpp b/src/core/Game.cpp index f6156a4c..b3dd1eda 100644 --- a/src/core/Game.cpp +++ b/src/core/Game.cpp @@ -409,7 +409,11 @@ bool CGame::Initialise(const char* datFile) #endif #ifndef GTA_PS2 - CIniFile::LoadIniFile(); +#ifdef PED_CAR_DENSITY_SLIDERS + // Load density values from gta3.ini only if our re3.ini have them 1.f + if (CIniFile::PedNumberMultiplier == 1.f && CIniFile::CarNumberMultiplier == 1.f) +#endif + CIniFile::LoadIniFile(); #endif currLevel = LEVEL_INDUSTRIAL; diff --git a/src/core/IniFile.cpp b/src/core/IniFile.cpp index df01b440..524632fe 100644 --- a/src/core/IniFile.cpp +++ b/src/core/IniFile.cpp @@ -23,6 +23,6 @@ void CIniFile::LoadIniFile() CarNumberMultiplier = Min(3.0f, Max(0.5f, CarNumberMultiplier)); CFileMgr::CloseFile(f); } - CPopulation::MaxNumberOfPedsInUse = 25.0f * PedNumberMultiplier; - CCarCtrl::MaxNumberOfCarsInUse = 12.0f * CarNumberMultiplier; + CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS * PedNumberMultiplier; + CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS * CarNumberMultiplier; } \ No newline at end of file diff --git a/src/core/IniFile.h b/src/core/IniFile.h index 1e30c4de..30dc8c21 100644 --- a/src/core/IniFile.h +++ b/src/core/IniFile.h @@ -1,5 +1,8 @@ #pragma once +#define DEFAULT_MAX_NUMBER_OF_PEDS 25.0f +#define DEFAULT_MAX_NUMBER_OF_CARS 12.0f + class CIniFile { public: diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 6e23f76a..ba5a6e80 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -26,6 +26,9 @@ #include "ModelInfo.h" #include "Pad.h" #include "ControllerConfig.h" +#include "IniFile.h" +#include "CarCtrl.h" +#include "Population.h" // Menu screens array is at the bottom of the file. @@ -63,6 +66,15 @@ #define DUALPASS_SELECTOR #endif +#ifdef PED_CAR_DENSITY_SLIDERS + // 0.2f - 3.4f makes it possible to have 1.0f somewhere inbetween + #define DENSITY_SLIDERS \ + MENUACTION_CFO_SLIDER, "FEM_PED", { new CCFOSlider(&CIniFile::PedNumberMultiplier, "Display", "PedDensity", 0.2f, 3.4f, PedDensityChange) }, \ + MENUACTION_CFO_SLIDER, "FEM_CAR", { new CCFOSlider(&CIniFile::CarNumberMultiplier, "Display", "CarDensity", 0.2f, 3.4f, CarDensityChange) }, +#else + #define DENSITY_SLIDERS +#endif + #ifdef NO_ISLAND_LOADING #define ISLAND_LOADING_SELECTOR MENUACTION_CFO_SELECT, "FEM_ISL", { new CCFOSelect((int8*)&CMenuManager::m_PrefsIslandLoading, "Graphics", "IslandLoading", islandLoadingOpts, ARRAY_SIZE(islandLoadingOpts), true, IslandLoadingAfterChange) }, #else @@ -145,6 +157,9 @@ void RestoreDefDisplay(int8 action) { #ifdef FREE_CAM TheCamera.bFreeCam = false; #endif + #ifdef PED_CAR_DENSITY_SLIDERS + CIniFile::LoadIniFile(); + #endif #ifdef GRAPHICS_MENU_OPTIONS // otherwise Frontend will handle those CMenuManager::m_PrefsBrightness = 256; CMenuManager::m_PrefsLOD = 1.2f; @@ -195,6 +210,16 @@ void IslandLoadingAfterChange(int8 before, int8 after) { } #endif +#ifdef PED_CAR_DENSITY_SLIDERS +void PedDensityChange(float before, float after) { + CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS * after; +} + +void CarDensityChange(float before, float after) { + CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS * after; +} +#endif + #ifndef MULTISAMPLING void GraphicsGoBack() { } @@ -437,6 +462,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { DUALPASS_SELECTOR CUTSCENE_BORDERS_TOGGLE FREE_CAM_TOGGLE + DENSITY_SLIDERS POSTFX_SELECTORS // re3.cpp inserts here pipeline selectors if neo/neo.txd exists and EXTENDED_PIPELINES defined MENUACTION_RESTOREDEF, "FET_DEF", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, @@ -449,6 +475,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { MENUACTION_DRAWDIST, "FEM_LOD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, CUTSCENE_BORDERS_TOGGLE FREE_CAM_TOGGLE + DENSITY_SLIDERS MENUACTION_SUBTITLES, "FED_SUB", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, MENUACTION_CFO_DYNAMIC, "FET_DEF", { new CCFODynamic(nil, nil, nil, nil, RestoreDefDisplay) }, MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, diff --git a/src/core/config.h b/src/core/config.h index 298b2a1a..d7d43b62 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -340,6 +340,7 @@ enum Config { # define CUTSCENE_BORDERS_SWITCH # define MULTISAMPLING // adds MSAA option # define INVERT_LOOK_FOR_PAD // add bInvertLook4Pad from VC +# define PED_CAR_DENSITY_SLIDERS # endif #endif @@ -510,6 +511,7 @@ enum Config { #undef CUTSCENE_BORDERS_SWITCH #undef MULTISAMPLING #undef INVERT_LOOK_FOR_PAD +#undef PED_CAR_DENSITY_SLIDERS #undef USE_DEBUG_SCRIPT_LOADER #undef USE_MEASUREMENTS_IN_METERS diff --git a/src/core/re3.cpp b/src/core/re3.cpp index fe0347d9..ef045eed 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -41,6 +41,9 @@ #include "Camera.h" #include "MBlur.h" #include "ControllerConfig.h" +#include "CarCtrl.h" +#include "Population.h" +#include "IniFile.h" #ifdef DETECT_JOYSTICK_MENU #include "crossplatform.h" @@ -533,22 +536,29 @@ bool LoadINISettings() // CFO check if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) { - // CFO only supports saving uint8 right now - // Migrate from old .ini to new .ini - if (migrate && ReadIniIfExists("FrontendOptions", option.m_CFO->save, option.m_CFO->value)) + // Old values can only be int8, new ones can contain float if it is slider + if (migrate && ReadIniIfExists("FrontendOptions", option.m_CFO->save, (int8*)option.m_CFO->value)) cfg.remove("FrontendOptions", option.m_CFO->save); + else if (option.m_Action == MENUACTION_CFO_SLIDER) + ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, (float*)option.m_CFO->value); else - ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, option.m_CFO->value); + ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, (int8*)option.m_CFO->value); if (option.m_Action == MENUACTION_CFO_SELECT) { - option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue = *option.m_CFO->value; + option.m_CFOSelect->lastSavedValue = option.m_CFOSelect->displayedValue = *(int8*)option.m_CFO->value; } } } } #endif + // Fetched in above block, but needs evaluation +#ifdef PED_CAR_DENSITY_SLIDERS + CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS * CIniFile::PedNumberMultiplier; + CCarCtrl::MaxNumberOfCarsInUse = DEFAULT_MAX_NUMBER_OF_CARS * CIniFile::CarNumberMultiplier; +#endif + return true; } @@ -623,8 +633,10 @@ void SaveINISettings() break; if (option.m_Action < MENUACTION_NOTHING && option.m_CFO->save) { - // Beware: CFO only supports saving uint8 right now - StoreIni(option.m_CFO->saveCat, option.m_CFO->save, *option.m_CFO->value); + if (option.m_Action == MENUACTION_CFO_SLIDER) + StoreIni(option.m_CFO->saveCat, option.m_CFO->save, *(float*)option.m_CFO->value); + else + StoreIni(option.m_CFO->saveCat, option.m_CFO->save, *(int8*)option.m_CFO->value); } } } diff --git a/src/extras/frontendoption.h b/src/extras/frontendoption.h index 8b64335a..a571170f 100644 --- a/src/extras/frontendoption.h +++ b/src/extras/frontendoption.h @@ -40,6 +40,8 @@ typedef void (*ReturnPrevPageFunc)(); typedef void (*ChangeFunc)(int8 before, int8 after); // called after updating the value. // only called on enter if onlyApplyOnEnter set, otherwise called on every value change +typedef void (*ChangeFuncFloat)(float before, float after); // called after updating the value. + // for dynamic options typedef wchar* (*DrawFunc)(bool* disabled, bool userHovering); // you must return a pointer for right text. // you can also set *disabled if you want to gray it out. diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index ace6d37c..1d2a5798 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -55,7 +55,7 @@ bool CPopulation::ms_bGivePedsWeapons; int32 CPopulation::m_AllRandomPedsThisType = -1; float CPopulation::PedDensityMultiplier = 1.0f; uint32 CPopulation::ms_nTotalMissionPeds; -int32 CPopulation::MaxNumberOfPedsInUse = 25; +int32 CPopulation::MaxNumberOfPedsInUse = DEFAULT_MAX_NUMBER_OF_PEDS; uint32 CPopulation::ms_nNumCivMale; uint32 CPopulation::ms_nNumCivFemale; uint32 CPopulation::ms_nNumCop; @@ -1122,12 +1122,6 @@ CPopulation::ManagePopulation(void) } float dist = (ped->GetPosition() - playerPos).Magnitude2D(); -#ifdef SQUEEZE_PERFORMANCE - if (dist > 50.f) - ped->bUsesCollision = false; - else - ped->bUsesCollision = true; -#endif bool pedIsFarAway = false; if (PedCreationDistMultiplier() * (PED_REMOVE_DIST_SPECIAL * TheCamera.GenerationDistMultiplier) < dist From 291213ed40e5a36fd69c944705db450aef39d70f Mon Sep 17 00:00:00 2001 From: erorcun Date: Mon, 12 Jul 2021 00:50:45 +0300 Subject: [PATCH 220/314] Unite all sliders --- src/core/MenuScreensCustom.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index ba5a6e80..033ed9b9 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -448,6 +448,7 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_DIS", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, MENUACTION_BRIGHTNESS, "FED_BRI", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, MENUACTION_DRAWDIST, "FEM_LOD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, + DENSITY_SLIDERS MENUACTION_FRAMESYNC, "FEM_VSC", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, MENUACTION_FRAMELIMIT, "FEM_FRM", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, #ifndef EXTENDED_COLOURFILTER @@ -462,7 +463,6 @@ CMenuScreenCustom aScreens[MENUPAGES] = { DUALPASS_SELECTOR CUTSCENE_BORDERS_TOGGLE FREE_CAM_TOGGLE - DENSITY_SLIDERS POSTFX_SELECTORS // re3.cpp inserts here pipeline selectors if neo/neo.txd exists and EXTENDED_PIPELINES defined MENUACTION_RESTOREDEF, "FET_DEF", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, @@ -473,9 +473,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_DIS", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, MENUACTION_BRIGHTNESS, "FED_BRI", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, MENUACTION_DRAWDIST, "FEM_LOD", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, + DENSITY_SLIDERS CUTSCENE_BORDERS_TOGGLE FREE_CAM_TOGGLE - DENSITY_SLIDERS MENUACTION_SUBTITLES, "FED_SUB", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, MENUACTION_CFO_DYNAMIC, "FET_DEF", { new CCFODynamic(nil, nil, nil, nil, RestoreDefDisplay) }, MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, From c0cbf8045f14d95a02c065910ede0d4a38ab99c7 Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 10 Jul 2021 19:41:12 +0200 Subject: [PATCH 221/314] switch out current ini_parser.hpp with pulzed/mINI --- src/core/re3.cpp | 109 +++--- src/extras/ini.h | 761 ++++++++++++++++++++++++++++++++++++++ src/extras/ini_parser.hpp | 333 ----------------- 3 files changed, 821 insertions(+), 382 deletions(-) create mode 100644 src/extras/ini.h delete mode 100644 src/extras/ini_parser.hpp diff --git a/src/core/re3.cpp b/src/core/re3.cpp index ef045eed..b7d89363 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -182,16 +182,29 @@ CustomFrontendOptionsPopulate(void) #endif #ifdef LOAD_INI_SETTINGS -#include "ini_parser.hpp" +#define MINI_CASE_SENSITIVE +#include "ini.h" + +mINI::INIFile ini("re3.ini"); +mINI::INIStructure cfg; -linb::ini cfg; bool ReadIniIfExists(const char *cat, const char *key, uint32 *out) { - std::string strval = cfg.get(cat, key, "\xBA"); - const char *value = strval.c_str(); - char *endPtr; - if (value && value[0] != '\xBA') { - *out = strtoul(value, &endPtr, 0); + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + char *endPtr; + *out = strtoul(section.get(key).c_str(), &endPtr, 0); + return true; + } + return false; +} + +bool ReadIniIfExists(const char *cat, const char *key, uint8 *out) +{ + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + char *endPtr; + *out = strtoul(section.get(key).c_str(), &endPtr, 0); return true; } return false; @@ -199,11 +212,10 @@ bool ReadIniIfExists(const char *cat, const char *key, uint32 *out) bool ReadIniIfExists(const char *cat, const char *key, bool *out) { - std::string strval = cfg.get(cat, key, "\xBA"); - const char *value = strval.c_str(); - char *endPtr; - if (value && value[0] != '\xBA') { - *out = strtoul(value, &endPtr, 0); + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + char *endPtr; + *out = strtoul(section.get(key).c_str(), &endPtr, 0); return true; } return false; @@ -211,11 +223,10 @@ bool ReadIniIfExists(const char *cat, const char *key, bool *out) bool ReadIniIfExists(const char *cat, const char *key, int32 *out) { - std::string strval = cfg.get(cat, key, "\xBA"); - const char *value = strval.c_str(); - char *endPtr; - if (value && value[0] != '\xBA') { - *out = strtol(value, &endPtr, 0); + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + char *endPtr; + *out = strtol(section.get(key).c_str(), &endPtr, 0); return true; } return false; @@ -223,11 +234,10 @@ bool ReadIniIfExists(const char *cat, const char *key, int32 *out) bool ReadIniIfExists(const char *cat, const char *key, int8 *out) { - std::string strval = cfg.get(cat, key, "\xBA"); - const char *value = strval.c_str(); - char *endPtr; - if (value && value[0] != '\xBA') { - *out = strtol(value, &endPtr, 0); + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + char *endPtr; + *out = strtol(section.get(key).c_str(), &endPtr, 0); return true; } return false; @@ -235,10 +245,10 @@ bool ReadIniIfExists(const char *cat, const char *key, int8 *out) bool ReadIniIfExists(const char *cat, const char *key, float *out) { - std::string strval = cfg.get(cat, key, "\xBA"); - const char *value = strval.c_str(); - if (value && value[0] != '\xBA') { - *out = atof(value); + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + char *endPtr; + *out = strtof(section.get(key).c_str(), &endPtr); return true; } return false; @@ -246,10 +256,10 @@ bool ReadIniIfExists(const char *cat, const char *key, float *out) bool ReadIniIfExists(const char *cat, const char *key, char *out, int size) { - std::string strval = cfg.get(cat, key, "\xBA"); - const char *value = strval.c_str(); - if (value && value[0] != '\xBA') { - strncpy(out, value, size); + mINI::INIMap section = cfg.get(cat); + if (section.has(key)) { + strncpy(out, section.get(key).c_str(), size - 1); + out[size - 1] = '\0'; return true; } return false; @@ -257,42 +267,42 @@ bool ReadIniIfExists(const char *cat, const char *key, char *out, int size) void StoreIni(const char *cat, const char *key, uint32 val) { - char temp[10]; + char temp[11]; sprintf(temp, "%u", val); - cfg.set(cat, key, temp); + cfg[cat][key] = temp; } void StoreIni(const char *cat, const char *key, uint8 val) { - char temp[10]; - sprintf(temp, "%u", (uint32)val); - cfg.set(cat, key, temp); + char temp[11]; + sprintf(temp, "%u", val); + cfg[cat][key] = temp; } void StoreIni(const char *cat, const char *key, int32 val) { - char temp[10]; + char temp[11]; sprintf(temp, "%d", val); - cfg.set(cat, key, temp); + cfg[cat][key] = temp; } void StoreIni(const char *cat, const char *key, int8 val) { - char temp[10]; - sprintf(temp, "%d", (int32)val); - cfg.set(cat, key, temp); + char temp[11]; + sprintf(temp, "%d", val); + cfg[cat][key] = temp; } void StoreIni(const char *cat, const char *key, float val) { - char temp[10]; + char temp[50]; sprintf(temp, "%f", val); - cfg.set(cat, key, temp); + cfg[cat][key] = temp; } void StoreIni(const char *cat, const char *key, char *val, int size) { - cfg.set(cat, key, val); + cfg[cat][key] = val; } const char *iniControllerActions[] = { "PED_FIREWEAPON", "PED_CYCLE_WEAPON_RIGHT", "PED_CYCLE_WEAPON_LEFT", "GO_FORWARD", "GO_BACK", "GO_LEFT", "GO_RIGHT", "PED_SNIPER_ZOOM_IN", @@ -354,7 +364,7 @@ void LoadINIControllerSettings() #endif // force to default GTA behaviour (never overwrite bindings on joy change/initialization) if user init'ed/set bindings before we introduced that if (!ReadIniIfExists("Controller", "PadButtonsInited", &ControlsManager.ms_padButtonsInited)) { - ControlsManager.ms_padButtonsInited = cfg.category_size("Bindings") != 0 ? 16 : 0; + ControlsManager.ms_padButtonsInited = cfg.get("Bindings").size() != 0 ? 16 : 0; } for (int32 i = 0; i < MAX_CONTROLLERACTIONS; i++) { @@ -456,12 +466,13 @@ void SaveINIControllerSettings() #endif #endif StoreIni("Controller", "PadButtonsInited", ControlsManager.ms_padButtonsInited); - cfg.write_file("re3.ini"); + + ini.write(cfg); } bool LoadINISettings() { - if (!cfg.load_file("re3.ini")) + if (!ini.read(cfg)) return false; #ifdef IMPROVED_VIDEOMODE @@ -527,7 +538,7 @@ bool LoadINISettings() #endif #ifdef CUSTOM_FRONTEND_OPTIONS - bool migrate = cfg.category_size("FrontendOptions") != 0; + bool migrate = cfg.get("FrontendOptions").size() != 0; for (int i = 0; i < MENUPAGES; i++) { for (int j = 0; j < NUM_MENUROWS; j++) { CMenuScreenCustom::CMenuEntry &option = aScreens[i].m_aEntries[j]; @@ -539,7 +550,7 @@ bool LoadINISettings() // Migrate from old .ini to new .ini // Old values can only be int8, new ones can contain float if it is slider if (migrate && ReadIniIfExists("FrontendOptions", option.m_CFO->save, (int8*)option.m_CFO->value)) - cfg.remove("FrontendOptions", option.m_CFO->save); + cfg["FrontendOptions"].remove(option.m_CFO->save); else if (option.m_Action == MENUACTION_CFO_SLIDER) ReadIniIfExists(option.m_CFO->saveCat, option.m_CFO->save, (float*)option.m_CFO->value); else @@ -642,7 +653,7 @@ void SaveINISettings() } #endif - cfg.write_file("re3.ini"); + ini.write(cfg); } #endif diff --git a/src/extras/ini.h b/src/extras/ini.h new file mode 100644 index 00000000..44dd3d57 --- /dev/null +++ b/src/extras/ini.h @@ -0,0 +1,761 @@ +/* + * The MIT License (MIT) + * Copyright (c) 2018 Danijel Durakovic + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +/////////////////////////////////////////////////////////////////////////////// +// +// /mINI/ v0.9.10 +// An INI file reader and writer for the modern age. +// +/////////////////////////////////////////////////////////////////////////////// +// +// A tiny utility library for manipulating INI files with a straightforward +// API and a minimal footprint. It conforms to the (somewhat) standard INI +// format - sections and keys are case insensitive and all leading and +// trailing whitespace is ignored. Comments are lines that begin with a +// semicolon. Trailing comments are allowed on section lines. +// +// Files are read on demand, upon which data is kept in memory and the file +// is closed. This utility supports lazy writing, which only writes changes +// and updates to a file and preserves custom formatting and comments. A lazy +// write invoked by a write() call will read the output file, find what +// changes have been made and update the file accordingly. If you only need to +// generate files, use generate() instead. Section and key order is preserved +// on read, write and insert. +// +/////////////////////////////////////////////////////////////////////////////// +// +// /* BASIC USAGE EXAMPLE: */ +// +// /* read from file */ +// mINI::INIFile file("myfile.ini"); +// mINI::INIStructure ini; +// file.read(ini); +// +// /* read value; gets a reference to actual value in the structure. +// if key or section don't exist, a new empty value will be created */ +// std::string& value = ini["section"]["key"]; +// +// /* read value safely; gets a copy of value in the structure. +// does not alter the structure */ +// std::string value = ini.get("section").get("key"); +// +// /* set or update values */ +// ini["section"]["key"] = "value"; +// +// /* set multiple values */ +// ini["section2"].set({ +// {"key1", "value1"}, +// {"key2", "value2"} +// }); +// +// /* write updates back to file, preserving comments and formatting */ +// file.write(ini); +// +// /* or generate a file (overwrites the original) */ +// file.generate(ini); +// +/////////////////////////////////////////////////////////////////////////////// +// +// Long live the INI file!!! +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef MINI_INI_H_ +#define MINI_INI_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mINI +{ + namespace INIStringUtil + { + const char* const whitespaceDelimiters = " \t\n\r\f\v"; + inline void trim(std::string& str) + { + str.erase(str.find_last_not_of(whitespaceDelimiters) + 1); + str.erase(0, str.find_first_not_of(whitespaceDelimiters)); + } +#ifndef MINI_CASE_SENSITIVE + inline void toLower(std::string& str) + { + std::transform(str.begin(), str.end(), str.begin(), [](const char c) { + return static_cast(std::tolower(c)); + }); + } +#endif + inline void replace(std::string& str, std::string const& a, std::string const& b) + { + if (!a.empty()) + { + std::size_t pos = 0; + while ((pos = str.find(a, pos)) != std::string::npos) + { + str.replace(pos, a.size(), b); + pos += b.size(); + } + } + } +#ifdef _WIN32 + const char* const endl = "\r\n"; +#else + const char* const endl = "\n"; +#endif + }; + + template + class INIMap + { + private: + using T_DataIndexMap = std::unordered_map; + using T_DataItem = std::pair; + using T_DataContainer = std::vector; + using T_MultiArgs = typename std::vector>; + + T_DataIndexMap dataIndexMap; + T_DataContainer data; + + inline std::size_t setEmpty(std::string& key) + { + std::size_t index = data.size(); + dataIndexMap[key] = index; + data.emplace_back(key, T()); + return index; + } + + public: + using const_iterator = typename T_DataContainer::const_iterator; + + INIMap() { } + + INIMap(INIMap const& other) + { + std::size_t data_size = other.data.size(); + for (std::size_t i = 0; i < data_size; ++i) + { + auto const& key = other.data[i].first; + auto const& obj = other.data[i].second; + data.emplace_back(key, obj); + } + dataIndexMap = T_DataIndexMap(other.dataIndexMap); + } + + T& operator[](std::string key) + { + INIStringUtil::trim(key); +#ifndef MINI_CASE_SENSITIVE + INIStringUtil::toLower(key); +#endif + auto it = dataIndexMap.find(key); + bool hasIt = (it != dataIndexMap.end()); + std::size_t index = (hasIt) ? it->second : setEmpty(key); + return data[index].second; + } + T get(std::string key) const + { + INIStringUtil::trim(key); +#ifndef MINI_CASE_SENSITIVE + INIStringUtil::toLower(key); +#endif + auto it = dataIndexMap.find(key); + if (it == dataIndexMap.end()) + { + return T(); + } + return T(data[it->second].second); + } + bool has(std::string key) const + { + INIStringUtil::trim(key); +#ifndef MINI_CASE_SENSITIVE + INIStringUtil::toLower(key); +#endif + return (dataIndexMap.count(key) == 1); + } + void set(std::string key, T obj) + { + INIStringUtil::trim(key); +#ifndef MINI_CASE_SENSITIVE + INIStringUtil::toLower(key); +#endif + auto it = dataIndexMap.find(key); + if (it != dataIndexMap.end()) + { + data[it->second].second = obj; + } + else + { + dataIndexMap[key] = data.size(); + data.emplace_back(key, obj); + } + } + void set(T_MultiArgs const& multiArgs) + { + for (auto const& it : multiArgs) + { + auto const& key = it.first; + auto const& obj = it.second; + set(key, obj); + } + } + bool remove(std::string key) + { + INIStringUtil::trim(key); +#ifndef MINI_CASE_SENSITIVE + INIStringUtil::toLower(key); +#endif + auto it = dataIndexMap.find(key); + if (it != dataIndexMap.end()) + { + std::size_t index = it->second; + data.erase(data.begin() + index); + dataIndexMap.erase(it); + for (auto& it2 : dataIndexMap) + { + auto& vi = it2.second; + if (vi > index) + { + vi--; + } + } + return true; + } + return false; + } + void clear() + { + data.clear(); + dataIndexMap.clear(); + } + std::size_t size() const + { + return data.size(); + } + const_iterator begin() const { return data.begin(); } + const_iterator end() const { return data.end(); } + }; + + using INIStructure = INIMap>; + + namespace INIParser + { + using T_ParseValues = std::pair; + + enum class PDataType : char + { + PDATA_NONE, + PDATA_COMMENT, + PDATA_SECTION, + PDATA_KEYVALUE, + PDATA_UNKNOWN + }; + + inline PDataType parseLine(std::string line, T_ParseValues& parseData) + { + parseData.first.clear(); + parseData.second.clear(); + INIStringUtil::trim(line); + if (line.empty()) + { + return PDataType::PDATA_NONE; + } + char firstCharacter = line[0]; + if (firstCharacter == ';') + { + return PDataType::PDATA_COMMENT; + } + if (firstCharacter == '[') + { + auto commentAt = line.find_first_of(';'); + if (commentAt != std::string::npos) + { + line = line.substr(0, commentAt); + } + auto closingBracketAt = line.find_last_of(']'); + if (closingBracketAt != std::string::npos) + { + auto section = line.substr(1, closingBracketAt - 1); + INIStringUtil::trim(section); + parseData.first = section; + return PDataType::PDATA_SECTION; + } + } + auto lineNorm = line; + INIStringUtil::replace(lineNorm, "\\=", " "); + auto equalsAt = lineNorm.find_first_of('='); + if (equalsAt != std::string::npos) + { + auto key = line.substr(0, equalsAt); + INIStringUtil::trim(key); + INIStringUtil::replace(key, "\\=", "="); + auto value = line.substr(equalsAt + 1); + INIStringUtil::trim(value); + parseData.first = key; + parseData.second = value; + return PDataType::PDATA_KEYVALUE; + } + return PDataType::PDATA_UNKNOWN; + } + }; + + class INIReader + { + public: + using T_LineData = std::vector; + using T_LineDataPtr = std::shared_ptr; + + private: + std::ifstream fileReadStream; + T_LineDataPtr lineData; + + T_LineData readFile() + { + std::string fileContents; + fileReadStream.seekg(0, std::ios::end); + fileContents.resize(fileReadStream.tellg()); + fileReadStream.seekg(0, std::ios::beg); + std::size_t fileSize = fileContents.size(); + fileReadStream.read(&fileContents[0], fileSize); + fileReadStream.close(); + T_LineData output; + if (fileSize == 0) + { + return output; + } + std::string buffer; + buffer.reserve(50); + for (std::size_t i = 0; i < fileSize; ++i) + { + char& c = fileContents[i]; + if (c == '\n') + { + output.emplace_back(buffer); + buffer.clear(); + continue; + } + if (c != '\0' && c != '\r') + { + buffer += c; + } + } + output.emplace_back(buffer); + return output; + } + + public: + INIReader(std::string const& filename, bool keepLineData = false) + { + fileReadStream.open(filename, std::ios::in | std::ios::binary); + if (keepLineData) + { + lineData = std::make_shared(); + } + } + ~INIReader() { } + + bool operator>>(INIStructure& data) + { + if (!fileReadStream.is_open()) + { + return false; + } + T_LineData fileLines = readFile(); + std::string section; + bool inSection = false; + INIParser::T_ParseValues parseData; + for (auto const& line : fileLines) + { + auto parseResult = INIParser::parseLine(line, parseData); + if (parseResult == INIParser::PDataType::PDATA_SECTION) + { + inSection = true; + data[section = parseData.first]; + } + else if (inSection && parseResult == INIParser::PDataType::PDATA_KEYVALUE) + { + auto const& key = parseData.first; + auto const& value = parseData.second; + data[section][key] = value; + } + if (lineData && parseResult != INIParser::PDataType::PDATA_UNKNOWN) + { + if (parseResult == INIParser::PDataType::PDATA_KEYVALUE && !inSection) + { + continue; + } + lineData->emplace_back(line); + } + } + return true; + } + T_LineDataPtr getLines() + { + return lineData; + } + }; + + class INIGenerator + { + private: + std::ofstream fileWriteStream; + + public: + bool prettyPrint = false; + + INIGenerator(std::string const& filename) + { + fileWriteStream.open(filename, std::ios::out | std::ios::binary); + } + ~INIGenerator() { } + + bool operator<<(INIStructure const& data) + { + if (!fileWriteStream.is_open()) + { + return false; + } + if (!data.size()) + { + return true; + } + auto it = data.begin(); + for (;;) + { + auto const& section = it->first; + auto const& collection = it->second; + fileWriteStream + << "[" + << section + << "]"; + if (collection.size()) + { + fileWriteStream << INIStringUtil::endl; + auto it2 = collection.begin(); + for (;;) + { + auto key = it2->first; + INIStringUtil::replace(key, "=", "\\="); + auto value = it2->second; + INIStringUtil::trim(value); + fileWriteStream + << key + << ((prettyPrint) ? " = " : "=") + << value; + if (++it2 == collection.end()) + { + break; + } + fileWriteStream << INIStringUtil::endl; + } + } + if (++it == data.end()) + { + break; + } + fileWriteStream << INIStringUtil::endl; + if (prettyPrint) + { + fileWriteStream << INIStringUtil::endl; + } + } + return true; + } + }; + + class INIWriter + { + private: + using T_LineData = std::vector; + using T_LineDataPtr = std::shared_ptr; + + std::string filename; + + T_LineData getLazyOutput(T_LineDataPtr const& lineData, INIStructure& data, INIStructure& original) + { + T_LineData output; + INIParser::T_ParseValues parseData; + std::string sectionCurrent; + bool parsingSection = false; + bool continueToNextSection = false; + bool discardNextEmpty = false; + bool writeNewKeys = false; + std::size_t lastKeyLine = 0; + for (auto line = lineData->begin(); line != lineData->end(); ++line) + { + if (!writeNewKeys) + { + auto parseResult = INIParser::parseLine(*line, parseData); + if (parseResult == INIParser::PDataType::PDATA_SECTION) + { + if (parsingSection) + { + writeNewKeys = true; + parsingSection = false; + --line; + continue; + } + sectionCurrent = parseData.first; + if (data.has(sectionCurrent)) + { + parsingSection = true; + continueToNextSection = false; + discardNextEmpty = false; + output.emplace_back(*line); + lastKeyLine = output.size(); + } + else + { + continueToNextSection = true; + discardNextEmpty = true; + continue; + } + } + else if (parseResult == INIParser::PDataType::PDATA_KEYVALUE) + { + if (continueToNextSection) + { + continue; + } + if (data.has(sectionCurrent)) + { + auto& collection = data[sectionCurrent]; + auto const& key = parseData.first; + auto const& value = parseData.second; + if (collection.has(key)) + { + auto outputValue = collection[key]; + if (value == outputValue) + { + output.emplace_back(*line); + } + else + { + INIStringUtil::trim(outputValue); + auto lineNorm = *line; + INIStringUtil::replace(lineNorm, "\\=", " "); + auto equalsAt = lineNorm.find_first_of('='); + auto valueAt = lineNorm.find_first_not_of( + INIStringUtil::whitespaceDelimiters, + equalsAt + 1 + ); + std::string outputLine = line->substr(0, valueAt); + if (prettyPrint && equalsAt + 1 == valueAt) + { + outputLine += " "; + } + outputLine += outputValue; + output.emplace_back(outputLine); + } + lastKeyLine = output.size(); + } + } + } + else + { + if (discardNextEmpty && line->empty()) + { + discardNextEmpty = false; + } + else if (parseResult != INIParser::PDataType::PDATA_UNKNOWN) + { + output.emplace_back(*line); + } + } + } + if (writeNewKeys || std::next(line) == lineData->end()) + { + T_LineData linesToAdd; + if (data.has(sectionCurrent) && original.has(sectionCurrent)) + { + auto const& collection = data[sectionCurrent]; + auto const& collectionOriginal = original[sectionCurrent]; + for (auto const& it : collection) + { + auto key = it.first; + if (collectionOriginal.has(key)) + { + continue; + } + auto value = it.second; + INIStringUtil::replace(key, "=", "\\="); + INIStringUtil::trim(value); + linesToAdd.emplace_back( + key + ((prettyPrint) ? " = " : "=") + value + ); + } + } + if (!linesToAdd.empty()) + { + output.insert( + output.begin() + lastKeyLine, + linesToAdd.begin(), + linesToAdd.end() + ); + } + if (writeNewKeys) + { + writeNewKeys = false; + --line; + } + } + } + for (auto const& it : data) + { + auto const& section = it.first; + if (original.has(section)) + { + continue; + } + if (prettyPrint && output.size() > 0 && !output.back().empty()) + { + output.emplace_back(); + } + output.emplace_back("[" + section + "]"); + auto const& collection = it.second; + for (auto const& it2 : collection) + { + auto key = it2.first; + auto value = it2.second; + INIStringUtil::replace(key, "=", "\\="); + INIStringUtil::trim(value); + output.emplace_back( + key + ((prettyPrint) ? " = " : "=") + value + ); + } + } + return output; + } + + public: + bool prettyPrint = false; + + INIWriter(std::string const& filename) + : filename(filename) + { + } + ~INIWriter() { } + + bool operator<<(INIStructure& data) + { + struct stat buf; + bool fileExists = (stat(filename.c_str(), &buf) == 0); + if (!fileExists) + { + INIGenerator generator(filename); + generator.prettyPrint = prettyPrint; + return generator << data; + } + INIStructure originalData; + T_LineDataPtr lineData; + bool readSuccess = false; + { + INIReader reader(filename, true); + if ((readSuccess = reader >> originalData)) + { + lineData = reader.getLines(); + } + } + if (!readSuccess) + { + return false; + } + T_LineData output = getLazyOutput(lineData, data, originalData); + std::ofstream fileWriteStream(filename, std::ios::out | std::ios::binary); + if (fileWriteStream.is_open()) + { + if (output.size()) + { + auto line = output.begin(); + for (;;) + { + fileWriteStream << *line; + if (++line == output.end()) + { + break; + } + fileWriteStream << INIStringUtil::endl; + } + } + return true; + } + return false; + } + }; + + class INIFile + { + private: + std::string filename; + + public: + INIFile(std::string const& filename) + : filename(filename) + { } + + ~INIFile() { } + + bool read(INIStructure& data) const + { + if (data.size()) + { + data.clear(); + } + if (filename.empty()) + { + return false; + } + INIReader reader(filename); + return reader >> data; + } + bool generate(INIStructure const& data, bool pretty = false) const + { + if (filename.empty()) + { + return false; + } + INIGenerator generator(filename); + generator.prettyPrint = pretty; + return generator << data; + } + bool write(INIStructure& data, bool pretty = false) const + { + if (filename.empty()) + { + return false; + } + INIWriter writer(filename); + writer.prettyPrint = pretty; + return writer << data; + } + }; +} + +#endif // MINI_INI_H_ diff --git a/src/extras/ini_parser.hpp b/src/extras/ini_parser.hpp deleted file mode 100644 index 7bea024c..00000000 --- a/src/extras/ini_parser.hpp +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright (c) 2013-2015 Denilson das Mercês Amorim - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. - * - */ -#ifndef LINB_INI_PARSER_HPP -#define LINB_INI_PARSER_HPP - -/* - * STL-like INI Container - */ - -#include // for std::string -#include // for std::map -#include // for std::FILE -#include // for std::find_if -#include // for std::function - -namespace linb -{ - template< - class CharT = char, /* Not compatible with other type here, since we're using C streams */ - class StringType = std::basic_string, - class KeyContainer = std::map, - class SectionContainer = std::map - > class basic_ini - { - public: - typedef CharT char_type; - typedef StringType string_type; - typedef KeyContainer key_container; - typedef SectionContainer section_container; - - // Typedef container values types - typedef typename section_container::value_type value_type; - typedef typename section_container::key_type key_type; - typedef typename section_container::mapped_type mapped_type; - - // Typedef common types - typedef typename section_container::size_type size_type; - typedef typename section_container::difference_type difference_type; - - // Typedef iterators - typedef typename section_container::iterator iterator; - typedef typename section_container::const_iterator const_iterator; - typedef typename section_container::reverse_iterator reverse_iterator; - typedef typename section_container::const_reverse_iterator const_reverse_iterator; - - // typedef References and pointers - typedef typename section_container::reference reference; - typedef typename section_container::const_reference const_reference; - typedef typename section_container::pointer pointer; - typedef typename section_container::const_pointer const_pointer; - - private: - section_container data; - - public: - - basic_ini() - { } - - basic_ini(const char_type* filename) - { this->read_file(filename); } - - /* Iterator methods */ - iterator begin() - { return data.begin(); } - const_iterator begin() const - { return data.begin(); } - iterator end() - { return data.end(); } - const_iterator end() const - { return data.end(); } - const_iterator cbegin() const - { return data.cbegin(); } - const_iterator cend() const - { return data.cend(); } - - /* Reverse iterator methods */ - reverse_iterator rbegin() - { return data.rbegin(); } - const_reverse_iterator rbegin() const - { return data.rbegin(); } - reverse_iterator rend() - { return data.rend(); } - const_reverse_iterator rend() const - { return data.rend(); } - const_reverse_iterator crbegin() const - { return data.crbegin(); } - const_reverse_iterator crend() const - { return data.crend(); } - - /* Acessing index methods */ - mapped_type& operator[](const string_type& sect) - { return data[sect]; } - mapped_type& operator[](string_type&& sect) - { return data[std::forward(sect)]; } - mapped_type& at( const string_type& sect) - { return data.at(sect); } - const mapped_type& at(const string_type& sect) const - { return data.at(sect); } - - /* Capacity information */ - bool empty() const - { return data.empty(); } - size_type size() const - { return data.size(); } - size_type max_size() const - { return data.max_size(); } - - /* Modifiers */ - void clear() - { return data.clear(); } - - /* Lookup */ - size_type count(const string_type& sect) - { return data.count(sect); } - iterator find(const string_type& sect) - { return data.find(sect); } - - /* Gets a value from the specified section & key, default_value is returned if the sect & key doesn't exist */ - string_type get(const string_type& sect, const key_type& key, const string_type& default_value) - { - auto it = this->find(sect); - if(it != this->end()) - { - auto itv = it->second.find(key); - if(itv != it->second.end()) - return itv->second; - } - return default_value; - } - - /* Sets the value of a value in the ini */ - void set(const string_type& sect, const key_type& key, const string_type& value) - { - (*this)[sect][key] = value; // no emplace since overwrite! - } - - /* Too lazy to continue this container... If you need more methods, just add it */ - - // re3 - void remove(const string_type& sect, const key_type& key) - { - auto it = this->find(sect); - if(it != this->end()) - { - it->second.erase(key); - } - } - - int category_size(const string_type& sect) - { - auto it = this->find(sect); - if(it != this->end()) - { - return it->second.size(); - } - return 0; - } - -#if 1 - bool read_file(const char_type* filename) - { - /* Using C stream in a STL-like container, funny? - */ - if(FILE* f = fopen(filename, "r")) - { - key_container* keys = nullptr; - char_type buf[2048]; - string_type line; - string_type key; - string_type value; - string_type null_string; - size_type pos; - - // Trims an string - auto trim = [](string_type& s, bool trimLeft, bool trimRight) -> string_type& - { - if(s.size()) - { - // Ignore UTF-8 BOM - while(s.size() >= 3 && s[0] == (char)(0xEF) && s[1] == (char)(0xBB) && s[2] == (char)(0xBF)) - s.erase(s.begin(), s.begin() + 3); - - if(trimLeft) - s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::function(::isspace)))); - if(trimRight) - s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::function(::isspace))).base(), s.end()); - } - return s; - }; - - // Start parsing - while(fgets(buf, sizeof(buf), f)) - { - // What a thing, reading into a char buffer and then putting in the string... - line = buf; - - // Find comment and remove anything after it from the line - if((pos = line.find_first_of(';')) != line.npos) - line.erase(pos); - - // Trim the string, and if it gets empty, skip this line - if(trim(line, true, true).empty()) - continue; - - // Find section name - if(line.front() == '[' && line.back() == ']') - { - pos = line.length() - 1; //line.find_first_of(']'); - if(pos != line.npos) - { - trim(key.assign(line, 1, pos-1), true, true); - keys = &data[std::move(key)]; // Create section - } - else - keys = nullptr; - } - else - { - // Find key and value positions - pos = line.find_first_of('='); - if(pos == line.npos) - { - // There's only the key - key = line; // No need for trim, line is already trimmed - value.clear(); - } - else - { - // There's the key and the value - trim(key.assign(line, 0, pos), false, true); // trim the right - trim(value.assign(line, pos + 1, line.npos), true, false); // trim the left - } - - // Put the key/value into the current keys object, or into the section "" if no section has been found - #if __cplusplus >= 201103L || _MSC_VER >= 1800 - (keys ? *keys : data[null_string]).emplace(std::move(key), std::move(value)); - #else - (keys ? *keys : data[null_string])[key] = value; - key.clear(); value.clear(); - #endif - } - } - - fclose(f); - return true; - } - return false; - } - - /* - * Dumps the content of this container into an ini file - */ - bool write_file(const char_type* filename) - { - if(FILE* f = fopen(filename, "w")) - { - bool first = true; - for(auto& sec : this->data) - { - fprintf(f, first? "[%s]\n" : "\n[%s]\n", sec.first.c_str()); - first = false; - for(auto& kv : sec.second) - { - if(kv.second.empty()) - fprintf(f, "%s\n", kv.first.c_str()); - else - fprintf(f, "%s = %s\n", kv.first.c_str(), kv.second.c_str()); - } - } - fclose(f); - return true; - } - return false; - } - - - /* - */ - bool load_file(const char_type* filename) - { - return read_file(filename); - } - - bool load_file(const StringType& filename) - { - return load_file(filename.c_str()); - } - - bool write_file(const StringType& filename) - { - return write_file(filename.c_str()); - } -#endif - - - - }; - - - /* Use default basic_ini - * - * Limitations: - * * Not unicode aware - * * Case sensitive - * * Sections must have unique keys - */ - typedef basic_ini<> ini; -} - -#endif - From b4364c3672d33d8bd6b1790b9274517655943bf8 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 12 Jul 2021 03:15:41 +0300 Subject: [PATCH 222/314] Reorganize config.h --- .github/workflows/re3_msvc_amd64.yml | 2 +- src/core/config.h | 181 ++++++++------------------- 2 files changed, 51 insertions(+), 132 deletions(-) diff --git a/.github/workflows/re3_msvc_amd64.yml b/.github/workflows/re3_msvc_amd64.yml index 428da540..014ac4f7 100644 --- a/.github/workflows/re3_msvc_amd64.yml +++ b/.github/workflows/re3_msvc_amd64.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: platform: [win-amd64-librw_d3d9-oal, win-amd64-librw_gl3_glfw-oal] - buildtype: [Debug, Release, Vanilla] + buildtype: [Debug, Release] steps: - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.0.2 diff --git a/src/core/config.h b/src/core/config.h index a8b83577..012d68c9 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -1,7 +1,9 @@ #pragma once -// disables (most) stuff that wasn't in original gta3.exe - check section at the bottom of this file -//#define VANILLA_DEFINES +// disables (most) stuff that wasn't in original gta3.exe +#ifdef __MWERKS__ +#define VANILLA_DEFINES +#endif enum Config { NUMPLAYERS = 1, // 4 on PS2 @@ -11,7 +13,7 @@ enum Config { MAX_CDCHANNELS = 5, MODELINFOSIZE = 5500, // 3150 on PS2 -#if defined __MWERKS__ || defined VANILLA_DEFINES +#ifdef VANILLA_DEFINES TXDSTORESIZE = 850, #else TXDSTORESIZE = 1024, // for Xbox map @@ -146,8 +148,30 @@ enum Config { //#define GTA_PS2 //#define GTA_XBOX -// This enables things from the PS2 version on PC -#define GTA_PS2_STUFF +// Version defines +#define GTA3_PS2_140 300 +#define GTA3_PS2_160 301 +#define GTA3_PC_10 310 +#define GTA3_PC_11 311 +#define GTA3_PC_STEAM 312 +// TODO? maybe something for xbox or android? + +#define GTA_VERSION GTA3_PC_11 + +#if defined GTA_PS2 +# define GTA_PS2_STUFF +# define RANDOMSPLASH +# define USE_CUSTOM_ALLOCATOR +# define VU_COLLISION +# define ANIM_COMPRESSION +# define PS2_MENU +#elif defined GTA_PC +# define PC_PLAYER_CONTROLS // mouse player/cam mode +# define GTA_REPLAY +# define GTA_SCENE_EDIT +# define PC_MENU +#elif defined GTA_XBOX +#endif // This is enabled for all released games. // any debug stuff that isn't left in any game is not in FINAL @@ -166,19 +190,25 @@ enum Config { #define FINAL #endif -// Version defines -#define GTA3_PS2_140 300 -#define GTA3_PS2_160 301 -#define GTA3_PC_10 310 -#define GTA3_PC_11 311 -#define GTA3_PC_STEAM 312 -// TODO? maybe something for xbox or android? +// these are placed here to work with VANILLA_DEFINES for compatibility +#define NO_CDCHECK // skip audio CD check +#define DEFAULT_NATIVE_RESOLUTION // Set default video mode to your native resolution (fixes Windows 10 launch) -#define GTA_VERSION GTA3_PC_11 +#ifdef VANILLA_DEFINES +#define FINAL +#define MASTER +//#define USE_MY_DOCUMENTS +#define THIS_IS_STUPID +#define PC_PARTICLE +#define DONT_FIX_REPLAY_BUGS +#define USE_TXD_CDIMAGE // generate and load textures from txd.img +//#define USE_TEXTURE_POOL // not possible because R* used custom RW33 +#else +// This enables things from the PS2 version on PC +#define GTA_PS2_STUFF // quality of life fixes that should also be in FINAL #define NASTY_GAME // nasty game for all languages -#define NO_CDCHECK // those infamous texts #define DRAW_GAME_VERSION_TEXT @@ -194,22 +224,10 @@ enum Config { //#define COMPRESSED_COL_VECTORS // use compressed vectors for collision vertices //#define ANIM_COMPRESSION // only keep most recently used anims uncompressed -#if defined GTA_PS2 -# define GTA_PS2_STUFF -# define RANDOMSPLASH -# define USE_CUSTOM_ALLOCATOR -# define VU_COLLISION -# define ANIM_COMPRESSION -#elif defined GTA_PC -# ifdef GTA_PS2_STUFF -# define USE_PS2_RAND -# define RANDOMSPLASH // use random splash as on PS2 -# define PS2_MATFX -# endif -# define PC_PLAYER_CONTROLS // mouse player/cam mode -# define GTA_REPLAY -# define GTA_SCENE_EDIT -#elif defined GTA_XBOX +#if defined GTA_PC && defined GTA_PS2_STUFF +# define USE_PS2_RAND +# define RANDOMSPLASH // use random splash as on PS2 +# define PS2_MATFX #endif #ifdef VU_COLLISION @@ -249,7 +267,7 @@ enum Config { #define ASCII_STRCMP // use faster ascii str comparisons -#if !defined _WIN32 || defined __MWERKS__ || defined __MINGW32__ || defined VANILLA_DEFINES +#if !defined _WIN32 || defined __MINGW32__ #undef ASCII_STRCMP #endif @@ -439,103 +457,4 @@ enum Config { #undef PEDS_REPORT_CRIMES_ON_PHONE #endif -// ------- - -#if defined __MWERKS__ || defined VANILLA_DEFINES -#define FINAL -#undef CHATTYSPLASH -#undef TIMEBARS -//#define USE_MY_DOCUMENTS - -#define MASTER -#undef VALIDATE_SAVE_SIZE -#undef NO_MOVIES -#undef DEBUGMENU - -//#undef NASTY_GAME -//#undef NO_CDCHECK - -#undef DRAW_GAME_VERSION_TEXT -#undef DRAW_MENU_VERSION_TEXT - -#undef GTA_PS2_STUFF -#undef USE_PS2_RAND -#undef RANDOMSPLASH -#undef PS2_MATFX - -#undef FIX_BUGS -#define THIS_IS_STUPID -#undef MORE_LANGUAGES -#undef COMPATIBLE_SAVES -#undef FIX_INCOMPATIBLE_SAVES -#undef LOAD_INI_SETTINGS - -#undef ASPECT_RATIO_SCALE -#undef PROPER_SCALING -//#undef DEFAULT_NATIVE_RESOLUTION -#undef PS2_ALPHA_TEST -#undef IMPROVED_VIDEOMODE -#undef DISABLE_LOADING_SCREEN -#undef DISABLE_VSYNC_ON_TEXTURE_CONVERSION -#undef ANISOTROPIC_FILTERING -//#define USE_TEXTURE_POOL // not possible because R* used custom RW33 - -#undef EXTENDED_COLOURFILTER -#undef EXTENDED_PIPELINES -#undef SCREEN_DROPLETS -#undef NEW_RENDERER - -#undef FIX_SPRITES - -#define PC_PARTICLE - -#undef XINPUT -#undef DETECT_PAD_INPUT_SWITCH -#undef KANGAROO_CHEAT -#undef ALLCARSHELI_CHEAT -#undef ALT_DODO_CHEAT -#undef REGISTER_START_BUTTON -#undef BIND_VEHICLE_FIREWEAPON -#undef BUTTON_ICONS - -#undef HUD_ENHANCEMENTS -#undef TRIANGULAR_BLIPS -#undef FIX_RADAR -#undef RADIO_OFF_TEXT - -#undef MENU_MAP -#undef GAMEPAD_MENU -#undef SCROLLABLE_STATS_PAGE -#undef CUSTOM_FRONTEND_OPTIONS - -#undef GRAPHICS_MENU_OPTIONS -#undef NO_ISLAND_LOADING -#undef CUTSCENE_BORDERS_SWITCH -#undef MULTISAMPLING -#undef INVERT_LOOK_FOR_PAD -#undef PED_CAR_DENSITY_SLIDERS - -#undef USE_DEBUG_SCRIPT_LOADER -#undef USE_MEASUREMENTS_IN_METERS -#undef USE_PRECISE_MEASUREMENT_CONVERTION -#undef MISSION_REPLAY -#undef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT -#undef USE_BASIC_SCRIPT_DEBUG_OUTPUT - -#define DONT_FIX_REPLAY_BUGS - -#undef EXPLODING_AIRTRAIN -#undef CAMERA_PICKUP -#undef PED_SKIN -#undef ANIMATE_PED_COL_MODEL -#undef CANCELLABLE_CAR_ENTER -#undef IMPROVED_CAMERA -#undef FREE_CAM - -#undef RADIO_SCROLL_TO_PREV_STATION -#undef AUDIO_CACHE -#undef PS2_AUDIO_CHANNELS -#undef PAUSE_RADIO_IN_FRONTEND -#undef MULTITHREADED_AUDIO -#undef BIG_IMG -#endif +#endif // VANILLA_DEFINES \ No newline at end of file From ac3905123ec3702a3ac9a464cac7dc3a322c5472 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 12 Jul 2021 03:10:02 +0200 Subject: [PATCH 223/314] fix --- src/core/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/config.h b/src/core/config.h index 012d68c9..874a1405 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -457,4 +457,4 @@ enum Config { #undef PEDS_REPORT_CRIMES_ON_PHONE #endif -#endif // VANILLA_DEFINES \ No newline at end of file +#endif // VANILLA_DEFINES From f50026828ad3bfb656496b3321b8e6b5c71fc7b1 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 12 Jul 2021 04:13:42 +0200 Subject: [PATCH 224/314] Vanilla config for Windows and win-x86 only --- premake5.lua | 9 +++++---- src/core/config.h | 4 ++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/premake5.lua b/premake5.lua index 72ff4d09..82e985f7 100644 --- a/premake5.lua +++ b/premake5.lua @@ -68,7 +68,7 @@ end workspace "re3" language "C++" - configurations { "Debug", "Release", "Vanilla" } + configurations { "Debug", "Release" } startproject "re3" location "build" symbols "Full" @@ -80,6 +80,7 @@ workspace "re3" end filter { "system:windows" } + configurations { "Vanilla" } platforms { "win-x86-RW33_d3d8-mss", "win-x86-librw_d3d9-mss", @@ -123,9 +124,6 @@ workspace "re3" flags { "LinkTimeOptimization" } end - filter "configurations:Vanilla" - defines { "VANILLA_DEFINES" } - filter { "platforms:win*" } system "windows" @@ -305,6 +303,9 @@ project "re3" includedirs { "src/weapons" } includedirs { "src/extras" } + filter "configurations:Vanilla" + defines { "VANILLA_DEFINES" } + if(not _OPTIONS["no-git-hash"]) then defines { "USE_OUR_VERSIONING" } end diff --git a/src/core/config.h b/src/core/config.h index 874a1405..885f98b8 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -195,6 +195,10 @@ enum Config { #define DEFAULT_NATIVE_RESOLUTION // Set default video mode to your native resolution (fixes Windows 10 launch) #ifdef VANILLA_DEFINES +#if !defined(_WIN32) || defined(__LP64__) || defined(_WIN64) +#error Vanilla can only be built for win-x86 +#endif + #define FINAL #define MASTER //#define USE_MY_DOCUMENTS From a4b92fe9bec17ad00dc436574f57844c4b8d49f5 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 12 Jul 2021 23:26:49 +0200 Subject: [PATCH 225/314] fix premake --- premake5.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/premake5.lua b/premake5.lua index 82e985f7..0a8faa07 100644 --- a/premake5.lua +++ b/premake5.lua @@ -303,9 +303,6 @@ project "re3" includedirs { "src/weapons" } includedirs { "src/extras" } - filter "configurations:Vanilla" - defines { "VANILLA_DEFINES" } - if(not _OPTIONS["no-git-hash"]) then defines { "USE_OUR_VERSIONING" } end @@ -316,6 +313,9 @@ project "re3" includedirs { "vendor/opusfile/include" } end + filter "configurations:Vanilla" + defines { "VANILLA_DEFINES" } + filter "platforms:*mss" defines { "AUDIO_MSS" } includedirs { "vendor/milessdk/include" } From 28f266302fbeea2d75d5a62de651d464ab380798 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Sun, 4 Jul 2021 18:52:48 +0200 Subject: [PATCH 226/314] Add Nintendo Switch initial support --- .github/workflows/build-switch.yml | 28 ++++++ .vscode/c_cpp_properties.json | 19 ++++ .vscode/settings.json | 10 +- CMakeLists.txt | 6 ++ cmake/nx/NXFunctions.cmake | 7 ++ logo_switch.jpg | Bin 0 -> 18096 bytes src/CMakeLists.txt | 40 +++++++- src/core/common.h | 4 + src/core/config.h | 9 +- src/core/re3.cpp | 2 - src/skel/crossplatform.cpp | 146 ++++++++++++++++++++++++++++- src/skel/events.cpp | 2 + src/skel/glfw/glfw.cpp | 12 ++- 13 files changed, 273 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/build-switch.yml create mode 100644 cmake/nx/NXFunctions.cmake create mode 100644 logo_switch.jpg diff --git a/.github/workflows/build-switch.yml b/.github/workflows/build-switch.yml new file mode 100644 index 00000000..46e1d501 --- /dev/null +++ b/.github/workflows/build-switch.yml @@ -0,0 +1,28 @@ +name: re3 cmake devkitA64 (Nintendo Switch) +on: + pull_request: + push: + release: + types: published +jobs: + build-nintendo-switch: + runs-on: ubuntu-latest + container: devkitpro/devkita64:latest + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + - name: "Build files" + run: | + /opt/devkitpro/portlibs/switch/bin/aarch64-none-elf-cmake -S. -Bbuild -DRE3_AUDIO=OAL -DLIBRW_PLATFORM=GL3 -DLIBRW_GL3_GFXLIB=GLFW -DRE3_WITH_OPUS=False -DRE3_VENDORED_LIBRW=True -DRE3_INSTALL=True + cmake --build build --parallel + - name: "Create binary package (cpack)" + working-directory: ./build + run: | + cpack + - name: "Archive binary package (github artifacts)" + uses: actions/upload-artifact@v2 + with: + name: "switch-gl3" + path: build/*.zip + if-no-files-found: error diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 327d8cc7..a214042a 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -26,6 +26,25 @@ "compilerArgs": ["-ggdb"], "cStandard": "gnu11", "cppStandard": "gnu++14" + }, + { + "name": "devkitPro aarch64 (Nintendo Switch)", + "compilerPath": "${env:DEVKITPRO}/devkitA64/bin/aarch64-none-elf-g++", + "includePath": [ + "${default}", + "${env:DEVKITPRO}/portlibs/switch/include", + "${env:DEVKITPRO}/libnx/include" + ], + "intelliSenseMode": "gcc-arm64", + "cStandard": "gnu11", + "cppStandard": "gnu++11", + "defines": [ + "__SWITCH__", + "GTA_SWITCH", + "LIBRW", + "RW_GL3", + "AUDIO_OAL" + ] } ], "version": 4 diff --git a/.vscode/settings.json b/.vscode/settings.json index 10cb5627..ee8362c1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,8 +2,13 @@ "C_Cpp.default.cStandard": "gnu11", "C_Cpp.default.cppStandard": "gnu++14", "C_Cpp.default.includePath": [ + "src", "src/animation", "src/audio", + "src/audio/eax", + "src/audio/oal", + "src/buildings", + "src/collision", "src/control", "src/core", "src/entities", @@ -15,8 +20,9 @@ "src/peds", "src/render", "src/rw", - "src/save", - "src/skel", + "src/save/", + "src/skel/", + "src/skel/glfw", "src/text", "src/vehicles", "src/weapons", diff --git a/CMakeLists.txt b/CMakeLists.txt index 5396d3b4..b687124a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,10 @@ message(STATUS "Building ${CMAKE_PROJECT_NAME} GIT SHA1: ${GIT_SHA1}") if(WIN32) set(${PROJECT}_AUDIOS "OAL" "MSS") +elseif(NINTENDO_SWITCH) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/nx") + include(NXFunctions) + set(${PROJECT}_AUDIOS "OAL") else() set(${PROJECT}_AUDIOS "OAL") endif() @@ -66,6 +70,8 @@ if(${PROJECT}_INSTALL) set(os "-apple") elseif(UNIX) set(os "-linux") + elseif(NINTENDO_SWITCH) + set(os "-switch") else() set(compiler "-UNK") message(WARNING "Unknown os. Created cpack package will be wrong. (override using cpack -P)") diff --git a/cmake/nx/NXFunctions.cmake b/cmake/nx/NXFunctions.cmake new file mode 100644 index 00000000..8fa23fae --- /dev/null +++ b/cmake/nx/NXFunctions.cmake @@ -0,0 +1,7 @@ +if(NOT COMMAND nx_generate_nacp) + message(FATAL_ERROR "The `nx_generate_nacp` cmake command is not available. Please use an appropriate Nintendo Switch toolchain.") +endif() + +if(NOT COMMAND nx_create_nro) + message(FATAL_ERROR "The `nx_create_nro` cmake command is not available. Please use an appropriate Nintendo Switch toolchain.") +endif() diff --git a/logo_switch.jpg b/logo_switch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..595d2c3b8d03cbaf72a213c73f84fa02f2b157cc GIT binary patch literal 18096 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 n0L%=}BjvI1_J5yy|65!A@6i0O?)NvR`` DESTINATION "." OPTIONAL) endif() endif() + +# Build Nintendo Switch binaries +if(NINTENDO_SWITCH) + target_compile_definitions(${EXECUTABLE} PRIVATE + GTA_SWITCH + ) + + # Needed for OpenAL-Soft + target_link_libraries(${EXECUTABLE} PRIVATE + openal # HACK - something broke with latest cmake + SDL2 + ) + + nx_generate_nacp (${EXECUTABLE}.nacp + NAME "${EXECUTABLE}" + AUTHOR "${EXECUTABLE} Team" + VERSION "1.0.0-${GIT_SHA1}" + ) + + nx_create_nro(${EXECUTABLE} + NACP ${EXECUTABLE}.nacp + ICON "${PROJECT_SOURCE_DIR}/logo_switch.jpg" + ) + + if(${PROJECT}_INSTALL) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}.nro" + DESTINATION "." + ) + endif() +endif() diff --git a/src/core/common.h b/src/core/common.h index da162762..99aafc5a 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -11,6 +11,10 @@ #define __STDC_LIMIT_MACROS // so we get UINT32_MAX etc #endif +#ifdef GTA_SWITCH +#include +#endif + #include #include #include diff --git a/src/core/config.h b/src/core/config.h index 885f98b8..edb5fb5a 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -319,7 +319,7 @@ enum Config { #if !defined(RW_GL3) && defined(_WIN32) #define XINPUT #endif -#if defined XINPUT || (defined RW_GL3 && !defined LIBRW_SDL2 && !defined __SWITCH__) +#if defined XINPUT || (defined RW_GL3 && !defined LIBRW_SDL2 && !defined GTA_SWITCH) #define DETECT_JOYSTICK_MENU // Then we'll expect user to enter Controller->Detect joysticks if his joystick isn't detected at the start. #endif #define DETECT_PAD_INPUT_SWITCH // Adds automatic switch of pad related stuff between controller and kb/m @@ -439,7 +439,7 @@ enum Config { #endif // Streaming -#if !defined(_WIN32) && !defined(__SWITCH__) +#if !defined(_WIN32) && !defined(GTA_SWITCH) //#define ONE_THREAD_PER_CHANNEL // Don't use if you're not on SSD/Flash - also not utilized too much right now(see commented LoadAllRequestedModels in Streaming.cpp) #define FLUSHABLE_STREAMING // Make it possible to interrupt reading when processing file isn't needed anymore. #endif @@ -461,4 +461,9 @@ enum Config { #undef PEDS_REPORT_CRIMES_ON_PHONE #endif +#ifdef GTA_SWITCH + #define IGNORE_MOUSE_KEYBOARD // ignore mouse & keyboard input + #define USE_UNNAMED_SEM // named semaphores are unsupported on the switch +#endif + #endif // VANILLA_DEFINES diff --git a/src/core/re3.cpp b/src/core/re3.cpp index b7d89363..40be153a 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -45,9 +45,7 @@ #include "Population.h" #include "IniFile.h" -#ifdef DETECT_JOYSTICK_MENU #include "crossplatform.h" -#endif #ifndef _WIN32 #include "assert.h" diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp index 577983b6..758125e9 100644 --- a/src/skel/crossplatform.cpp +++ b/src/skel/crossplatform.cpp @@ -198,6 +198,20 @@ char* casepath(char const* path, bool checkPathFirst) size_t rl = 0; DIR* d; + char* c; + + #if defined(GTA_SWITCH) || defined(GTA_VITA) + if( (c = strstr(p, ":/")) != NULL) // scheme used by some environments, eg. switch, vita + { + size_t deviceNameOffset = c - p + 3; + char* deviceNamePath = (char*)alloca(deviceNameOffset + 1); + strlcpy(deviceNamePath, p, deviceNameOffset); + deviceNamePath[deviceNameOffset] = 0; + d = opendir(deviceNamePath); + p = c + 1; + } + else + #endif if (p[0] == '/' || p[0] == '\\') { d = opendir("/"); @@ -212,7 +226,7 @@ char* casepath(char const* path, bool checkPathFirst) bool cantProceed = false; // just convert slashes in what's left in string, don't correct case of letters(because we can't) bool mayBeTrailingSlash = false; - char* c; + while (c = strsep(&p, "/\\")) { // May be trailing slash(allow), slash at the start(avoid), or multiple slashes(avoid) @@ -279,3 +293,133 @@ char* casepath(char const* path, bool checkPathFirst) return out; } #endif + +#ifdef GTA_SWITCH +/* Taken from glibc */ +char *realpath(const char *name, char *resolved) +{ + char *rpath, *dest = NULL; + const char *start, *end, *rpath_limit; + long int path_max; + + /* As per Single Unix Specification V2 we must return an error if + either parameter is a null pointer. We extend this to allow + the RESOLVED parameter to be NULL in case the we are expected to + allocate the room for the return value. */ + if (!name) + return NULL; + + /* As per Single Unix Specification V2 we must return an error if + the name argument points to an empty string. */ + if (name[0] == '\0') + return NULL; + +#ifdef PATH_MAX + path_max = PATH_MAX; +#else + path_max = pathconf(name, _PC_PATH_MAX); + if (path_max <= 0) + path_max = 1024; +#endif + + if (!resolved) + { + rpath = (char*)malloc(path_max); + if (!rpath) + return NULL; + } + else + rpath = resolved; + rpath_limit = rpath + path_max; + + if (name[0] != '/') + { + if (!getcwd(rpath, path_max)) + { + rpath[0] = '\0'; + goto error; + } + dest = (char*)memchr(rpath, '\0', path_max); + } + else + { + rpath[0] = '/'; + dest = rpath + 1; + } + + for (start = end = name; *start; start = end) + { + /* Skip sequence of multiple path-separators. */ + while (*start == '/') + ++start; + + /* Find end of path component. */ + for (end = start; *end && *end != '/'; ++end) + /* Nothing. */; + + if (end - start == 0) + break; + else if (end - start == 1 && start[0] == '.') + /* nothing */; + else if (end - start == 2 && start[0] == '.' && start[1] == '.') + { + /* Back up to previous component, ignore if at root already. */ + if (dest > rpath + 1) + while ((--dest)[-1] != '/') + ; + } + else + { + size_t new_size; + + if (dest[-1] != '/') + *dest++ = '/'; + + if (dest + (end - start) >= rpath_limit) + { + ptrdiff_t dest_offset = dest - rpath; + char *new_rpath; + + if (resolved) + { + if (dest > rpath + 1) + dest--; + *dest = '\0'; + goto error; + } + new_size = rpath_limit - rpath; + if (end - start + 1 > path_max) + new_size += end - start + 1; + else + new_size += path_max; + new_rpath = (char *)realloc(rpath, new_size); + if (!new_rpath) + goto error; + rpath = new_rpath; + rpath_limit = rpath + new_size; + + dest = rpath + dest_offset; + } + + dest = (char*)memcpy(dest, start, end - start); + *dest = '\0'; + } + } + if (dest > rpath + 1 && dest[-1] == '/') + --dest; + *dest = '\0'; + + return rpath; + +error: + if (!resolved) + free(rpath); + return NULL; +} + +ssize_t readlink (const char * __path, char * __buf, size_t __buflen) +{ + errno = ENOSYS; + return -1; +} +#endif diff --git a/src/skel/events.cpp b/src/skel/events.cpp index 3e1e95b3..87447819 100644 --- a/src/skel/events.cpp +++ b/src/skel/events.cpp @@ -821,7 +821,9 @@ PadHandler(RsEvent event, void *param) RwBool AttachInputDevices(void) { +#ifndef IGNORE_MOUSE_KEYBOARD RsInputDeviceAttach(rsKEYBOARD, KeyboardHandler); +#endif RsInputDeviceAttach(rsPAD, PadHandler); diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 8d3fc7d7..c7f92d34 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -12,12 +12,14 @@ DWORD _dwOperatingSystemVersion; #include "resource.h" #else long _dwOperatingSystemVersion; +#ifndef GTA_SWITCH #ifndef __APPLE__ #include #else #include #include #endif +#endif #include #include #include @@ -51,7 +53,7 @@ long _dwOperatingSystemVersion; #include "MemoryMgr.h" // We found out that GLFW's keyboard input handling is still pretty delayed/not stable, so now we fetch input from X11 directly on Linux. -#if !defined _WIN32 && !defined __APPLE__ && !defined __SWITCH__ // && !defined WAYLAND +#if !defined _WIN32 && !defined __APPLE__ && !defined GTA_SWITCH // && !defined WAYLAND #define GET_KEYBOARD_INPUT_FROM_X11 #endif @@ -485,11 +487,13 @@ psInitialize(void) debug("Physical memory size %llu\n", _dwMemAvailPhys); debug("Available physical memory %llu\n", size); #else +#ifndef GTA_SWITCH struct sysinfo systemInfo; sysinfo(&systemInfo); _dwMemAvailPhys = systemInfo.freeram; debug("Physical memory size %u\n", systemInfo.totalram); debug("Available physical memory %u\n", systemInfo.freeram); +#endif #endif TheText.Unload(); @@ -949,13 +953,15 @@ void psPostRWinit(void) RwVideoMode vm; RwEngineGetVideoModeInfo(&vm, GcurSelVM); + glfwSetFramebufferSizeCallback(PSGLOBAL(window), resizeCB); +#ifndef IGNORE_MOUSE_KEYBOARD #ifndef GET_KEYBOARD_INPUT_FROM_X11 glfwSetKeyCallback(PSGLOBAL(window), keypressCB); #endif - glfwSetFramebufferSizeCallback(PSGLOBAL(window), resizeCB); glfwSetScrollCallback(PSGLOBAL(window), scrollCB); glfwSetCursorPosCallback(PSGLOBAL(window), cursorCB); glfwSetCursorEnterCallback(PSGLOBAL(window), cursorEnterCB); +#endif glfwSetWindowIconifyCallback(PSGLOBAL(window), windowIconifyCB); glfwSetWindowFocusCallback(PSGLOBAL(window), windowFocusCB); glfwSetJoystickCallback(joysChangeCB); @@ -1791,7 +1797,7 @@ main(int argc, char *argv[]) InitMemoryMgr(); #endif -#ifndef _WIN32 +#if !defined(_WIN32) && !defined(GTA_SWITCH) struct sigaction act; act.sa_sigaction = terminateHandler; act.sa_flags = SA_SIGINFO; From 6da20aa7232e92b19af28d1bcd2dacacc3898789 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Sun, 4 Jul 2021 19:15:23 +0200 Subject: [PATCH 227/314] Enable Gamepad Menu on Switch --- src/core/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/config.h b/src/core/config.h index edb5fb5a..462dd713 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -345,7 +345,7 @@ enum Config { //# define PS2_MENU_USEALLPAGEICONS #else -# ifdef XINPUT +# if defined(XINPUT) || defined(GTA_SWITCH) # define GAMEPAD_MENU // Add gamepad menu # endif From 02ec56e8f70ab0fda5092d3455f76dcbb8825cff Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Sun, 4 Jul 2021 20:51:16 +0200 Subject: [PATCH 228/314] Add platform specific functions for glfw vibration With implementation for Switch vibration through libnx hid/pad API --- src/skel/glfw/glfw.cpp | 76 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index c7f92d34..754c43be 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -326,6 +326,78 @@ psNativeTextureSupport(void) #define CMDSTR LPSTR #endif +/* + ***************************************************************************** + */ + +#ifdef GTA_SWITCH + +static HidVibrationValue SwitchVibrationValues[2]; +static HidVibrationDeviceHandle SwitchVibrationDeviceHandles[2][2]; +static HidVibrationDeviceHandle SwitchVibrationDeviceGC; + +static PadState SwitchPad; + +Result HidInitializationResult[2]; +Result HidInitializationGCResult; + +void _psInitializeVibration() +{ + HidInitializationResult[0] = hidInitializeVibrationDevices(SwitchVibrationDeviceHandles[0], 2, HidNpadIdType_Handheld, HidNpadStyleTag_NpadHandheld); + if(R_FAILED(HidInitializationResult[0])) { + printf("Failed to initialize VibrationDevice for Handheld Mode\n"); + } + HidInitializationResult[1] = hidInitializeVibrationDevices(SwitchVibrationDeviceHandles[1], 2, HidNpadIdType_No1, HidNpadStyleSet_NpadFullCtrl); + if(R_FAILED(HidInitializationResult[1])) { + printf("Failed to initialize VibrationDevice for Detached Mode\n"); + } + HidInitializationGCResult = hidInitializeVibrationDevices(&SwitchVibrationDeviceGC, 1, HidNpadIdType_No1, HidNpadStyleTag_NpadGc); + if(R_FAILED(HidInitializationResult[1])) { + printf("Failed to initialize VibrationDevice for GC Mode\n"); + } + + SwitchVibrationValues[0].freq_low = 160.0f; + SwitchVibrationValues[0].freq_high = 320.0f; + + padConfigureInput(1, HidNpadStyleSet_NpadFullCtrl); + padInitializeDefault(&SwitchPad); +} + +void _psHandleVibration() +{ + padUpdate(&SwitchPad); + + uint8 target_device = padIsHandheld(&SwitchPad) ? 0 : 1; + + if(R_SUCCEEDED(HidInitializationResult[target_device])) { + CPad* pad = CPad::GetPad(0); + + // value conversion based on SDL2 switch port + SwitchVibrationValues[0].amp_high = SwitchVibrationValues[0].amp_low = pad->ShakeFreq == 0 ? 0.0f : 320.0f; + SwitchVibrationValues[0].freq_low = pad->ShakeFreq == 0.0 ? 160.0f : (float)pad->ShakeFreq * 1.26f; + SwitchVibrationValues[0].freq_high = pad->ShakeFreq == 0.0 ? 320.0f : (float)pad->ShakeFreq * 1.26f; + + if (pad->ShakeDur < CTimer::GetTimeStepInMilliseconds()) + pad->ShakeDur = 0; + else + pad->ShakeDur -= CTimer::GetTimeStepInMilliseconds(); + if (pad->ShakeDur == 0) pad->ShakeFreq = 0; + + + if(target_device == 1 && R_SUCCEEDED(HidInitializationGCResult)) { + // gamecube rumble + hidSendVibrationGcErmCommand(SwitchVibrationDeviceGC, pad->ShakeFreq > 0 ? HidVibrationGcErmCommand_Start : HidVibrationGcErmCommand_Stop); + } + + memcpy(&SwitchVibrationValues[1], &SwitchVibrationValues[0], sizeof(HidVibrationValue)); + hidSendVibrationValues(SwitchVibrationDeviceHandles[target_device], SwitchVibrationValues, 2); + } +} +#else +void _psInitializeVibration() {} +void _psHandleVibration() {} +#endif + /* ***************************************************************************** */ @@ -409,6 +481,8 @@ psInitialize(void) #endif #endif + + _psInitializeVibration(); gGameState = GS_START_UP; TRACE("gGameState = GS_START_UP"); @@ -2459,6 +2533,8 @@ void CapturePad(RwInt32 padID) if ( Abs(rightStickPos.y) > 0.3f ) pad->PCTempJoyState.RightStickY = (int32)(rightStickPos.y * 128.0f); } + + _psHandleVibration(); return; } From ca5d3c881133d1fb3c2d9af16de81b63304bc88f Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Mon, 5 Jul 2021 20:02:44 +0200 Subject: [PATCH 229/314] Replace GTA_SWITCH macro and use GAMEPAD_MENU * Replace GTA_SWITCH macro with __SWITCH__ for platform specific stuff and GTA_HANDHELD for the rest (which could be used by other ports) * Use GAMEPAD_MENU on GTA_HANDHELD, which will replace the usual controller setup (which contains some useless features for handhelds) * Fix some identation inconsistencies * Disable PC_PLAYER_CONTROLS on GTA_HANDHELD builds --- .vscode/c_cpp_properties.json | 1 - src/CMakeLists.txt | 4 ---- src/core/MenuScreensCustom.cpp | 12 +++++++++--- src/core/common.h | 2 +- src/core/config.h | 20 +++++++++++++++----- src/skel/crossplatform.cpp | 4 ++-- src/skel/glfw/glfw.cpp | 24 ++++++++++++------------ 7 files changed, 39 insertions(+), 28 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index a214042a..2ce82727 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -40,7 +40,6 @@ "cppStandard": "gnu++11", "defines": [ "__SWITCH__", - "GTA_SWITCH", "LIBRW", "RW_GL3", "AUDIO_OAL" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 67dfb325..2989c145 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -149,10 +149,6 @@ endif() # Build Nintendo Switch binaries if(NINTENDO_SWITCH) - target_compile_definitions(${EXECUTABLE} PRIVATE - GTA_SWITCH - ) - # Needed for OpenAL-Soft target_link_libraries(${EXECUTABLE} PRIVATE openal # HACK - something broke with latest cmake diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 033ed9b9..5b0fd60c 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -36,7 +36,7 @@ #ifdef CUSTOM_FRONTEND_OPTIONS -#ifdef IMPROVED_VIDEOMODE +#if defined(IMPROVED_VIDEOMODE) && !defined(GTA_HANDHELD) #define VIDEOMODE_SELECTOR MENUACTION_CFO_SELECT, "FEM_SCF", { new CCFOSelect((int8*)&FrontEndMenuManager.m_nPrefsWindowed, "VideoMode", "Windowed", screenModes, 2, true, ScreenModeAfterChange, true) }, #else #define VIDEOMODE_SELECTOR @@ -418,10 +418,10 @@ CMenuScreenCustom aScreens[MENUPAGES] = { }, // MENUPAGE_CONTROLLER_SETTINGS = 4 -#ifdef GAMEPAD_MENU +#if defined(GAMEPAD_MENU) && !defined(GTA_HANDHELD) { "FET_AGS", MENUPAGE_CONTROLLER_PC, MENUPAGE_CONTROLLER_PC, nil, nil, #else - { "FET_CON", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, + { "FET_AGS", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, #endif MENUACTION_CTRLCONFIG, "FEC_CCF", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, MENUACTION_CTRLDISPLAY, "FEC_CDP", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, @@ -751,7 +751,11 @@ CMenuScreenCustom aScreens[MENUPAGES] = { // MENUPAGE_OPTIONS = 41 { "FET_OPT", MENUPAGE_NONE, MENUPAGE_NONE, nil, nil, +#ifdef GTA_HANDHELD + MENUACTION_CHANGEMENU, "FET_CTL", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_SETTINGS }, +#else MENUACTION_CHANGEMENU, "FET_CTL", { nil, SAVESLOT_NONE, MENUPAGE_CONTROLLER_PC }, +#endif MENUACTION_LOADRADIO, "FET_AUD", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_CHANGEMENU, "FET_DIS", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, #ifdef GRAPHICS_MENU_OPTIONS @@ -885,7 +889,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_GFX", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, new CCustomScreenLayout({MENUSPRITE_MAINMENU, 50, 0, 20, FONT_HEADING, FESCREEN_LEFT_ALIGN, true, MEDIUMTEXT_X_SCALE, MEDIUMTEXT_Y_SCALE}), GraphicsGoBack, +#ifdef GTA_HANDHELD MENUACTION_SCREENRES, "FED_RES", { nil, SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS }, +#endif MENUACTION_WIDESCREEN, "FED_WIS", { nil, SAVESLOT_NONE, MENUPAGE_GRAPHICS_SETTINGS }, VIDEOMODE_SELECTOR MENUACTION_FRAMESYNC, "FEM_VSC", { nil, SAVESLOT_NONE, MENUPAGE_DISPLAY_SETTINGS }, diff --git a/src/core/common.h b/src/core/common.h index 99aafc5a..31aab2b3 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -11,7 +11,7 @@ #define __STDC_LIMIT_MACROS // so we get UINT32_MAX etc #endif -#ifdef GTA_SWITCH +#ifdef __SWITCH__ #include #endif diff --git a/src/core/config.h b/src/core/config.h index 462dd713..8171f987 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -158,6 +158,11 @@ enum Config { #define GTA_VERSION GTA3_PC_11 +// Enable configuration for handheld console ports +#if defined(__SWITCH__) || defined(PSP2) + #define GTA_HANDHELD +#endif + #if defined GTA_PS2 # define GTA_PS2_STUFF # define RANDOMSPLASH @@ -166,7 +171,9 @@ enum Config { # define ANIM_COMPRESSION # define PS2_MENU #elif defined GTA_PC -# define PC_PLAYER_CONTROLS // mouse player/cam mode +# ifndef GTA_HANDHELD +# define PC_PLAYER_CONTROLS // mouse player/cam mode +# endif # define GTA_REPLAY # define GTA_SCENE_EDIT # define PC_MENU @@ -319,7 +326,7 @@ enum Config { #if !defined(RW_GL3) && defined(_WIN32) #define XINPUT #endif -#if defined XINPUT || (defined RW_GL3 && !defined LIBRW_SDL2 && !defined GTA_SWITCH) +#if defined XINPUT || (defined RW_GL3 && !defined LIBRW_SDL2 && !defined GTA_HANDHELD) #define DETECT_JOYSTICK_MENU // Then we'll expect user to enter Controller->Detect joysticks if his joystick isn't detected at the start. #endif #define DETECT_PAD_INPUT_SWITCH // Adds automatic switch of pad related stuff between controller and kb/m @@ -345,7 +352,7 @@ enum Config { //# define PS2_MENU_USEALLPAGEICONS #else -# if defined(XINPUT) || defined(GTA_SWITCH) +# if defined(XINPUT) || defined(GTA_HANDHELD) # define GAMEPAD_MENU // Add gamepad menu # endif @@ -439,7 +446,7 @@ enum Config { #endif // Streaming -#if !defined(_WIN32) && !defined(GTA_SWITCH) +#if !defined(_WIN32) && !defined(__SWITCH__) //#define ONE_THREAD_PER_CHANNEL // Don't use if you're not on SSD/Flash - also not utilized too much right now(see commented LoadAllRequestedModels in Streaming.cpp) #define FLUSHABLE_STREAMING // Make it possible to interrupt reading when processing file isn't needed anymore. #endif @@ -461,8 +468,11 @@ enum Config { #undef PEDS_REPORT_CRIMES_ON_PHONE #endif -#ifdef GTA_SWITCH +#ifdef GTA_HANDHELD #define IGNORE_MOUSE_KEYBOARD // ignore mouse & keyboard input +#endif + +#ifdef __SWITCH__ #define USE_UNNAMED_SEM // named semaphores are unsupported on the switch #endif diff --git a/src/skel/crossplatform.cpp b/src/skel/crossplatform.cpp index 758125e9..e69c22e1 100644 --- a/src/skel/crossplatform.cpp +++ b/src/skel/crossplatform.cpp @@ -200,7 +200,7 @@ char* casepath(char const* path, bool checkPathFirst) DIR* d; char* c; - #if defined(GTA_SWITCH) || defined(GTA_VITA) + #if defined(__SWITCH__) || defined(PSP2) if( (c = strstr(p, ":/")) != NULL) // scheme used by some environments, eg. switch, vita { size_t deviceNameOffset = c - p + 3; @@ -294,7 +294,7 @@ char* casepath(char const* path, bool checkPathFirst) } #endif -#ifdef GTA_SWITCH +#ifdef __SWITCH__ /* Taken from glibc */ char *realpath(const char *name, char *resolved) { diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 754c43be..767d1bbd 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -12,7 +12,7 @@ DWORD _dwOperatingSystemVersion; #include "resource.h" #else long _dwOperatingSystemVersion; -#ifndef GTA_SWITCH +#ifndef __SWITCH__ #ifndef __APPLE__ #include #else @@ -53,7 +53,7 @@ long _dwOperatingSystemVersion; #include "MemoryMgr.h" // We found out that GLFW's keyboard input handling is still pretty delayed/not stable, so now we fetch input from X11 directly on Linux. -#if !defined _WIN32 && !defined __APPLE__ && !defined GTA_SWITCH // && !defined WAYLAND +#if !defined _WIN32 && !defined __APPLE__ && !defined GTA_HANDHELD // && !defined WAYLAND #define GET_KEYBOARD_INPUT_FROM_X11 #endif @@ -330,7 +330,7 @@ psNativeTextureSupport(void) ***************************************************************************** */ -#ifdef GTA_SWITCH +#ifdef __SWITCH__ static HidVibrationValue SwitchVibrationValues[2]; static HidVibrationDeviceHandle SwitchVibrationDeviceHandles[2][2]; @@ -338,10 +338,10 @@ static HidVibrationDeviceHandle SwitchVibrationDeviceGC; static PadState SwitchPad; -Result HidInitializationResult[2]; -Result HidInitializationGCResult; +static Result HidInitializationResult[2]; +static Result HidInitializationGCResult; -void _psInitializeVibration() +static void _psInitializeVibration() { HidInitializationResult[0] = hidInitializeVibrationDevices(SwitchVibrationDeviceHandles[0], 2, HidNpadIdType_Handheld, HidNpadStyleTag_NpadHandheld); if(R_FAILED(HidInitializationResult[0])) { @@ -360,10 +360,10 @@ void _psInitializeVibration() SwitchVibrationValues[0].freq_high = 320.0f; padConfigureInput(1, HidNpadStyleSet_NpadFullCtrl); - padInitializeDefault(&SwitchPad); + padInitializeDefault(&SwitchPad); } -void _psHandleVibration() +static void _psHandleVibration() { padUpdate(&SwitchPad); @@ -394,8 +394,8 @@ void _psHandleVibration() } } #else -void _psInitializeVibration() {} -void _psHandleVibration() {} +static void _psInitializeVibration() {} +static void _psHandleVibration() {} #endif /* @@ -561,7 +561,7 @@ psInitialize(void) debug("Physical memory size %llu\n", _dwMemAvailPhys); debug("Available physical memory %llu\n", size); #else -#ifndef GTA_SWITCH +#ifndef __SWITCH__ struct sysinfo systemInfo; sysinfo(&systemInfo); _dwMemAvailPhys = systemInfo.freeram; @@ -1871,7 +1871,7 @@ main(int argc, char *argv[]) InitMemoryMgr(); #endif -#if !defined(_WIN32) && !defined(GTA_SWITCH) +#if !defined(_WIN32) && !defined(__SWITCH__) struct sigaction act; act.sa_sigaction = terminateHandler; act.sa_flags = SA_SIGINFO; From a247d533675a3ffa3b5f3722bef4d55e5a912d03 Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Mon, 5 Jul 2021 16:02:10 +0200 Subject: [PATCH 230/314] cmake: fix OpenAL on Switch + using X11 on Linux --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b687124a..8bfe3656 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.8) +cmake_minimum_required(VERSION 3.14) set(EXECUTABLE re3) set(PROJECT RE3) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2989c145..4de36572 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -54,9 +54,13 @@ target_compile_definitions(${EXECUTABLE} PRIVATE USE_OUR_VERSIONING) if(${PROJECT}_AUDIO STREQUAL "OAL") find_package(OpenAL REQUIRED) - target_include_directories(${EXECUTABLE} PRIVATE ${OPENAL_INCLUDE_DIR}) - target_link_libraries(${EXECUTABLE} PRIVATE ${OPENAL_LIBRARY}) - target_compile_definitions(${EXECUTABLE} PRIVATE ${OPENAL_DEFINITIONS}) + if(TARGET OpenAL::OpenAL) + target_link_libraries(${EXECUTABLE} PRIVATE OpenAL::OpenAL) + else() + target_include_directories(${EXECUTABLE} PRIVATE ${OPENAL_INCLUDE_DIR}) + target_link_libraries(${EXECUTABLE} PRIVATE ${OPENAL_LIBRARY}) + target_compile_definitions(${EXECUTABLE} PRIVATE ${OPENAL_DEFINITIONS}) + endif() target_compile_definitions(${EXECUTABLE} PRIVATE AUDIO_OAL) elseif(${PROJECT}_AUDIO STREQUAL "MSS") find_package(MilesSDK REQUIRED) @@ -126,6 +130,11 @@ else() set(${PROJECT}_C_CXX_EXTENSIONS OFF) endif() +if(NOT (WINDOWS OR APPLE OR NINTENDO_SWITCH)) + find_package(X11 REQUIRED) + target_link_libraries(${EXECUTABLE} PRIVATE X11::X11) +endif() + set_target_properties(${EXECUTABLE} PROPERTIES C_STANDARD 11 @@ -151,7 +160,6 @@ endif() if(NINTENDO_SWITCH) # Needed for OpenAL-Soft target_link_libraries(${EXECUTABLE} PRIVATE - openal # HACK - something broke with latest cmake SDL2 ) From b09b489ae7b15feb85b71a18f1b8e320f56d0ce8 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Mon, 5 Jul 2021 20:52:00 +0200 Subject: [PATCH 231/314] Fix WINDOWS -> WIN32 on cmake --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4de36572..1cf10d0f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -130,7 +130,7 @@ else() set(${PROJECT}_C_CXX_EXTENSIONS OFF) endif() -if(NOT (WINDOWS OR APPLE OR NINTENDO_SWITCH)) +if(NOT (WIN32 OR APPLE OR NINTENDO_SWITCH)) find_package(X11 REQUIRED) target_link_libraries(${EXECUTABLE} PRIVATE X11::X11) endif() From a99a04ed49fe5cea1eb8292d9ffeefb40d10ac82 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Tue, 6 Jul 2021 18:05:21 +0200 Subject: [PATCH 232/314] Add Switch controller asset and configuration * Add GXT string for the Nintendo Switch Controller * Add frontend and button textures for Nintendo Switch controllers * Fix wrong #ifndef when hiding screen resolution option on GTA_HANDHELD --- gamefiles/TEXT/american.gxt | Bin 220642 -> 220708 bytes gamefiles/TEXT/french.gxt | Bin 246616 -> 246682 bytes gamefiles/TEXT/german.gxt | Bin 242680 -> 242746 bytes gamefiles/TEXT/italian.gxt | Bin 242050 -> 242116 bytes gamefiles/TEXT/polish.gxt | Bin 241682 -> 241748 bytes gamefiles/TEXT/russian.gxt | Bin 222468 -> 222534 bytes gamefiles/TEXT/spanish.gxt | Bin 235614 -> 235676 bytes gamefiles/models/frontend_nsw.txd | Bin 0 -> 2360104 bytes gamefiles/models/nswbtns.txd | Bin 0 -> 528424 bytes src/core/ControllerConfig.cpp | 14 ++++++++++++++ src/core/Frontend.cpp | 20 ++++++++++++++++++++ src/core/Frontend.h | 1 + src/core/MenuScreensCustom.cpp | 4 ++-- utils/gxt/american.txt | 3 +++ utils/gxt/french.txt | 3 +++ utils/gxt/german.txt | 3 +++ utils/gxt/italian.txt | 3 +++ utils/gxt/polish.txt | 3 +++ utils/gxt/russian.txt | 3 +++ utils/gxt/spanish.txt | 3 +++ 20 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 gamefiles/models/frontend_nsw.txd create mode 100644 gamefiles/models/nswbtns.txd diff --git a/gamefiles/TEXT/american.gxt b/gamefiles/TEXT/american.gxt index d4034411526937d7ade63a589ceccc11fc74787b..d7b7c956a1e95805244cbdfa7be49b5d8fdc132f 100644 GIT binary patch delta 212 zcmaE~n|H|`Ue*wA*T|NQtn6xxU6Xm$#BHD5V`6Y~b&hv-31HAT24%bYF)V|LyBRWU zgR_koj=|Z+4A(X%s!203$=u&ur%}bkZ3UI`3l5+BU8|Cb=l}tH2kuhQOOA~80M!U_b*744a6PjD=+FR=wx3|_Y+1``&WAJ3~V+dhz i1(Gfd{tOBX!3^O*u@DAl29N2DG0c+N55+JmFaiLG;6K#> delta 165 zcmZ3ohxgHLUe*wA*T{;Etn6xxA(MI4#BDd+V`6Y~b&hv-31HAT24%bYF%-bW-3%ET z;A|s?32?SC!-CC;YSK(h&+cum)2L#a%%WYvbPdSX7Gq|#nmko6p6ScI&ENE*SQwo) t2O2MCWYpUH)x?^Okz=!=b-XiURP)5T_K9_j+b7mB+1}gE63eW>2mq(WHAVmc diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 16c7a7161bc0c4e5033eea69df29897ec1f1677e..3dece994972e89e2e8de6c504eaf424b1f1c3832 100644 GIT binary patch delta 209 zcmcc7#y_i_pEbnWHFCyAR&6!LzR8Aa;&xgN%nWX>&hgGJ0Ss)aP`0Zd!zz0y+s%;S z6r63u@Cwd0X5ezz+@>bQ#F(*pp++?mw;fc?UClh^9SGj?s} z)sJRjytO&gcrhd6q0PLe?re+;Hiud}yEA@jp4rqsvxyOinYPbtVs^Bb^<(g4@M8#J ea0QYs4E_uX48aWHK(P=8X9kb$2M;n&X9NI4sX3&hgGJ0Ss)aP`0ZdLkUdW&5&UV zoNdIg1-PstkHYZv;yEE=-UfR^Yw22XjnYJ%&Vs^COE^~;vju8M0oiR=T diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index c3309d6150155b6d5a372d1527baa50b7af655c9..7f25bd05e6b8adcad90bdca73fa9c24f7e630247 100644 GIT binary patch delta 210 zcmezIoNw0)KGqO#*T_8^S&yqRi5X8mrzU2*$(WhJ&DA;H*(HEsfh3ge>c?ON6L&LY z2!gYX7>eL*V}?na71jBf7@uu6)U0OWK4ApW?H3$Ad9`*Wt89^3ObF?TWo0H=pNuK)l5 delta 168 zcmdn>g73$3KGqO#*T@YUS&yqRJusSlPEE|V#+aGG&DA;H*(HEsfh3ge>c{ZM2+DRd zWRQWWaWi7DfwPSnVm2$P^D{AS*leg-%`|z3b_L_2&4xPM%#0@{+v>YB9@yNfAI-w3 yu=%0!Vn#-e&8?=vY)m(dH{Y^;=ger)e6qg%WIZDgGi^Uv&wScw`>9RL1&jduAvV_l diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index b30b74f48f45777b7c3faffe23f5eccac0a8e0fc..5a060a9a606ec4d27569a5ecff2b631078148cda 100644 GIT binary patch delta 208 zcmZpA%y;B5A8UxWYvh}ath?11GbSHY6Sw6vWM*)4b&hv-31CnXg|c1!7}^Y=Y&S!O z6>zo@!zno1nBmQ4QFUo1Mvu*gn$=9)5>Oex;PA<-wJRAdHmmB0Gc)>4w$+bkOxQeE zKbnPc!{(pHiy0YbY@TZx%*I%@`J?r3XT}rFZ|mFN)-wVz)AqOZ%+dz3ehi)reheWD du0Ya-!Jk2aA($Z?C>Fxt%;2&8{d(rfi~xkgJqG{) delta 166 zcmX@|n6K$EA8UxWYvhBCth?11jV2#d6Suu#z|7$0>KyOv62PD&3T3e5V%LYoaWtC=S6(5_%)+H9yJ&dew=*;7BBQET%`{b&}(s?Dq> tiy0Y{Hm@`dW@B{N{MY)oGvlP@pY`oO>luNVY5UK5W@&@%UK^OJ7y)#_GUWgO diff --git a/gamefiles/TEXT/polish.gxt b/gamefiles/TEXT/polish.gxt index d771427b1df8f496ec6b70067b94aab2c2701026..782f656d8baf0290abd8e30e355637a966ca5da5 100755 GIT binary patch delta 214 zcmbRAfbYr!KGqO#*T|NQtn6xxrzZ2NiQCB-GBdcjI>$S^1TZWThO%A#7@inF*=~jm zpWtjG1_qdVH)94q!_7%*QcR3Kn`v(6z1I?{F^X-j)u?8g%%WYv$g#OrTb!A(YVuUQct*9&U-hC{7>hOs u8ZTyKjN1Iw#F~xKVzZ%jyfb50^TfLLiFJ%X%(Q)C9doV0c9-?c0*nBgcrm;H diff --git a/gamefiles/TEXT/russian.gxt b/gamefiles/TEXT/russian.gxt index 0075c691777a43d19c3668044200d9e7a1483e80..914f5b52ada25cc7e9329d0455b7137445054270 100644 GIT binary patch delta 217 zcmZoU#e3`&FKdXmYh=qtR(3VUO_O=m#BF(=F)_HgI>$S^1TctgV}P(-{TR+Xg^Ifw zGTec)jTqj**~SciHYch{Gcj6huGOe!;?9A}_yvbg{;pNYr1flbk+v8!}tH2k+Es>OA~80#+c2j*745Fo1QUEo?n+Zc|n~-Q+-=K$S^1TctgV}P(-{TQaf#N7-T zmciLZ4BOyrV}@g!6V;@d7@0QLYE&~#X3?%-`to#howgV=W6tEMdhv`Ro4@KsvoNM? t4m4iO$mp~AtBExmquORe>v(6zn&ydh?Gx)5w@<8N%741uEQMKs5da6fGr#}< diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index 8980eb4d081ff875802534336af464dcb40d0c85..cb884689fcaec2ee4081fb31cc99ba08f969865e 100644 GIT binary patch delta 216 zcmcb&fp5-6KGqO#*T_E`S)J7+t0b5i++3aGot@nnY928`*}e?-CMT+it4@Q-x*0O8 zfU}JlcEQ=k3}-gaRg-375|Z4!OQVX3TL&uT7aTs>Si6#mO>*-(Z82uXxXDNL;+eE0 zH>>GKu`pI_ZZuxZ$e6HM)zqDh(Qb3Db-y#?gyz3>?SJbSftYFg-#TV}iRn+KF$>B1 kF?cfgF@!L<0!bGJe+C7HV1{s@SO|kNgU5Ew>CC2#07%F@#Q*>R delta 169 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 literal 0 HcmV?d00001 diff --git a/gamefiles/models/nswbtns.txd b/gamefiles/models/nswbtns.txd new file mode 100644 index 0000000000000000000000000000000000000000..0b1756ee347da3be0589cc7c328e52eb52354b84 GIT binary patch literal 528424 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%0DIZM|G1g|qvgLa7r`S< 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%0AS_b1@2=LE(AZvjvBdJ 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 Date: Mon, 12 Jul 2021 01:26:11 +0200 Subject: [PATCH 233/314] Move assets to dedicated folder and redefine GLFW mappings for Switch --- README.md | 2 +- logo.svg => res/images/logo.svg | 0 logo.png => res/images/logo_1024.png | Bin logo_switch.jpg => res/images/logo_256.jpg | Bin src/CMakeLists.txt | 2 +- src/skel/crossplatform.h | 25 +++++++++++++++++++++ 6 files changed, 27 insertions(+), 2 deletions(-) rename logo.svg => res/images/logo.svg (100%) rename logo.png => res/images/logo_1024.png (100%) rename logo_switch.jpg => res/images/logo_256.jpg (100%) diff --git a/README.md b/README.md index 9ccabf1e..bcbecaba 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -re3 logo +re3 logo [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=master) diff --git a/logo.svg b/res/images/logo.svg similarity index 100% rename from logo.svg rename to res/images/logo.svg diff --git a/logo.png b/res/images/logo_1024.png similarity index 100% rename from logo.png rename to res/images/logo_1024.png diff --git a/logo_switch.jpg b/res/images/logo_256.jpg similarity index 100% rename from logo_switch.jpg rename to res/images/logo_256.jpg diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1cf10d0f..425f2315 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -171,7 +171,7 @@ if(NINTENDO_SWITCH) nx_create_nro(${EXECUTABLE} NACP ${EXECUTABLE}.nacp - ICON "${PROJECT_SOURCE_DIR}/logo_switch.jpg" + ICON "${PROJECT_SOURCE_DIR}/res/images/logo_256.jpg" ) if(${PROJECT}_INSTALL) diff --git a/src/skel/crossplatform.h b/src/skel/crossplatform.h index aa90ce5a..67bb4282 100644 --- a/src/skel/crossplatform.h +++ b/src/skel/crossplatform.h @@ -157,3 +157,28 @@ bool FindNextFile(HANDLE, WIN32_FIND_DATA*); void FileTimeToSystemTime(time_t*, SYSTEMTIME*); void GetDateFormat(int, int, SYSTEMTIME*, int, char*, int); #endif + +#ifdef __SWITCH__ + +// tweak glfw values for switch to match expected pc bindings +#ifdef GLFW_GAMEPAD_BUTTON_A + #undef GLFW_GAMEPAD_BUTTON_A +#endif +#define GLFW_GAMEPAD_BUTTON_A 1 + +#ifdef GLFW_GAMEPAD_BUTTON_B + #undef GLFW_GAMEPAD_BUTTON_B +#endif +#define GLFW_GAMEPAD_BUTTON_B 0 + +#ifdef GLFW_GAMEPAD_BUTTON_X + #undef GLFW_GAMEPAD_BUTTON_X +#endif +#define GLFW_GAMEPAD_BUTTON_X 3 + +#ifdef GLFW_GAMEPAD_BUTTON_Y + #undef GLFW_GAMEPAD_BUTTON_Y +#endif +#define GLFW_GAMEPAD_BUTTON_Y 2 + +#endif From 5cab196718d94c1ddfe1ddda0490a639cac7fde0 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Mon, 12 Jul 2021 02:27:45 +0200 Subject: [PATCH 234/314] Finish cmake stuff for Switch build * SDL2 for OpenAL not needed anymore * Add re3_platform_target function and use that instead of manually building NRO --- CMakeLists.txt | 15 +++++++++++---- cmake/nx/NXFunctions.cmake | 31 +++++++++++++++++++++++++++++++ src/CMakeLists.txt | 25 +------------------------ 3 files changed, 43 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8bfe3656..adf3c29f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,18 +4,25 @@ set(EXECUTABLE re3) set(PROJECT RE3) project(${EXECUTABLE} C CXX) +set(${PROJECT}_AUTHOR "${PROJECT} Team") list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") include(GetGitRevisionDescription) get_git_head_revision(GIT_REFSPEC GIT_SHA1 "ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR") message(STATUS "Building ${CMAKE_PROJECT_NAME} GIT SHA1: ${GIT_SHA1}") -if(WIN32) - set(${PROJECT}_AUDIOS "OAL" "MSS") -elseif(NINTENDO_SWITCH) +if(NINTENDO_SWITCH) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/nx") include(NXFunctions) - set(${PROJECT}_AUDIOS "OAL") +endif() + +if(NOT COMMAND re3_platform_target) + function(re3_platform_target) + endfunction() +endif() + +if(WIN32) + set(${PROJECT}_AUDIOS "OAL" "MSS") else() set(${PROJECT}_AUDIOS "OAL") endif() diff --git a/cmake/nx/NXFunctions.cmake b/cmake/nx/NXFunctions.cmake index 8fa23fae..cf3f974b 100644 --- a/cmake/nx/NXFunctions.cmake +++ b/cmake/nx/NXFunctions.cmake @@ -5,3 +5,34 @@ endif() if(NOT COMMAND nx_create_nro) message(FATAL_ERROR "The `nx_create_nro` cmake command is not available. Please use an appropriate Nintendo Switch toolchain.") endif() + +set(CMAKE_EXECUTABLE_SUFFIX ".elf") + +function(re3_platform_target TARGET) + cmake_parse_arguments(RPT "INSTALL" "" "" ${ARGN}) + + get_target_property(TARGET_TYPE "${TARGET}" TYPE) + if(TARGET_TYPE STREQUAL "EXECUTABLE") + nx_generate_nacp(${TARGET}.nacp + NAME "${TARGET}" + AUTHOR "${${PROJECT}_AUTHOR}" + VERSION "1.0.0-${GIT_SHA1}" + ) + + nx_create_nro(${TARGET} + NACP ${TARGET}.nacp + ICON "${PROJECT_SOURCE_DIR}/res/images/logo_256.jpg" + ) + + if(${PROJECT}_INSTALL AND RPT_INSTALL) + get_target_property(TARGET_OUTPUT_NAME ${TARGET} OUTPUT_NAME) + if(NOT TARGET_OUTPUT_NAME) + set(TARGET_OUTPUT_NAME "${TARGET}") + endif() + + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_OUTPUT_NAME}.nro" + DESTINATION "." + ) + endif() + endif() +endfunction() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 425f2315..8dac5a3a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -156,27 +156,4 @@ if(${PROJECT}_INSTALL) endif() endif() -# Build Nintendo Switch binaries -if(NINTENDO_SWITCH) - # Needed for OpenAL-Soft - target_link_libraries(${EXECUTABLE} PRIVATE - SDL2 - ) - - nx_generate_nacp (${EXECUTABLE}.nacp - NAME "${EXECUTABLE}" - AUTHOR "${EXECUTABLE} Team" - VERSION "1.0.0-${GIT_SHA1}" - ) - - nx_create_nro(${EXECUTABLE} - NACP ${EXECUTABLE}.nacp - ICON "${PROJECT_SOURCE_DIR}/res/images/logo_256.jpg" - ) - - if(${PROJECT}_INSTALL) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}.nro" - DESTINATION "." - ) - endif() -endif() +re3_platform_target(${EXECUTABLE} INSTALL) From a7b38e1b34210c9c78c16a32140ba40e47152fa8 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Mon, 12 Jul 2021 20:58:34 +0200 Subject: [PATCH 235/314] Save current usable memory for Switch application --- src/skel/glfw/glfw.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 767d1bbd..6d4cade9 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -560,14 +560,15 @@ psInitialize(void) _dwMemAvailPhys = (uint64_t)(vm_stat.free_count * page_size); debug("Physical memory size %llu\n", _dwMemAvailPhys); debug("Available physical memory %llu\n", size); +#elif defined (__SWITCH__) + svcGetInfo(&_dwMemAvailPhys, 7, 0xffff8001, 0); + debug("Physical memory size %llu\n", _dwMemAvailPhys); #else -#ifndef __SWITCH__ struct sysinfo systemInfo; sysinfo(&systemInfo); _dwMemAvailPhys = systemInfo.freeram; debug("Physical memory size %u\n", systemInfo.totalram); debug("Available physical memory %u\n", systemInfo.freeram); -#endif #endif TheText.Unload(); From 207378c94716f8c97600f39f63dff526de293a50 Mon Sep 17 00:00:00 2001 From: Adrian Graber Date: Tue, 13 Jul 2021 00:41:56 +0200 Subject: [PATCH 236/314] Use svcGetInfo definitions from libnx Co-authored-by: Anonymous Maarten --- src/skel/glfw/glfw.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 6d4cade9..2282a040 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -561,7 +561,7 @@ psInitialize(void) debug("Physical memory size %llu\n", _dwMemAvailPhys); debug("Available physical memory %llu\n", size); #elif defined (__SWITCH__) - svcGetInfo(&_dwMemAvailPhys, 7, 0xffff8001, 0); + svcGetInfo(&_dwMemAvailPhys, InfoType_UsedMemorySize, CUR_PROCESS_HANDLE, 0); debug("Physical memory size %llu\n", _dwMemAvailPhys); #else struct sysinfo systemInfo; From 894495689f860631fa2f084769473296281a0d85 Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Mon, 12 Jul 2021 23:51:28 -0700 Subject: [PATCH 237/314] Fix NearPed count going negative --- src/peds/Ped.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 4d80cac2..90aebf89 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -326,6 +326,7 @@ CPed::~CPed(void) nearPed->m_nearPeds[k] = nearPed->m_nearPeds[k + 1]; nearPed->m_nearPeds[k + 1] = nil; } + nearPed->m_nearPeds[ARRAY_SIZE(m_nearPeds) - 1] = nil; nearPed->m_numNearPeds--; } else j++; From 4f78733836bf29b7f16d087c0494110e9d96f0a3 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 15 Jul 2021 00:47:11 +0300 Subject: [PATCH 238/314] Remove stupid cast --- src/core/Fire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp index 984b21bb..8b184622 100644 --- a/src/core/Fire.cpp +++ b/src/core/Fire.cpp @@ -396,7 +396,7 @@ CFireManager::StartScriptFire(const CVector &pos, CEntity *target, float strengt if (target) { if (target->IsPed()) { ped->m_pFire = fire; - if (target != (CVehicle *)FindPlayerPed()) { + if (target != FindPlayerPed()) { CVector2D pos = target->GetPosition(); ped->SetFlee(pos, 10000); ped->SetMoveAnim(); From 2ce36a48b92a21b88a59d08856751d9adc7a062f Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 14 Jul 2021 23:07:47 +0300 Subject: [PATCH 239/314] Make PS2 VB files work together with PC audio files --- src/audio/sampman.h | 110 ++++++++++++++++++++++++++++-- src/audio/sampman_miles.cpp | 132 +++++++++++++++++++++++++++++------- src/audio/sampman_oal.cpp | 39 ++++++----- src/core/config.h | 2 +- 4 files changed, 238 insertions(+), 45 deletions(-) diff --git a/src/audio/sampman.h b/src/audio/sampman.h index d1ad9a26..dc95622b 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -259,8 +259,8 @@ static char StreamedNameTable[][25] = { "AUDIO\\door_2.OPUS", "AUDIO\\door_3.OPUS", "AUDIO\\door_4.OPUS", "AUDIO\\door_5.OPUS", "AUDIO\\door_6.OPUS", "AUDIO\\t3_a.OPUS", "AUDIO\\t3_b.OPUS", "AUDIO\\t3_c.OPUS", "AUDIO\\k1_b.OPUS", "AUDIO\\cat1.OPUS"}; #else -#if defined(PS2_AUDIO_PATHS) -static char StreamedNameTable[][25]= +#ifdef PS2_AUDIO_PATHS +static char PS2StreamedNameTable[][25]= { "AUDIO\\MUSIC\\HEAD.VB", "AUDIO\\MUSIC\\CLASS.VB", @@ -357,7 +357,110 @@ static char StreamedNameTable[][25]= "AUDIO\\PHONE\\MT_PH4.VB", "AUDIO\\MUSIC\\MISCOM.VB", "AUDIO\\MUSIC\\END.VB", -#else + "AUDIO\\lib_a1.WAV", + "AUDIO\\lib_a2.WAV", + "AUDIO\\lib_a.WAV", + "AUDIO\\lib_b.WAV", + "AUDIO\\lib_c.WAV", + "AUDIO\\lib_d.WAV", + "AUDIO\\l2_a.WAV", + "AUDIO\\j4t_1.WAV", + "AUDIO\\j4t_2.WAV", + "AUDIO\\j4t_3.WAV", + "AUDIO\\j4t_4.WAV", + "AUDIO\\j4_a.WAV", + "AUDIO\\j4_b.WAV", + "AUDIO\\j4_c.WAV", + "AUDIO\\j4_d.WAV", + "AUDIO\\j4_e.WAV", + "AUDIO\\j4_f.WAV", + "AUDIO\\j6_1.WAV", + "AUDIO\\j6_a.WAV", + "AUDIO\\j6_b.WAV", + "AUDIO\\j6_c.WAV", + "AUDIO\\j6_d.WAV", + "AUDIO\\t4_a.WAV", + "AUDIO\\s1_a.WAV", + "AUDIO\\s1_a1.WAV", + "AUDIO\\s1_b.WAV", + "AUDIO\\s1_c.WAV", + "AUDIO\\s1_c1.WAV", + "AUDIO\\s1_d.WAV", + "AUDIO\\s1_e.WAV", + "AUDIO\\s1_f.WAV", + "AUDIO\\s1_g.WAV", + "AUDIO\\s1_h.WAV", + "AUDIO\\s1_i.WAV", + "AUDIO\\s1_j.WAV", + "AUDIO\\s1_k.WAV", + "AUDIO\\s1_l.WAV", + "AUDIO\\s3_a.WAV", + "AUDIO\\s3_b.WAV", + "AUDIO\\el3_a.WAV", + "AUDIO\\mf1_a.WAV", + "AUDIO\\mf2_a.WAV", + "AUDIO\\mf3_a.WAV", + "AUDIO\\mf3_b.WAV", + "AUDIO\\mf3_b1.WAV", + "AUDIO\\mf3_c.WAV", + "AUDIO\\mf4_a.WAV", + "AUDIO\\mf4_b.WAV", + "AUDIO\\mf4_c.WAV", + "AUDIO\\a1_a.WAV", + "AUDIO\\a3_a.WAV", + "AUDIO\\a5_a.WAV", + "AUDIO\\a4_a.WAV", + "AUDIO\\a4_b.WAV", + "AUDIO\\a4_c.WAV", + "AUDIO\\a4_d.WAV", + "AUDIO\\k1_a.WAV", + "AUDIO\\k3_a.WAV", + "AUDIO\\r1_a.WAV", + "AUDIO\\r2_a.WAV", + "AUDIO\\r2_b.WAV", + "AUDIO\\r2_c.WAV", + "AUDIO\\r2_d.WAV", + "AUDIO\\r2_e.WAV", + "AUDIO\\r2_f.WAV", + "AUDIO\\r2_g.WAV", + "AUDIO\\r2_h.WAV", + "AUDIO\\r5_a.WAV", + "AUDIO\\r6_a.WAV", + "AUDIO\\r6_a1.WAV", + "AUDIO\\r6_b.WAV", + "AUDIO\\lo2_a.WAV", + "AUDIO\\lo6_a.WAV", + "AUDIO\\yd2_a.WAV", + "AUDIO\\yd2_b.WAV", + "AUDIO\\yd2_c.WAV", + "AUDIO\\yd2_c1.WAV", + "AUDIO\\yd2_d.WAV", + "AUDIO\\yd2_e.WAV", + "AUDIO\\yd2_f.WAV", + "AUDIO\\yd2_g.WAV", + "AUDIO\\yd2_h.WAV", + "AUDIO\\yd2_ass.WAV", + "AUDIO\\yd2_ok.WAV", + "AUDIO\\h5_a.WAV", + "AUDIO\\h5_b.WAV", + "AUDIO\\h5_c.WAV", + "AUDIO\\ammu_a.WAV", + "AUDIO\\ammu_b.WAV", + "AUDIO\\ammu_c.WAV", + "AUDIO\\door_1.WAV", + "AUDIO\\door_2.WAV", + "AUDIO\\door_3.WAV", + "AUDIO\\door_4.WAV", + "AUDIO\\door_5.WAV", + "AUDIO\\door_6.WAV", + "AUDIO\\t3_a.WAV", + "AUDIO\\t3_b.WAV", + "AUDIO\\t3_c.WAV", + "AUDIO\\k1_b.WAV", + "AUDIO\\cat1.WAV" +}; +#endif + static char StreamedNameTable[][25] = { "AUDIO\\HEAD.WAV", @@ -455,7 +558,6 @@ static char StreamedNameTable[][25] = "AUDIO\\MT_PH4.MP3", "AUDIO\\MISCOM.WAV", "AUDIO\\END.MP3", -#endif "AUDIO\\lib_a1.WAV", "AUDIO\\lib_a2.WAV", "AUDIO\\lib_a.WAV", diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index e820864c..d529513d 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -992,11 +992,20 @@ cSampleManager::Initialise(void) if ( GetDriveType(m_szCDRomRootPath) == DRIVE_CDROM ) { + FILE *f; +#ifdef PS2_AUDIO_PATHS strcpy(filepath, m_szCDRomRootPath); - strcat(filepath, StreamedNameTable[0]); - - FILE *f = fopen(filepath, "rb"); + strcat(filepath, PS2StreamedNameTable[0]); + f = fopen(filepath, "rb"); + + if ( !f ) +#endif + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[0]); + f = fopen(filepath, "rb"); + } if ( f ) { fclose(f); @@ -1005,11 +1014,20 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { +#ifdef PS2_AUDIO_PATHS strcpy(filepath, m_szCDRomRootPath); - strcat(filepath, StreamedNameTable[i]); - + strcat(filepath, PS2StreamedNameTable[i]); + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); - + if ( !mp3Stream[0] ) +#endif + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[i]); + + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); + } + if ( mp3Stream[0] ) { AIL_stream_ms_position(mp3Stream[0], &tatalms, NULL); @@ -1078,7 +1096,14 @@ cSampleManager::Initialise(void) strcpy(_aHDDPath, m_szCDRomRootPath); rootpath[0] = '\0'; - FILE *f = fopen(StreamedNameTable[0], "rb"); + FILE *f; + +#ifdef PS2_AUDIO_PATHS + f = fopen(PS2StreamedNameTable[0], "rb"); + if (!f) +#endif + + f = fopen(StreamedNameTable[0], "rb"); if ( f ) { @@ -1086,11 +1111,20 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { +#ifdef PS2_AUDIO_PATHS strcpy(filepath, rootpath); - strcat(filepath, StreamedNameTable[i]); - + strcat(filepath, PS2StreamedNameTable[i]); + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); - + if ( !mp3Stream[0] ) +#endif + { + strcpy(filepath, rootpath); + strcat(filepath, StreamedNameTable[i]); + + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); + } + if ( mp3Stream[0] ) { AIL_stream_ms_position(mp3Stream[0], &tatalms, NULL); @@ -1299,9 +1333,11 @@ cSampleManager::CheckForAnAudioFileOnCD(void) { #if GTA_VERSION < GTA3_PC_STEAM && !defined(NO_CDCHECK) char filepath[MAX_PATH]; + FILE *f; +#ifdef PS2_AUDIO_PATHS #if GTA_VERSION >= GTA3_PC_11 - if (_bUseHDDAudio) + if(_bUseHDDAudio) strcpy(filepath, _aHDDPath); else strcpy(filepath, m_szCDRomRootPath); @@ -1309,10 +1345,25 @@ cSampleManager::CheckForAnAudioFileOnCD(void) strcpy(filepath, m_szCDRomRootPath); #endif // #if GTA_VERSION >= GTA3_PC_11 - strcat(filepath, StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); - - FILE *f = fopen(filepath, "rb"); + strcat(filepath, PS2StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); + + f = fopen(filepath, "rb"); + if ( !f ) +#endif // PS2_AUDIO_PATHS + { +#if GTA_VERSION >= GTA3_PC_11 + if (_bUseHDDAudio) + strcpy(filepath, _aHDDPath); + else + strcpy(filepath, m_szCDRomRootPath); +#else + strcpy(filepath, m_szCDRomRootPath); +#endif // #if GTA_VERSION >= GTA3_PC_11 + + strcat(filepath, StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); + f = fopen(filepath, "rb"); + } if ( f ) { fclose(f); @@ -2007,11 +2058,19 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) } char filepath[MAX_PATH]; - +#ifdef PS2_AUDIO_PATHS strcpy(filepath, m_szCDRomRootPath); - strcat(filepath, StreamedNameTable[nFile]); - + strcat(filepath, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0); + } if ( mp3Stream[nStream] ) { @@ -2073,10 +2132,19 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Try to continue from previous song, if already started if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { nFile = 0; +#ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); @@ -2120,10 +2188,19 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { nFile = 0; _bIsMp3Active = 0; +#ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); @@ -2161,10 +2238,19 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) position = 0; nFile = 0; } +#ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index fdd449f7..2d9f9e86 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -894,7 +894,11 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { - if ( aStream[0] && aStream[0]->Open(StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000) ) + if(aStream[0] && ( +#ifdef PS2_AUDIO_PATHS + aStream[0]->Open(PS2StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000) || +#endif + aStream[0]->Open(StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000))) { uint32 tatalms = aStream[0]->GetLengthMS(); aStream[0]->Close(); @@ -1601,8 +1605,6 @@ cSampleManager::StopChannel(uint32 nChannel) void cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) { - char filename[MAX_PATH]; - ASSERT( nStream < MAX_STREAMS ); if ( nFile < TOTAL_STREAMED_SOUNDS ) @@ -1611,9 +1613,10 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) stream->Close(); - strcpy(filename, StreamedNameTable[nFile]); - - stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( !stream->Setup() ) { stream->Close(); @@ -1673,10 +1676,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Try to continue from previous song, if already started if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { nFile = 0; - strcpy(filename, StreamedNameTable[nFile]); - CStream *stream = aStream[nStream]; - stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( stream->Setup() ) { if (position != 0) stream->SetPosMS(position); @@ -1725,10 +1729,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { nFile = 0; _bIsMp3Active = 0; - strcpy(filename, StreamedNameTable[nFile]); - - CStream* stream = aStream[nStream]; - stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + CStream *stream = aStream[nStream]; +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if (stream->Setup()) { if (position != 0) @@ -1768,11 +1773,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) position = 0; nFile = 0; } - strcpy(filename, StreamedNameTable[nFile]); - CStream *stream = aStream[nStream]; - - aStream[nStream]->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( stream->Setup() ) { if (position != 0) diff --git a/src/core/config.h b/src/core/config.h index 885f98b8..8f5cfb3d 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -420,7 +420,7 @@ enum Config { #define RADIO_SCROLL_TO_PREV_STATION #define AUDIO_CACHE #define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 44 (PC has 28 originally) -//#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) +#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) //#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder #define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files #define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused From d0404cbdb77bd82abf578ce28093990db94743f2 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 15 Jul 2021 18:19:32 +0300 Subject: [PATCH 240/314] render -> renderer (original name) --- .vscode/settings.json | 2 +- codewarrior/re3.mcp.xml | 6 +++--- premake5.lua | 4 ++-- src/{render => renderer}/2dEffect.h | 0 src/{render => renderer}/Antennas.cpp | 0 src/{render => renderer}/Antennas.h | 0 src/{render => renderer}/Clouds.cpp | 0 src/{render => renderer}/Clouds.h | 0 src/{render => renderer}/Console.cpp | 0 src/{render => renderer}/Console.h | 0 src/{render => renderer}/Coronas.cpp | 0 src/{render => renderer}/Coronas.h | 0 src/{render => renderer}/Credits.cpp | 0 src/{render => renderer}/Credits.h | 0 src/{render => renderer}/Draw.cpp | 0 src/{render => renderer}/Draw.h | 0 src/{render => renderer}/Fluff.cpp | 0 src/{render => renderer}/Fluff.h | 0 src/{render => renderer}/Font.cpp | 0 src/{render => renderer}/Font.h | 0 src/{render => renderer}/Glass.cpp | 0 src/{render => renderer}/Glass.h | 0 src/{render => renderer}/Hud.cpp | 0 src/{render => renderer}/Hud.h | 0 src/{render => renderer}/Instance.cpp | 0 src/{render => renderer}/Instance.h | 0 src/{render => renderer}/Lines.cpp | 0 src/{render => renderer}/Lines.h | 0 src/{render => renderer}/MBlur.cpp | 0 src/{render => renderer}/MBlur.h | 0 src/{render => renderer}/Particle.cpp | 0 src/{render => renderer}/Particle.h | 0 src/{render => renderer}/ParticleMgr.cpp | 0 src/{render => renderer}/ParticleMgr.h | 0 src/{render => renderer}/ParticleType.h | 0 src/{render => renderer}/PlayerSkin.cpp | 0 src/{render => renderer}/PlayerSkin.h | 0 src/{render => renderer}/PointLights.cpp | 0 src/{render => renderer}/PointLights.h | 0 src/{render => renderer}/RenderBuffer.cpp | 0 src/{render => renderer}/RenderBuffer.h | 0 src/{render => renderer}/Renderer.cpp | 0 src/{render => renderer}/Renderer.h | 0 src/{render => renderer}/Rubbish.cpp | 0 src/{render => renderer}/Rubbish.h | 0 src/{render => renderer}/Shadows.cpp | 0 src/{render => renderer}/Shadows.h | 0 src/{render => renderer}/Skidmarks.cpp | 0 src/{render => renderer}/Skidmarks.h | 0 src/{render => renderer}/SpecialFX.cpp | 0 src/{render => renderer}/SpecialFX.h | 0 src/{render => renderer}/Sprite.cpp | 0 src/{render => renderer}/Sprite.h | 0 src/{render => renderer}/Sprite2d.cpp | 0 src/{render => renderer}/Sprite2d.h | 0 src/{render => renderer}/TexList.cpp | 0 src/{render => renderer}/TexList.h | 0 src/{render => renderer}/Timecycle.cpp | 0 src/{render => renderer}/Timecycle.h | 0 src/{render => renderer}/WaterCannon.cpp | 0 src/{render => renderer}/WaterCannon.h | 0 src/{render => renderer}/WaterLevel.cpp | 0 src/{render => renderer}/WaterLevel.h | 0 src/{render => renderer}/Weather.cpp | 0 src/{render => renderer}/Weather.h | 0 65 files changed, 6 insertions(+), 6 deletions(-) rename src/{render => renderer}/2dEffect.h (100%) rename src/{render => renderer}/Antennas.cpp (100%) rename src/{render => renderer}/Antennas.h (100%) rename src/{render => renderer}/Clouds.cpp (100%) rename src/{render => renderer}/Clouds.h (100%) rename src/{render => renderer}/Console.cpp (100%) rename src/{render => renderer}/Console.h (100%) rename src/{render => renderer}/Coronas.cpp (100%) rename src/{render => renderer}/Coronas.h (100%) rename src/{render => renderer}/Credits.cpp (100%) rename src/{render => renderer}/Credits.h (100%) rename src/{render => renderer}/Draw.cpp (100%) rename src/{render => renderer}/Draw.h (100%) rename src/{render => renderer}/Fluff.cpp (100%) rename src/{render => renderer}/Fluff.h (100%) rename src/{render => renderer}/Font.cpp (100%) rename src/{render => renderer}/Font.h (100%) rename src/{render => renderer}/Glass.cpp (100%) rename src/{render => renderer}/Glass.h (100%) rename src/{render => renderer}/Hud.cpp (100%) rename src/{render => renderer}/Hud.h (100%) rename src/{render => renderer}/Instance.cpp (100%) rename src/{render => renderer}/Instance.h (100%) rename src/{render => renderer}/Lines.cpp (100%) rename src/{render => renderer}/Lines.h (100%) rename src/{render => renderer}/MBlur.cpp (100%) rename src/{render => renderer}/MBlur.h (100%) rename src/{render => renderer}/Particle.cpp (100%) rename src/{render => renderer}/Particle.h (100%) rename src/{render => renderer}/ParticleMgr.cpp (100%) rename src/{render => renderer}/ParticleMgr.h (100%) rename src/{render => renderer}/ParticleType.h (100%) rename src/{render => renderer}/PlayerSkin.cpp (100%) rename src/{render => renderer}/PlayerSkin.h (100%) rename src/{render => renderer}/PointLights.cpp (100%) rename src/{render => renderer}/PointLights.h (100%) rename src/{render => renderer}/RenderBuffer.cpp (100%) rename src/{render => renderer}/RenderBuffer.h (100%) rename src/{render => renderer}/Renderer.cpp (100%) rename src/{render => renderer}/Renderer.h (100%) rename src/{render => renderer}/Rubbish.cpp (100%) rename src/{render => renderer}/Rubbish.h (100%) rename src/{render => renderer}/Shadows.cpp (100%) rename src/{render => renderer}/Shadows.h (100%) rename src/{render => renderer}/Skidmarks.cpp (100%) rename src/{render => renderer}/Skidmarks.h (100%) rename src/{render => renderer}/SpecialFX.cpp (100%) rename src/{render => renderer}/SpecialFX.h (100%) rename src/{render => renderer}/Sprite.cpp (100%) rename src/{render => renderer}/Sprite.h (100%) rename src/{render => renderer}/Sprite2d.cpp (100%) rename src/{render => renderer}/Sprite2d.h (100%) rename src/{render => renderer}/TexList.cpp (100%) rename src/{render => renderer}/TexList.h (100%) rename src/{render => renderer}/Timecycle.cpp (100%) rename src/{render => renderer}/Timecycle.h (100%) rename src/{render => renderer}/WaterCannon.cpp (100%) rename src/{render => renderer}/WaterCannon.h (100%) rename src/{render => renderer}/WaterLevel.cpp (100%) rename src/{render => renderer}/WaterLevel.h (100%) rename src/{render => renderer}/Weather.cpp (100%) rename src/{render => renderer}/Weather.h (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 10cb5627..fee80960 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,7 +13,7 @@ "src/modelinfo", "src/objects", "src/peds", - "src/render", + "src/renderer", "src/rw", "src/save", "src/skel", diff --git a/codewarrior/re3.mcp.xml b/codewarrior/re3.mcp.xml index b18e2bcc..ca20ec2a 100644 --- a/codewarrior/re3.mcp.xml +++ b/codewarrior/re3.mcp.xml @@ -187,7 +187,7 @@ SearchPath - Path..\src\render + Path..\src\renderer PathFormatWindows PathRootProject @@ -6424,7 +6424,7 @@ SearchPath - Path..\src\render + Path..\src\renderer PathFormatWindows PathRootProject @@ -14281,7 +14281,7 @@ Windows - render + renderer Debug Name diff --git a/premake5.lua b/premake5.lua index 0a8faa07..25090dc6 100644 --- a/premake5.lua +++ b/premake5.lua @@ -264,7 +264,7 @@ project "re3" files { addSrcFiles("src/modelinfo") } files { addSrcFiles("src/objects") } files { addSrcFiles("src/peds") } - files { addSrcFiles("src/render") } + files { addSrcFiles("src/renderer") } files { addSrcFiles("src/rw") } files { addSrcFiles("src/save") } files { addSrcFiles("src/skel") } @@ -293,7 +293,7 @@ project "re3" includedirs { "src/modelinfo" } includedirs { "src/objects" } includedirs { "src/peds" } - includedirs { "src/render" } + includedirs { "src/renderer" } includedirs { "src/rw" } includedirs { "src/save/" } includedirs { "src/skel/" } diff --git a/src/render/2dEffect.h b/src/renderer/2dEffect.h similarity index 100% rename from src/render/2dEffect.h rename to src/renderer/2dEffect.h diff --git a/src/render/Antennas.cpp b/src/renderer/Antennas.cpp similarity index 100% rename from src/render/Antennas.cpp rename to src/renderer/Antennas.cpp diff --git a/src/render/Antennas.h b/src/renderer/Antennas.h similarity index 100% rename from src/render/Antennas.h rename to src/renderer/Antennas.h diff --git a/src/render/Clouds.cpp b/src/renderer/Clouds.cpp similarity index 100% rename from src/render/Clouds.cpp rename to src/renderer/Clouds.cpp diff --git a/src/render/Clouds.h b/src/renderer/Clouds.h similarity index 100% rename from src/render/Clouds.h rename to src/renderer/Clouds.h diff --git a/src/render/Console.cpp b/src/renderer/Console.cpp similarity index 100% rename from src/render/Console.cpp rename to src/renderer/Console.cpp diff --git a/src/render/Console.h b/src/renderer/Console.h similarity index 100% rename from src/render/Console.h rename to src/renderer/Console.h diff --git a/src/render/Coronas.cpp b/src/renderer/Coronas.cpp similarity index 100% rename from src/render/Coronas.cpp rename to src/renderer/Coronas.cpp diff --git a/src/render/Coronas.h b/src/renderer/Coronas.h similarity index 100% rename from src/render/Coronas.h rename to src/renderer/Coronas.h diff --git a/src/render/Credits.cpp b/src/renderer/Credits.cpp similarity index 100% rename from src/render/Credits.cpp rename to src/renderer/Credits.cpp diff --git a/src/render/Credits.h b/src/renderer/Credits.h similarity index 100% rename from src/render/Credits.h rename to src/renderer/Credits.h diff --git a/src/render/Draw.cpp b/src/renderer/Draw.cpp similarity index 100% rename from src/render/Draw.cpp rename to src/renderer/Draw.cpp diff --git a/src/render/Draw.h b/src/renderer/Draw.h similarity index 100% rename from src/render/Draw.h rename to src/renderer/Draw.h diff --git a/src/render/Fluff.cpp b/src/renderer/Fluff.cpp similarity index 100% rename from src/render/Fluff.cpp rename to src/renderer/Fluff.cpp diff --git a/src/render/Fluff.h b/src/renderer/Fluff.h similarity index 100% rename from src/render/Fluff.h rename to src/renderer/Fluff.h diff --git a/src/render/Font.cpp b/src/renderer/Font.cpp similarity index 100% rename from src/render/Font.cpp rename to src/renderer/Font.cpp diff --git a/src/render/Font.h b/src/renderer/Font.h similarity index 100% rename from src/render/Font.h rename to src/renderer/Font.h diff --git a/src/render/Glass.cpp b/src/renderer/Glass.cpp similarity index 100% rename from src/render/Glass.cpp rename to src/renderer/Glass.cpp diff --git a/src/render/Glass.h b/src/renderer/Glass.h similarity index 100% rename from src/render/Glass.h rename to src/renderer/Glass.h diff --git a/src/render/Hud.cpp b/src/renderer/Hud.cpp similarity index 100% rename from src/render/Hud.cpp rename to src/renderer/Hud.cpp diff --git a/src/render/Hud.h b/src/renderer/Hud.h similarity index 100% rename from src/render/Hud.h rename to src/renderer/Hud.h diff --git a/src/render/Instance.cpp b/src/renderer/Instance.cpp similarity index 100% rename from src/render/Instance.cpp rename to src/renderer/Instance.cpp diff --git a/src/render/Instance.h b/src/renderer/Instance.h similarity index 100% rename from src/render/Instance.h rename to src/renderer/Instance.h diff --git a/src/render/Lines.cpp b/src/renderer/Lines.cpp similarity index 100% rename from src/render/Lines.cpp rename to src/renderer/Lines.cpp diff --git a/src/render/Lines.h b/src/renderer/Lines.h similarity index 100% rename from src/render/Lines.h rename to src/renderer/Lines.h diff --git a/src/render/MBlur.cpp b/src/renderer/MBlur.cpp similarity index 100% rename from src/render/MBlur.cpp rename to src/renderer/MBlur.cpp diff --git a/src/render/MBlur.h b/src/renderer/MBlur.h similarity index 100% rename from src/render/MBlur.h rename to src/renderer/MBlur.h diff --git a/src/render/Particle.cpp b/src/renderer/Particle.cpp similarity index 100% rename from src/render/Particle.cpp rename to src/renderer/Particle.cpp diff --git a/src/render/Particle.h b/src/renderer/Particle.h similarity index 100% rename from src/render/Particle.h rename to src/renderer/Particle.h diff --git a/src/render/ParticleMgr.cpp b/src/renderer/ParticleMgr.cpp similarity index 100% rename from src/render/ParticleMgr.cpp rename to src/renderer/ParticleMgr.cpp diff --git a/src/render/ParticleMgr.h b/src/renderer/ParticleMgr.h similarity index 100% rename from src/render/ParticleMgr.h rename to src/renderer/ParticleMgr.h diff --git a/src/render/ParticleType.h b/src/renderer/ParticleType.h similarity index 100% rename from src/render/ParticleType.h rename to src/renderer/ParticleType.h diff --git a/src/render/PlayerSkin.cpp b/src/renderer/PlayerSkin.cpp similarity index 100% rename from src/render/PlayerSkin.cpp rename to src/renderer/PlayerSkin.cpp diff --git a/src/render/PlayerSkin.h b/src/renderer/PlayerSkin.h similarity index 100% rename from src/render/PlayerSkin.h rename to src/renderer/PlayerSkin.h diff --git a/src/render/PointLights.cpp b/src/renderer/PointLights.cpp similarity index 100% rename from src/render/PointLights.cpp rename to src/renderer/PointLights.cpp diff --git a/src/render/PointLights.h b/src/renderer/PointLights.h similarity index 100% rename from src/render/PointLights.h rename to src/renderer/PointLights.h diff --git a/src/render/RenderBuffer.cpp b/src/renderer/RenderBuffer.cpp similarity index 100% rename from src/render/RenderBuffer.cpp rename to src/renderer/RenderBuffer.cpp diff --git a/src/render/RenderBuffer.h b/src/renderer/RenderBuffer.h similarity index 100% rename from src/render/RenderBuffer.h rename to src/renderer/RenderBuffer.h diff --git a/src/render/Renderer.cpp b/src/renderer/Renderer.cpp similarity index 100% rename from src/render/Renderer.cpp rename to src/renderer/Renderer.cpp diff --git a/src/render/Renderer.h b/src/renderer/Renderer.h similarity index 100% rename from src/render/Renderer.h rename to src/renderer/Renderer.h diff --git a/src/render/Rubbish.cpp b/src/renderer/Rubbish.cpp similarity index 100% rename from src/render/Rubbish.cpp rename to src/renderer/Rubbish.cpp diff --git a/src/render/Rubbish.h b/src/renderer/Rubbish.h similarity index 100% rename from src/render/Rubbish.h rename to src/renderer/Rubbish.h diff --git a/src/render/Shadows.cpp b/src/renderer/Shadows.cpp similarity index 100% rename from src/render/Shadows.cpp rename to src/renderer/Shadows.cpp diff --git a/src/render/Shadows.h b/src/renderer/Shadows.h similarity index 100% rename from src/render/Shadows.h rename to src/renderer/Shadows.h diff --git a/src/render/Skidmarks.cpp b/src/renderer/Skidmarks.cpp similarity index 100% rename from src/render/Skidmarks.cpp rename to src/renderer/Skidmarks.cpp diff --git a/src/render/Skidmarks.h b/src/renderer/Skidmarks.h similarity index 100% rename from src/render/Skidmarks.h rename to src/renderer/Skidmarks.h diff --git a/src/render/SpecialFX.cpp b/src/renderer/SpecialFX.cpp similarity index 100% rename from src/render/SpecialFX.cpp rename to src/renderer/SpecialFX.cpp diff --git a/src/render/SpecialFX.h b/src/renderer/SpecialFX.h similarity index 100% rename from src/render/SpecialFX.h rename to src/renderer/SpecialFX.h diff --git a/src/render/Sprite.cpp b/src/renderer/Sprite.cpp similarity index 100% rename from src/render/Sprite.cpp rename to src/renderer/Sprite.cpp diff --git a/src/render/Sprite.h b/src/renderer/Sprite.h similarity index 100% rename from src/render/Sprite.h rename to src/renderer/Sprite.h diff --git a/src/render/Sprite2d.cpp b/src/renderer/Sprite2d.cpp similarity index 100% rename from src/render/Sprite2d.cpp rename to src/renderer/Sprite2d.cpp diff --git a/src/render/Sprite2d.h b/src/renderer/Sprite2d.h similarity index 100% rename from src/render/Sprite2d.h rename to src/renderer/Sprite2d.h diff --git a/src/render/TexList.cpp b/src/renderer/TexList.cpp similarity index 100% rename from src/render/TexList.cpp rename to src/renderer/TexList.cpp diff --git a/src/render/TexList.h b/src/renderer/TexList.h similarity index 100% rename from src/render/TexList.h rename to src/renderer/TexList.h diff --git a/src/render/Timecycle.cpp b/src/renderer/Timecycle.cpp similarity index 100% rename from src/render/Timecycle.cpp rename to src/renderer/Timecycle.cpp diff --git a/src/render/Timecycle.h b/src/renderer/Timecycle.h similarity index 100% rename from src/render/Timecycle.h rename to src/renderer/Timecycle.h diff --git a/src/render/WaterCannon.cpp b/src/renderer/WaterCannon.cpp similarity index 100% rename from src/render/WaterCannon.cpp rename to src/renderer/WaterCannon.cpp diff --git a/src/render/WaterCannon.h b/src/renderer/WaterCannon.h similarity index 100% rename from src/render/WaterCannon.h rename to src/renderer/WaterCannon.h diff --git a/src/render/WaterLevel.cpp b/src/renderer/WaterLevel.cpp similarity index 100% rename from src/render/WaterLevel.cpp rename to src/renderer/WaterLevel.cpp diff --git a/src/render/WaterLevel.h b/src/renderer/WaterLevel.h similarity index 100% rename from src/render/WaterLevel.h rename to src/renderer/WaterLevel.h diff --git a/src/render/Weather.cpp b/src/renderer/Weather.cpp similarity index 100% rename from src/render/Weather.cpp rename to src/renderer/Weather.cpp diff --git a/src/render/Weather.h b/src/renderer/Weather.h similarity index 100% rename from src/render/Weather.h rename to src/renderer/Weather.h From a437d2bc2611166b9dbbe3072cea9f9307b98838 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 19 Jul 2021 23:39:19 +0200 Subject: [PATCH 241/314] fix garbage data written in garage save block --- src/control/Garages.cpp | 3 +++ src/core/config.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 91971ae7..245e961d 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -2305,6 +2305,9 @@ void CGarages::Save(uint8 * buf, uint32 * size) *size = (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)); #else * size = 5484; +#endif +#if !defined THIS_IS_STUPID && !defined FIX_GARAGE_SIZE && defined COMPATIBLE_SAVES + memset(buf + 5240, 0, *size - 5240); // garbage data is written otherwise #endif CloseHideOutGaragesBeforeSave(); WriteSaveBuf(buf, NumGarages); diff --git a/src/core/config.h b/src/core/config.h index 8f5cfb3d..f0960e44 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -259,7 +259,7 @@ enum Config { #define FIX_BUGS // fixes bugs that we've came across during reversing. You can undefine this only on release builds. #define MORE_LANGUAGES // Add more translations to the game -#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible, and keeps saves compatible between platforms +#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible, and keeps saves compatible between platforms, needs to be enabled on 64bit builds! #define FIX_INCOMPATIBLE_SAVES // try to fix incompatible saves, requires COMPATIBLE_SAVES #define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS From 1d1f10d68ce464f09808760c1c693f111406e5dd Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 22 Jul 2021 20:56:15 +0300 Subject: [PATCH 242/314] Fixes from miami --- src/peds/Ped.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 9be58d11..8d0fbbe8 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2474,12 +2474,12 @@ CPed::ProcessControl(void) obstacleForFlyingOtherDirZ = 501.0f; } #ifdef VC_PED_PORTS - uint8 flyDir = 0; + int16 flyDir = 0; float feetZ = GetPosition().z - FEET_OFFSET; #ifdef FIX_BUGS - if (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f) + if (obstacleForFlyingZ > feetZ && obstacleForFlyingZ < 500.0f) flyDir = 1; - else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 500.0f) + else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f) flyDir = 2; #else if ((obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 500.0f) || (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ > feetZ)) @@ -2488,8 +2488,8 @@ CPed::ProcessControl(void) flyDir = 2; #endif - if (flyDir != 0 && !bSomeVCflag1) { - SetPosition((flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point)); + if (flyDir > 0 && !bSomeVCflag1) { + GetMatrix().SetTranslateOnly((flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point)); GetMatrix().GetPosition().z += FEET_OFFSET; GetMatrix().UpdateRW(); SetLanding(); @@ -3188,7 +3188,7 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints) lowerSpeedLimit *= 1.5f; } CAnimBlendAssociation *fallAnim = RpAnimBlendClumpGetAssociation(GetClump(), ANIM_STD_FALL); - if (!bWasStanding && speed > upperSpeedLimit && (/*!bPushedAlongByCar ||*/ m_vecMoveSpeed.z < lowerSpeedLimit) + if (!bWasStanding && ((speed > upperSpeedLimit /* ||!bPushedAlongByCar*/) || (m_vecMoveSpeed.z < lowerSpeedLimit)) && m_pCollidingEntity != collidingEnt) { float damage = 100.0f * Max(speed - 0.25f, 0.0f); From bd3c3849fea9837fb3b1834c5216f5bab5823d69 Mon Sep 17 00:00:00 2001 From: Davi Date: Wed, 21 Jul 2021 23:13:35 -0300 Subject: [PATCH 243/314] Properly fix blip rendering during scripted sequences Changes conditionals from "DrawBlips" and "ShowRadarTrace", "ShowRadarTraceWithHeight" to allow blips to be rendered during scripted sequences when "MENU_MAP" is enabled. --- src/core/Radar.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 77d6cc7f..e0203355 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -485,7 +485,11 @@ void CRadar::Draw3dMarkers() void CRadar::DrawBlips() { - if (!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) { + if ((!TheCamera.m_WideScreenOn && CHud::m_Wants_To_Draw_Hud) +#ifdef MENU_MAP + || CMenuManager::bMenuMapActive +#endif + ) { RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEZTESTENABLE, (void*)FALSE); RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void*)TRUE); @@ -1216,7 +1220,11 @@ void CRadar::ShowRadarMarker(CVector pos, uint32 color, float radius) { void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha) { - if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn) + if ((TheCamera.m_WideScreenOn || !CHud::m_Wants_To_Draw_Hud) +#ifdef MENU_MAP + && !CMenuManager::bMenuMapActive +#endif + ) return; CSprite2d::DrawRect(CRect(x - SCREEN_SCALE_X(size + 1.0f), y - SCREEN_SCALE_Y(size + 1.0f), SCREEN_SCALE_X(size + 1.0f) + x, SCREEN_SCALE_Y(size + 1.0f) + y), CRGBA(0, 0, 0, alpha)); @@ -1225,7 +1233,11 @@ void CRadar::ShowRadarTrace(float x, float y, uint32 size, uint8 red, uint8 gree void CRadar::ShowRadarTraceWithHeight(float x, float y, uint32 size, uint8 red, uint8 green, uint8 blue, uint8 alpha, uint8 mode) { - if (!CHud::m_Wants_To_Draw_Hud || TheCamera.m_WideScreenOn) + if ((TheCamera.m_WideScreenOn || !CHud::m_Wants_To_Draw_Hud) +#ifdef MENU_MAP + && !CMenuManager::bMenuMapActive +#endif + ) return; switch (mode) From 3adf37a3a94d1a7d2cbef5156b9b17f11b01b551 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 22 Jul 2021 22:54:30 +0300 Subject: [PATCH 244/314] Fix aiming with flamethrower with PC controls --- src/peds/PedFight.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index 46ac369c..13d3930c 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -320,6 +320,14 @@ CPed::SetAttack(CEntity *victim) ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); } } +#ifdef FIX_BUGS + // fix aiming for flamethrower while using PC controls + else if (GetWeapon()->m_eWeaponType == WEAPONTYPE_FLAMETHROWER && TheCamera.Cams[0].Using3rdPersonMouseCam() && this == FindPlayerPed()) + { + SetAimFlag(m_fRotationCur); + ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); + } +#endif if (m_nPedState == PED_ATTACK) { bIsAttacking = true; return; From a7e673c2ec6a5ed25f3bae8caab90e2113158c03 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sat, 24 Jul 2021 00:47:04 +0300 Subject: [PATCH 245/314] sync --- .vscode/settings.json | 2 +- codewarrior/re3.mcp.xml | 6 +- premake5.lua | 4 +- src/audio/sampman.h | 110 +++++++++++++++++- src/audio/sampman_miles.cpp | 132 ++++++++++++++++++---- src/audio/sampman_oal.cpp | 39 ++++--- src/control/Garages.cpp | 3 + src/control/Script.cpp | 28 ++--- src/control/Script.h | 1 + src/control/Script6.cpp | 4 + src/core/Fire.cpp | 2 +- src/core/config.h | 4 +- src/peds/PedFight.cpp | 8 ++ src/{render => renderer}/2dEffect.h | 0 src/{render => renderer}/Antennas.cpp | 0 src/{render => renderer}/Antennas.h | 0 src/{render => renderer}/Clouds.cpp | 0 src/{render => renderer}/Clouds.h | 0 src/{render => renderer}/Console.cpp | 0 src/{render => renderer}/Console.h | 0 src/{render => renderer}/Coronas.cpp | 0 src/{render => renderer}/Coronas.h | 0 src/{render => renderer}/Credits.cpp | 0 src/{render => renderer}/Credits.h | 0 src/{render => renderer}/Draw.cpp | 0 src/{render => renderer}/Draw.h | 0 src/{render => renderer}/Fluff.cpp | 0 src/{render => renderer}/Fluff.h | 0 src/{render => renderer}/Font.cpp | 0 src/{render => renderer}/Font.h | 0 src/{render => renderer}/Glass.cpp | 0 src/{render => renderer}/Glass.h | 0 src/{render => renderer}/Hud.cpp | 0 src/{render => renderer}/Hud.h | 0 src/{render => renderer}/Instance.cpp | 0 src/{render => renderer}/Instance.h | 0 src/{render => renderer}/Lines.cpp | 0 src/{render => renderer}/Lines.h | 0 src/{render => renderer}/MBlur.cpp | 0 src/{render => renderer}/MBlur.h | 0 src/{render => renderer}/Particle.cpp | 0 src/{render => renderer}/Particle.h | 0 src/{render => renderer}/ParticleMgr.cpp | 0 src/{render => renderer}/ParticleMgr.h | 0 src/{render => renderer}/ParticleType.h | 0 src/{render => renderer}/PlayerSkin.cpp | 0 src/{render => renderer}/PlayerSkin.h | 0 src/{render => renderer}/PointLights.cpp | 0 src/{render => renderer}/PointLights.h | 0 src/{render => renderer}/RenderBuffer.cpp | 0 src/{render => renderer}/RenderBuffer.h | 0 src/{render => renderer}/Renderer.cpp | 0 src/{render => renderer}/Renderer.h | 0 src/{render => renderer}/Rubbish.cpp | 0 src/{render => renderer}/Rubbish.h | 0 src/{render => renderer}/Shadows.cpp | 0 src/{render => renderer}/Shadows.h | 0 src/{render => renderer}/Skidmarks.cpp | 0 src/{render => renderer}/Skidmarks.h | 0 src/{render => renderer}/SpecialFX.cpp | 0 src/{render => renderer}/SpecialFX.h | 0 src/{render => renderer}/Sprite.cpp | 0 src/{render => renderer}/Sprite.h | 0 src/{render => renderer}/Sprite2d.cpp | 0 src/{render => renderer}/Sprite2d.h | 0 src/{render => renderer}/TexList.cpp | 0 src/{render => renderer}/TexList.h | 0 src/{render => renderer}/Timecycle.cpp | 0 src/{render => renderer}/Timecycle.h | 0 src/{render => renderer}/WaterCannon.cpp | 0 src/{render => renderer}/WaterCannon.h | 0 src/{render => renderer}/WaterLevel.cpp | 0 src/{render => renderer}/WaterLevel.h | 0 src/{render => renderer}/Weather.cpp | 0 src/{render => renderer}/Weather.h | 0 75 files changed, 277 insertions(+), 66 deletions(-) rename src/{render => renderer}/2dEffect.h (100%) rename src/{render => renderer}/Antennas.cpp (100%) rename src/{render => renderer}/Antennas.h (100%) rename src/{render => renderer}/Clouds.cpp (100%) rename src/{render => renderer}/Clouds.h (100%) rename src/{render => renderer}/Console.cpp (100%) rename src/{render => renderer}/Console.h (100%) rename src/{render => renderer}/Coronas.cpp (100%) rename src/{render => renderer}/Coronas.h (100%) rename src/{render => renderer}/Credits.cpp (100%) rename src/{render => renderer}/Credits.h (100%) rename src/{render => renderer}/Draw.cpp (100%) rename src/{render => renderer}/Draw.h (100%) rename src/{render => renderer}/Fluff.cpp (100%) rename src/{render => renderer}/Fluff.h (100%) rename src/{render => renderer}/Font.cpp (100%) rename src/{render => renderer}/Font.h (100%) rename src/{render => renderer}/Glass.cpp (100%) rename src/{render => renderer}/Glass.h (100%) rename src/{render => renderer}/Hud.cpp (100%) rename src/{render => renderer}/Hud.h (100%) rename src/{render => renderer}/Instance.cpp (100%) rename src/{render => renderer}/Instance.h (100%) rename src/{render => renderer}/Lines.cpp (100%) rename src/{render => renderer}/Lines.h (100%) rename src/{render => renderer}/MBlur.cpp (100%) rename src/{render => renderer}/MBlur.h (100%) rename src/{render => renderer}/Particle.cpp (100%) rename src/{render => renderer}/Particle.h (100%) rename src/{render => renderer}/ParticleMgr.cpp (100%) rename src/{render => renderer}/ParticleMgr.h (100%) rename src/{render => renderer}/ParticleType.h (100%) rename src/{render => renderer}/PlayerSkin.cpp (100%) rename src/{render => renderer}/PlayerSkin.h (100%) rename src/{render => renderer}/PointLights.cpp (100%) rename src/{render => renderer}/PointLights.h (100%) rename src/{render => renderer}/RenderBuffer.cpp (100%) rename src/{render => renderer}/RenderBuffer.h (100%) rename src/{render => renderer}/Renderer.cpp (100%) rename src/{render => renderer}/Renderer.h (100%) rename src/{render => renderer}/Rubbish.cpp (100%) rename src/{render => renderer}/Rubbish.h (100%) rename src/{render => renderer}/Shadows.cpp (100%) rename src/{render => renderer}/Shadows.h (100%) rename src/{render => renderer}/Skidmarks.cpp (100%) rename src/{render => renderer}/Skidmarks.h (100%) rename src/{render => renderer}/SpecialFX.cpp (100%) rename src/{render => renderer}/SpecialFX.h (100%) rename src/{render => renderer}/Sprite.cpp (100%) rename src/{render => renderer}/Sprite.h (100%) rename src/{render => renderer}/Sprite2d.cpp (100%) rename src/{render => renderer}/Sprite2d.h (100%) rename src/{render => renderer}/TexList.cpp (100%) rename src/{render => renderer}/TexList.h (100%) rename src/{render => renderer}/Timecycle.cpp (100%) rename src/{render => renderer}/Timecycle.h (100%) rename src/{render => renderer}/WaterCannon.cpp (100%) rename src/{render => renderer}/WaterCannon.h (100%) rename src/{render => renderer}/WaterLevel.cpp (100%) rename src/{render => renderer}/WaterLevel.h (100%) rename src/{render => renderer}/Weather.cpp (100%) rename src/{render => renderer}/Weather.h (100%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 10cb5627..fee80960 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,7 +13,7 @@ "src/modelinfo", "src/objects", "src/peds", - "src/render", + "src/renderer", "src/rw", "src/save", "src/skel", diff --git a/codewarrior/re3.mcp.xml b/codewarrior/re3.mcp.xml index b18e2bcc..ca20ec2a 100644 --- a/codewarrior/re3.mcp.xml +++ b/codewarrior/re3.mcp.xml @@ -187,7 +187,7 @@ SearchPath - Path..\src\render + Path..\src\renderer PathFormatWindows PathRootProject @@ -6424,7 +6424,7 @@ SearchPath - Path..\src\render + Path..\src\renderer PathFormatWindows PathRootProject @@ -14281,7 +14281,7 @@ Windows - render + renderer Debug Name diff --git a/premake5.lua b/premake5.lua index 0a8faa07..25090dc6 100644 --- a/premake5.lua +++ b/premake5.lua @@ -264,7 +264,7 @@ project "re3" files { addSrcFiles("src/modelinfo") } files { addSrcFiles("src/objects") } files { addSrcFiles("src/peds") } - files { addSrcFiles("src/render") } + files { addSrcFiles("src/renderer") } files { addSrcFiles("src/rw") } files { addSrcFiles("src/save") } files { addSrcFiles("src/skel") } @@ -293,7 +293,7 @@ project "re3" includedirs { "src/modelinfo" } includedirs { "src/objects" } includedirs { "src/peds" } - includedirs { "src/render" } + includedirs { "src/renderer" } includedirs { "src/rw" } includedirs { "src/save/" } includedirs { "src/skel/" } diff --git a/src/audio/sampman.h b/src/audio/sampman.h index d1ad9a26..dc95622b 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -259,8 +259,8 @@ static char StreamedNameTable[][25] = { "AUDIO\\door_2.OPUS", "AUDIO\\door_3.OPUS", "AUDIO\\door_4.OPUS", "AUDIO\\door_5.OPUS", "AUDIO\\door_6.OPUS", "AUDIO\\t3_a.OPUS", "AUDIO\\t3_b.OPUS", "AUDIO\\t3_c.OPUS", "AUDIO\\k1_b.OPUS", "AUDIO\\cat1.OPUS"}; #else -#if defined(PS2_AUDIO_PATHS) -static char StreamedNameTable[][25]= +#ifdef PS2_AUDIO_PATHS +static char PS2StreamedNameTable[][25]= { "AUDIO\\MUSIC\\HEAD.VB", "AUDIO\\MUSIC\\CLASS.VB", @@ -357,7 +357,110 @@ static char StreamedNameTable[][25]= "AUDIO\\PHONE\\MT_PH4.VB", "AUDIO\\MUSIC\\MISCOM.VB", "AUDIO\\MUSIC\\END.VB", -#else + "AUDIO\\lib_a1.WAV", + "AUDIO\\lib_a2.WAV", + "AUDIO\\lib_a.WAV", + "AUDIO\\lib_b.WAV", + "AUDIO\\lib_c.WAV", + "AUDIO\\lib_d.WAV", + "AUDIO\\l2_a.WAV", + "AUDIO\\j4t_1.WAV", + "AUDIO\\j4t_2.WAV", + "AUDIO\\j4t_3.WAV", + "AUDIO\\j4t_4.WAV", + "AUDIO\\j4_a.WAV", + "AUDIO\\j4_b.WAV", + "AUDIO\\j4_c.WAV", + "AUDIO\\j4_d.WAV", + "AUDIO\\j4_e.WAV", + "AUDIO\\j4_f.WAV", + "AUDIO\\j6_1.WAV", + "AUDIO\\j6_a.WAV", + "AUDIO\\j6_b.WAV", + "AUDIO\\j6_c.WAV", + "AUDIO\\j6_d.WAV", + "AUDIO\\t4_a.WAV", + "AUDIO\\s1_a.WAV", + "AUDIO\\s1_a1.WAV", + "AUDIO\\s1_b.WAV", + "AUDIO\\s1_c.WAV", + "AUDIO\\s1_c1.WAV", + "AUDIO\\s1_d.WAV", + "AUDIO\\s1_e.WAV", + "AUDIO\\s1_f.WAV", + "AUDIO\\s1_g.WAV", + "AUDIO\\s1_h.WAV", + "AUDIO\\s1_i.WAV", + "AUDIO\\s1_j.WAV", + "AUDIO\\s1_k.WAV", + "AUDIO\\s1_l.WAV", + "AUDIO\\s3_a.WAV", + "AUDIO\\s3_b.WAV", + "AUDIO\\el3_a.WAV", + "AUDIO\\mf1_a.WAV", + "AUDIO\\mf2_a.WAV", + "AUDIO\\mf3_a.WAV", + "AUDIO\\mf3_b.WAV", + "AUDIO\\mf3_b1.WAV", + "AUDIO\\mf3_c.WAV", + "AUDIO\\mf4_a.WAV", + "AUDIO\\mf4_b.WAV", + "AUDIO\\mf4_c.WAV", + "AUDIO\\a1_a.WAV", + "AUDIO\\a3_a.WAV", + "AUDIO\\a5_a.WAV", + "AUDIO\\a4_a.WAV", + "AUDIO\\a4_b.WAV", + "AUDIO\\a4_c.WAV", + "AUDIO\\a4_d.WAV", + "AUDIO\\k1_a.WAV", + "AUDIO\\k3_a.WAV", + "AUDIO\\r1_a.WAV", + "AUDIO\\r2_a.WAV", + "AUDIO\\r2_b.WAV", + "AUDIO\\r2_c.WAV", + "AUDIO\\r2_d.WAV", + "AUDIO\\r2_e.WAV", + "AUDIO\\r2_f.WAV", + "AUDIO\\r2_g.WAV", + "AUDIO\\r2_h.WAV", + "AUDIO\\r5_a.WAV", + "AUDIO\\r6_a.WAV", + "AUDIO\\r6_a1.WAV", + "AUDIO\\r6_b.WAV", + "AUDIO\\lo2_a.WAV", + "AUDIO\\lo6_a.WAV", + "AUDIO\\yd2_a.WAV", + "AUDIO\\yd2_b.WAV", + "AUDIO\\yd2_c.WAV", + "AUDIO\\yd2_c1.WAV", + "AUDIO\\yd2_d.WAV", + "AUDIO\\yd2_e.WAV", + "AUDIO\\yd2_f.WAV", + "AUDIO\\yd2_g.WAV", + "AUDIO\\yd2_h.WAV", + "AUDIO\\yd2_ass.WAV", + "AUDIO\\yd2_ok.WAV", + "AUDIO\\h5_a.WAV", + "AUDIO\\h5_b.WAV", + "AUDIO\\h5_c.WAV", + "AUDIO\\ammu_a.WAV", + "AUDIO\\ammu_b.WAV", + "AUDIO\\ammu_c.WAV", + "AUDIO\\door_1.WAV", + "AUDIO\\door_2.WAV", + "AUDIO\\door_3.WAV", + "AUDIO\\door_4.WAV", + "AUDIO\\door_5.WAV", + "AUDIO\\door_6.WAV", + "AUDIO\\t3_a.WAV", + "AUDIO\\t3_b.WAV", + "AUDIO\\t3_c.WAV", + "AUDIO\\k1_b.WAV", + "AUDIO\\cat1.WAV" +}; +#endif + static char StreamedNameTable[][25] = { "AUDIO\\HEAD.WAV", @@ -455,7 +558,6 @@ static char StreamedNameTable[][25] = "AUDIO\\MT_PH4.MP3", "AUDIO\\MISCOM.WAV", "AUDIO\\END.MP3", -#endif "AUDIO\\lib_a1.WAV", "AUDIO\\lib_a2.WAV", "AUDIO\\lib_a.WAV", diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index e820864c..d529513d 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -992,11 +992,20 @@ cSampleManager::Initialise(void) if ( GetDriveType(m_szCDRomRootPath) == DRIVE_CDROM ) { + FILE *f; +#ifdef PS2_AUDIO_PATHS strcpy(filepath, m_szCDRomRootPath); - strcat(filepath, StreamedNameTable[0]); - - FILE *f = fopen(filepath, "rb"); + strcat(filepath, PS2StreamedNameTable[0]); + f = fopen(filepath, "rb"); + + if ( !f ) +#endif + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[0]); + f = fopen(filepath, "rb"); + } if ( f ) { fclose(f); @@ -1005,11 +1014,20 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { +#ifdef PS2_AUDIO_PATHS strcpy(filepath, m_szCDRomRootPath); - strcat(filepath, StreamedNameTable[i]); - + strcat(filepath, PS2StreamedNameTable[i]); + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); - + if ( !mp3Stream[0] ) +#endif + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[i]); + + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); + } + if ( mp3Stream[0] ) { AIL_stream_ms_position(mp3Stream[0], &tatalms, NULL); @@ -1078,7 +1096,14 @@ cSampleManager::Initialise(void) strcpy(_aHDDPath, m_szCDRomRootPath); rootpath[0] = '\0'; - FILE *f = fopen(StreamedNameTable[0], "rb"); + FILE *f; + +#ifdef PS2_AUDIO_PATHS + f = fopen(PS2StreamedNameTable[0], "rb"); + if (!f) +#endif + + f = fopen(StreamedNameTable[0], "rb"); if ( f ) { @@ -1086,11 +1111,20 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { +#ifdef PS2_AUDIO_PATHS strcpy(filepath, rootpath); - strcat(filepath, StreamedNameTable[i]); - + strcat(filepath, PS2StreamedNameTable[i]); + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); - + if ( !mp3Stream[0] ) +#endif + { + strcpy(filepath, rootpath); + strcat(filepath, StreamedNameTable[i]); + + mp3Stream[0] = AIL_open_stream(DIG, filepath, 0); + } + if ( mp3Stream[0] ) { AIL_stream_ms_position(mp3Stream[0], &tatalms, NULL); @@ -1299,9 +1333,11 @@ cSampleManager::CheckForAnAudioFileOnCD(void) { #if GTA_VERSION < GTA3_PC_STEAM && !defined(NO_CDCHECK) char filepath[MAX_PATH]; + FILE *f; +#ifdef PS2_AUDIO_PATHS #if GTA_VERSION >= GTA3_PC_11 - if (_bUseHDDAudio) + if(_bUseHDDAudio) strcpy(filepath, _aHDDPath); else strcpy(filepath, m_szCDRomRootPath); @@ -1309,10 +1345,25 @@ cSampleManager::CheckForAnAudioFileOnCD(void) strcpy(filepath, m_szCDRomRootPath); #endif // #if GTA_VERSION >= GTA3_PC_11 - strcat(filepath, StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); - - FILE *f = fopen(filepath, "rb"); + strcat(filepath, PS2StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); + + f = fopen(filepath, "rb"); + if ( !f ) +#endif // PS2_AUDIO_PATHS + { +#if GTA_VERSION >= GTA3_PC_11 + if (_bUseHDDAudio) + strcpy(filepath, _aHDDPath); + else + strcpy(filepath, m_szCDRomRootPath); +#else + strcpy(filepath, m_szCDRomRootPath); +#endif // #if GTA_VERSION >= GTA3_PC_11 + + strcat(filepath, StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); + f = fopen(filepath, "rb"); + } if ( f ) { fclose(f); @@ -2007,11 +2058,19 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) } char filepath[MAX_PATH]; - +#ifdef PS2_AUDIO_PATHS strcpy(filepath, m_szCDRomRootPath); - strcat(filepath, StreamedNameTable[nFile]); - + strcat(filepath, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filepath, m_szCDRomRootPath); + strcat(filepath, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filepath, 0); + } if ( mp3Stream[nStream] ) { @@ -2073,10 +2132,19 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Try to continue from previous song, if already started if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { nFile = 0; +#ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); @@ -2120,10 +2188,19 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { nFile = 0; _bIsMp3Active = 0; +#ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); @@ -2161,10 +2238,19 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) position = 0; nFile = 0; } +#ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); - strcat(filename, StreamedNameTable[nFile]); - + strcat(filename, PS2StreamedNameTable[nFile]); + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + if ( !mp3Stream[nStream] ) +#endif + { + strcpy(filename, m_szCDRomRootPath); + strcat(filename, StreamedNameTable[nFile]); + + mp3Stream[nStream] = AIL_open_stream(DIG, filename, 0); + } if ( mp3Stream[nStream] ) { AIL_set_stream_loop_count(mp3Stream[nStream], 1); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index fdd449f7..2d9f9e86 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -894,7 +894,11 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < TOTAL_STREAMED_SOUNDS; i++ ) { - if ( aStream[0] && aStream[0]->Open(StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000) ) + if(aStream[0] && ( +#ifdef PS2_AUDIO_PATHS + aStream[0]->Open(PS2StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000) || +#endif + aStream[0]->Open(StreamedNameTable[i], IsThisTrackAt16KHz(i) ? 16000 : 32000))) { uint32 tatalms = aStream[0]->GetLengthMS(); aStream[0]->Close(); @@ -1601,8 +1605,6 @@ cSampleManager::StopChannel(uint32 nChannel) void cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) { - char filename[MAX_PATH]; - ASSERT( nStream < MAX_STREAMS ); if ( nFile < TOTAL_STREAMED_SOUNDS ) @@ -1611,9 +1613,10 @@ cSampleManager::PreloadStreamedFile(uint8 nFile, uint8 nStream) stream->Close(); - strcpy(filename, StreamedNameTable[nFile]); - - stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( !stream->Setup() ) { stream->Close(); @@ -1673,10 +1676,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) // Try to continue from previous song, if already started if(!_GetMP3PosFromStreamPos(&position, &e) && !e) { nFile = 0; - strcpy(filename, StreamedNameTable[nFile]); - CStream *stream = aStream[nStream]; - stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( stream->Setup() ) { if (position != 0) stream->SetPosMS(position); @@ -1725,10 +1729,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { nFile = 0; _bIsMp3Active = 0; - strcpy(filename, StreamedNameTable[nFile]); - - CStream* stream = aStream[nStream]; - stream->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); + CStream *stream = aStream[nStream]; +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if (stream->Setup()) { if (position != 0) @@ -1768,11 +1773,11 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) position = 0; nFile = 0; } - strcpy(filename, StreamedNameTable[nFile]); - CStream *stream = aStream[nStream]; - - aStream[nStream]->Open(filename, IsThisTrackAt16KHz(nFile) ? 16000 : 32000); +#ifdef PS2_AUDIO_PATHS + if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) +#endif + stream->Open(StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000); if ( stream->Setup() ) { if (position != 0) diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 91971ae7..245e961d 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -2305,6 +2305,9 @@ void CGarages::Save(uint8 * buf, uint32 * size) *size = (6 * sizeof(uint32) + TOTAL_COLLECTCARS_GARAGES * sizeof(*CarTypesCollected) + sizeof(uint32) + 3 * NUM_GARAGE_STORED_CARS * sizeof(CStoredCar) + NUM_GARAGES * sizeof(CGarage)); #else * size = 5484; +#endif +#if !defined THIS_IS_STUPID && !defined FIX_GARAGE_SIZE && defined COMPATIBLE_SAVES + memset(buf + 5240, 0, *size - 5240); // garbage data is written otherwise #endif CloseHideOutGaragesBeforeSave(); WriteSaveBuf(buf, NumGarages); diff --git a/src/control/Script.cpp b/src/control/Script.cpp index e06acdc3..b07c0701 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -1771,20 +1771,12 @@ int scriptToLoad = 0; int open_script() { - // glfwGetKey doesn't work because of CGame::Initialise is blocking - CPad::UpdatePads(); - if (CPad::GetPad(0)->GetChar('G')) - scriptToLoad = 0; - if (CPad::GetPad(0)->GetChar('R')) - scriptToLoad = 1; - if (CPad::GetPad(0)->GetChar('D')) - scriptToLoad = 2; switch (scriptToLoad) { - case 0: return CFileMgr::OpenFile("main.scm", "rb"); - case 1: return CFileMgr::OpenFile("main_freeroam.scm", "rb"); - case 2: return CFileMgr::OpenFile("main_d.scm", "rb"); + case 0: return CFileMgr::OpenFile("data\\main.scm", "rb"); + case 1: return CFileMgr::OpenFile("data\\main_freeroam.scm", "rb"); + case 2: return CFileMgr::OpenFile("data\\main_d.scm", "rb"); } - return CFileMgr::OpenFile("main.scm", "rb"); + return CFileMgr::OpenFile("data\\main.scm", "rb"); } #endif @@ -1800,10 +1792,16 @@ void CTheScripts::Init() MissionCleanUp.Init(); UpsideDownCars.Init(); StuckCars.Init(); - CFileMgr::SetDir("data"); #ifdef USE_DEBUG_SCRIPT_LOADER + // glfwGetKey doesn't work because of CGame::Initialise is blocking + CPad::UpdatePads(); + if(CPad::GetPad(0)->GetChar('G')) scriptToLoad = 0; + if(CPad::GetPad(0)->GetChar('R')) scriptToLoad = 1; + if(CPad::GetPad(0)->GetChar('D')) scriptToLoad = 2; + int mainf = open_script(); #else + CFileMgr::SetDir("data"); int mainf = CFileMgr::OpenFile("main.scm", "rb"); #endif CFileMgr::Read(mainf, (char*)ScriptSpace, SIZE_MAIN_SCRIPT); @@ -4392,7 +4390,11 @@ CTheScripts::SwitchToMission(int32 mission) CTimer::Suspend(); int offset = CTheScripts::MultiScriptArray[mission]; CFileMgr::ChangeDir("\\"); +#ifdef USE_DEBUG_SCRIPT_LOADER + int handle = open_script(); +#else int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); +#endif CFileMgr::Seek(handle, offset, 0); CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT); CFileMgr::CloseFile(handle); diff --git a/src/control/Script.h b/src/control/Script.h index 5682024b..cefd6747 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -591,5 +591,6 @@ void RetryMission(int, int); #endif #ifdef USE_DEBUG_SCRIPT_LOADER +int open_script(); extern int scriptToLoad; #endif \ No newline at end of file diff --git a/src/control/Script6.cpp b/src/control/Script6.cpp index 31be6987..c9b2b070 100644 --- a/src/control/Script6.cpp +++ b/src/control/Script6.cpp @@ -305,7 +305,11 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command) CTimer::Suspend(); int offset = CTheScripts::MultiScriptArray[ScriptParams[0]]; CFileMgr::ChangeDir("\\"); +#ifdef USE_DEBUG_SCRIPT_LOADER + int handle = open_script(); +#else int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); +#endif CFileMgr::Seek(handle, offset, 0); CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT); CFileMgr::CloseFile(handle); diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp index 984b21bb..8b184622 100644 --- a/src/core/Fire.cpp +++ b/src/core/Fire.cpp @@ -396,7 +396,7 @@ CFireManager::StartScriptFire(const CVector &pos, CEntity *target, float strengt if (target) { if (target->IsPed()) { ped->m_pFire = fire; - if (target != (CVehicle *)FindPlayerPed()) { + if (target != FindPlayerPed()) { CVector2D pos = target->GetPosition(); ped->SetFlee(pos, 10000); ped->SetMoveAnim(); diff --git a/src/core/config.h b/src/core/config.h index 885f98b8..f0960e44 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -259,7 +259,7 @@ enum Config { #define FIX_BUGS // fixes bugs that we've came across during reversing. You can undefine this only on release builds. #define MORE_LANGUAGES // Add more translations to the game -#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible, and keeps saves compatible between platforms +#define COMPATIBLE_SAVES // this allows changing structs while keeping saves compatible, and keeps saves compatible between platforms, needs to be enabled on 64bit builds! #define FIX_INCOMPATIBLE_SAVES // try to fix incompatible saves, requires COMPATIBLE_SAVES #define LOAD_INI_SETTINGS // as the name suggests. fundamental for CUSTOM_FRONTEND_OPTIONS @@ -420,7 +420,7 @@ enum Config { #define RADIO_SCROLL_TO_PREV_STATION #define AUDIO_CACHE #define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 44 (PC has 28 originally) -//#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) +#define PS2_AUDIO_PATHS // changes audio paths for cutscenes and radio to PS2 paths (needs vbdec on MSS builds) //#define AUDIO_OAL_USE_SNDFILE // use libsndfile to decode WAVs instead of our internal decoder #define AUDIO_OAL_USE_MPG123 // use mpg123 to support mp3 files #define PAUSE_RADIO_IN_FRONTEND // pause radio when game is paused diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index 46ac369c..13d3930c 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -320,6 +320,14 @@ CPed::SetAttack(CEntity *victim) ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); } } +#ifdef FIX_BUGS + // fix aiming for flamethrower while using PC controls + else if (GetWeapon()->m_eWeaponType == WEAPONTYPE_FLAMETHROWER && TheCamera.Cams[0].Using3rdPersonMouseCam() && this == FindPlayerPed()) + { + SetAimFlag(m_fRotationCur); + ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); + } +#endif if (m_nPedState == PED_ATTACK) { bIsAttacking = true; return; diff --git a/src/render/2dEffect.h b/src/renderer/2dEffect.h similarity index 100% rename from src/render/2dEffect.h rename to src/renderer/2dEffect.h diff --git a/src/render/Antennas.cpp b/src/renderer/Antennas.cpp similarity index 100% rename from src/render/Antennas.cpp rename to src/renderer/Antennas.cpp diff --git a/src/render/Antennas.h b/src/renderer/Antennas.h similarity index 100% rename from src/render/Antennas.h rename to src/renderer/Antennas.h diff --git a/src/render/Clouds.cpp b/src/renderer/Clouds.cpp similarity index 100% rename from src/render/Clouds.cpp rename to src/renderer/Clouds.cpp diff --git a/src/render/Clouds.h b/src/renderer/Clouds.h similarity index 100% rename from src/render/Clouds.h rename to src/renderer/Clouds.h diff --git a/src/render/Console.cpp b/src/renderer/Console.cpp similarity index 100% rename from src/render/Console.cpp rename to src/renderer/Console.cpp diff --git a/src/render/Console.h b/src/renderer/Console.h similarity index 100% rename from src/render/Console.h rename to src/renderer/Console.h diff --git a/src/render/Coronas.cpp b/src/renderer/Coronas.cpp similarity index 100% rename from src/render/Coronas.cpp rename to src/renderer/Coronas.cpp diff --git a/src/render/Coronas.h b/src/renderer/Coronas.h similarity index 100% rename from src/render/Coronas.h rename to src/renderer/Coronas.h diff --git a/src/render/Credits.cpp b/src/renderer/Credits.cpp similarity index 100% rename from src/render/Credits.cpp rename to src/renderer/Credits.cpp diff --git a/src/render/Credits.h b/src/renderer/Credits.h similarity index 100% rename from src/render/Credits.h rename to src/renderer/Credits.h diff --git a/src/render/Draw.cpp b/src/renderer/Draw.cpp similarity index 100% rename from src/render/Draw.cpp rename to src/renderer/Draw.cpp diff --git a/src/render/Draw.h b/src/renderer/Draw.h similarity index 100% rename from src/render/Draw.h rename to src/renderer/Draw.h diff --git a/src/render/Fluff.cpp b/src/renderer/Fluff.cpp similarity index 100% rename from src/render/Fluff.cpp rename to src/renderer/Fluff.cpp diff --git a/src/render/Fluff.h b/src/renderer/Fluff.h similarity index 100% rename from src/render/Fluff.h rename to src/renderer/Fluff.h diff --git a/src/render/Font.cpp b/src/renderer/Font.cpp similarity index 100% rename from src/render/Font.cpp rename to src/renderer/Font.cpp diff --git a/src/render/Font.h b/src/renderer/Font.h similarity index 100% rename from src/render/Font.h rename to src/renderer/Font.h diff --git a/src/render/Glass.cpp b/src/renderer/Glass.cpp similarity index 100% rename from src/render/Glass.cpp rename to src/renderer/Glass.cpp diff --git a/src/render/Glass.h b/src/renderer/Glass.h similarity index 100% rename from src/render/Glass.h rename to src/renderer/Glass.h diff --git a/src/render/Hud.cpp b/src/renderer/Hud.cpp similarity index 100% rename from src/render/Hud.cpp rename to src/renderer/Hud.cpp diff --git a/src/render/Hud.h b/src/renderer/Hud.h similarity index 100% rename from src/render/Hud.h rename to src/renderer/Hud.h diff --git a/src/render/Instance.cpp b/src/renderer/Instance.cpp similarity index 100% rename from src/render/Instance.cpp rename to src/renderer/Instance.cpp diff --git a/src/render/Instance.h b/src/renderer/Instance.h similarity index 100% rename from src/render/Instance.h rename to src/renderer/Instance.h diff --git a/src/render/Lines.cpp b/src/renderer/Lines.cpp similarity index 100% rename from src/render/Lines.cpp rename to src/renderer/Lines.cpp diff --git a/src/render/Lines.h b/src/renderer/Lines.h similarity index 100% rename from src/render/Lines.h rename to src/renderer/Lines.h diff --git a/src/render/MBlur.cpp b/src/renderer/MBlur.cpp similarity index 100% rename from src/render/MBlur.cpp rename to src/renderer/MBlur.cpp diff --git a/src/render/MBlur.h b/src/renderer/MBlur.h similarity index 100% rename from src/render/MBlur.h rename to src/renderer/MBlur.h diff --git a/src/render/Particle.cpp b/src/renderer/Particle.cpp similarity index 100% rename from src/render/Particle.cpp rename to src/renderer/Particle.cpp diff --git a/src/render/Particle.h b/src/renderer/Particle.h similarity index 100% rename from src/render/Particle.h rename to src/renderer/Particle.h diff --git a/src/render/ParticleMgr.cpp b/src/renderer/ParticleMgr.cpp similarity index 100% rename from src/render/ParticleMgr.cpp rename to src/renderer/ParticleMgr.cpp diff --git a/src/render/ParticleMgr.h b/src/renderer/ParticleMgr.h similarity index 100% rename from src/render/ParticleMgr.h rename to src/renderer/ParticleMgr.h diff --git a/src/render/ParticleType.h b/src/renderer/ParticleType.h similarity index 100% rename from src/render/ParticleType.h rename to src/renderer/ParticleType.h diff --git a/src/render/PlayerSkin.cpp b/src/renderer/PlayerSkin.cpp similarity index 100% rename from src/render/PlayerSkin.cpp rename to src/renderer/PlayerSkin.cpp diff --git a/src/render/PlayerSkin.h b/src/renderer/PlayerSkin.h similarity index 100% rename from src/render/PlayerSkin.h rename to src/renderer/PlayerSkin.h diff --git a/src/render/PointLights.cpp b/src/renderer/PointLights.cpp similarity index 100% rename from src/render/PointLights.cpp rename to src/renderer/PointLights.cpp diff --git a/src/render/PointLights.h b/src/renderer/PointLights.h similarity index 100% rename from src/render/PointLights.h rename to src/renderer/PointLights.h diff --git a/src/render/RenderBuffer.cpp b/src/renderer/RenderBuffer.cpp similarity index 100% rename from src/render/RenderBuffer.cpp rename to src/renderer/RenderBuffer.cpp diff --git a/src/render/RenderBuffer.h b/src/renderer/RenderBuffer.h similarity index 100% rename from src/render/RenderBuffer.h rename to src/renderer/RenderBuffer.h diff --git a/src/render/Renderer.cpp b/src/renderer/Renderer.cpp similarity index 100% rename from src/render/Renderer.cpp rename to src/renderer/Renderer.cpp diff --git a/src/render/Renderer.h b/src/renderer/Renderer.h similarity index 100% rename from src/render/Renderer.h rename to src/renderer/Renderer.h diff --git a/src/render/Rubbish.cpp b/src/renderer/Rubbish.cpp similarity index 100% rename from src/render/Rubbish.cpp rename to src/renderer/Rubbish.cpp diff --git a/src/render/Rubbish.h b/src/renderer/Rubbish.h similarity index 100% rename from src/render/Rubbish.h rename to src/renderer/Rubbish.h diff --git a/src/render/Shadows.cpp b/src/renderer/Shadows.cpp similarity index 100% rename from src/render/Shadows.cpp rename to src/renderer/Shadows.cpp diff --git a/src/render/Shadows.h b/src/renderer/Shadows.h similarity index 100% rename from src/render/Shadows.h rename to src/renderer/Shadows.h diff --git a/src/render/Skidmarks.cpp b/src/renderer/Skidmarks.cpp similarity index 100% rename from src/render/Skidmarks.cpp rename to src/renderer/Skidmarks.cpp diff --git a/src/render/Skidmarks.h b/src/renderer/Skidmarks.h similarity index 100% rename from src/render/Skidmarks.h rename to src/renderer/Skidmarks.h diff --git a/src/render/SpecialFX.cpp b/src/renderer/SpecialFX.cpp similarity index 100% rename from src/render/SpecialFX.cpp rename to src/renderer/SpecialFX.cpp diff --git a/src/render/SpecialFX.h b/src/renderer/SpecialFX.h similarity index 100% rename from src/render/SpecialFX.h rename to src/renderer/SpecialFX.h diff --git a/src/render/Sprite.cpp b/src/renderer/Sprite.cpp similarity index 100% rename from src/render/Sprite.cpp rename to src/renderer/Sprite.cpp diff --git a/src/render/Sprite.h b/src/renderer/Sprite.h similarity index 100% rename from src/render/Sprite.h rename to src/renderer/Sprite.h diff --git a/src/render/Sprite2d.cpp b/src/renderer/Sprite2d.cpp similarity index 100% rename from src/render/Sprite2d.cpp rename to src/renderer/Sprite2d.cpp diff --git a/src/render/Sprite2d.h b/src/renderer/Sprite2d.h similarity index 100% rename from src/render/Sprite2d.h rename to src/renderer/Sprite2d.h diff --git a/src/render/TexList.cpp b/src/renderer/TexList.cpp similarity index 100% rename from src/render/TexList.cpp rename to src/renderer/TexList.cpp diff --git a/src/render/TexList.h b/src/renderer/TexList.h similarity index 100% rename from src/render/TexList.h rename to src/renderer/TexList.h diff --git a/src/render/Timecycle.cpp b/src/renderer/Timecycle.cpp similarity index 100% rename from src/render/Timecycle.cpp rename to src/renderer/Timecycle.cpp diff --git a/src/render/Timecycle.h b/src/renderer/Timecycle.h similarity index 100% rename from src/render/Timecycle.h rename to src/renderer/Timecycle.h diff --git a/src/render/WaterCannon.cpp b/src/renderer/WaterCannon.cpp similarity index 100% rename from src/render/WaterCannon.cpp rename to src/renderer/WaterCannon.cpp diff --git a/src/render/WaterCannon.h b/src/renderer/WaterCannon.h similarity index 100% rename from src/render/WaterCannon.h rename to src/renderer/WaterCannon.h diff --git a/src/render/WaterLevel.cpp b/src/renderer/WaterLevel.cpp similarity index 100% rename from src/render/WaterLevel.cpp rename to src/renderer/WaterLevel.cpp diff --git a/src/render/WaterLevel.h b/src/renderer/WaterLevel.h similarity index 100% rename from src/render/WaterLevel.h rename to src/renderer/WaterLevel.h diff --git a/src/render/Weather.cpp b/src/renderer/Weather.cpp similarity index 100% rename from src/render/Weather.cpp rename to src/renderer/Weather.cpp diff --git a/src/render/Weather.h b/src/renderer/Weather.h similarity index 100% rename from src/render/Weather.h rename to src/renderer/Weather.h From a064b3a687b6ba4b112eaf1e69738b27358baabf Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 26 Jul 2021 04:18:41 +0300 Subject: [PATCH 246/314] Audio changes: - Reorder AudioCollision.cpp functions into original order - Add missing cAudioCollision::Reset() - Move cAudioCollision ctor into .h (like original) - Fix argument types for ped comment functions and more - Fix wrong names of ped comment functions - Fix incorrect ped comments - Remove getters - Reorder declarations of cAudioManager - Wrap PC only functions around ifdef - Add cAudioManager methods from PS2 and mobile --- src/audio/AudioCollision.cpp | 425 ++++---- src/audio/AudioCollision.h | 23 +- src/audio/AudioLogic.cpp | 1785 +++++++++++++++++----------------- src/audio/AudioManager.cpp | 68 +- src/audio/AudioManager.h | 537 +++++----- src/audio/MusicManager.cpp | 20 +- src/audio/PolRadio.cpp | 6 +- src/audio/sampman_miles.cpp | 18 +- src/audio/sampman_oal.cpp | 12 +- 9 files changed, 1459 insertions(+), 1435 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index fd819641..cfd13fb6 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -10,20 +10,39 @@ const int CollisionSoundIntensity = 60; -cAudioCollisionManager::cAudioCollisionManager() +void +cAudioManager::ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, + float velocity) { - m_sQueue.m_pEntity1 = nil; - m_sQueue.m_pEntity2 = nil; - m_sQueue.m_bSurface1 = SURFACE_DEFAULT; - m_sQueue.m_bSurface2 = SURFACE_DEFAULT; - m_sQueue.m_fIntensity2 = 0.0f; - m_sQueue.m_fIntensity1 = 0.0f; - m_sQueue.m_vecPosition = CVector(0.0f, 0.0f, 0.0f); + float distSquared; + CVector v1; + CVector v2; - for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) - m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; + if(!m_bIsInitialised || m_nCollisionEntity < 0 || m_nUserPause || + (velocity < 0.0016f && collisionPower < 0.01f)) + return; - m_bCollisionsInQueue = 0; + if(entity1->IsBuilding()) { + v1 = v2 = entity2->GetPosition(); + } else if(entity2->IsBuilding()) { + v1 = v2 = entity1->GetPosition(); + } else { + v1 = entity1->GetPosition(); + v2 = entity2->GetPosition(); + } + CVector pos = (v1 + v2) * 0.5f; + distSquared = GetDistanceSquared(pos); + if(distSquared < SQR(CollisionSoundIntensity)) { + m_sCollisionManager.m_sQueue.m_pEntity1 = entity1; + m_sCollisionManager.m_sQueue.m_pEntity2 = entity2; + m_sCollisionManager.m_sQueue.m_bSurface1 = surface1; + m_sCollisionManager.m_sQueue.m_bSurface2 = surface2; + m_sCollisionManager.m_sQueue.m_fIntensity1 = collisionPower; + m_sCollisionManager.m_sQueue.m_fIntensity2 = velocity; + m_sCollisionManager.m_sQueue.m_vecPosition = pos; + m_sCollisionManager.m_sQueue.m_fDistance = distSquared; + m_sCollisionManager.AddCollisionToRequestedQueue(); + } } void @@ -55,133 +74,71 @@ cAudioCollisionManager::AddCollisionToRequestedQueue() m_bIndicesTable[i] = collisionsIndex; } -float -cAudioManager::GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const -{ - return GetCollisionRatio(c, 0.0f, 0.02f, 0.02f); -} - -float -cAudioManager::GetCollisionOneShotRatio(int32 a, float b) const -{ - float result; - - switch(a) { - case SURFACE_DEFAULT: - case SURFACE_TARMAC: - case SURFACE_PAVEMENT: - case SURFACE_STEEP_CLIFF: - case SURFACE_TRANSPARENT_STONE: result = GetCollisionRatio(b, 10.f, 60.f, 50.f); break; - case SURFACE_GRASS: - case SURFACE_CARDBOARDBOX: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; - case SURFACE_GRAVEL: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; - case SURFACE_MUD_DRY: result = GetCollisionRatio(b, 0.f, 2.f, 2.f); break; - case SURFACE_CAR: result = GetCollisionRatio(b, 6.f, 50.f, 44.f); break; - case SURFACE_GLASS: result = GetCollisionRatio(b, 0.1f, 10.f, 9.9f); break; - case SURFACE_TRANSPARENT_CLOTH: - case SURFACE_THICK_METAL_PLATE: result = GetCollisionRatio(b, 30.f, 130.f, 100.f); break; - case SURFACE_GARAGE_DOOR: result = GetCollisionRatio(b, 20.f, 100.f, 80.f); break; - case SURFACE_CAR_PANEL: result = GetCollisionRatio(b, 0.f, 4.f, 4.f); break; - case SURFACE_SCAFFOLD_POLE: - case SURFACE_METAL_GATE: result = GetCollisionRatio(b, 1.f, 10.f, 9.f); break; - case SURFACE_LAMP_POST: result = GetCollisionRatio(b, 1.f, 10.f, 9.f); break; - case SURFACE_FIRE_HYDRANT: result = GetCollisionRatio(b, 1.f, 15.f, 14.f); break; - case SURFACE_GIRDER: result = GetCollisionRatio(b, 8.f, 50.f, 42.f); break; - case SURFACE_METAL_CHAIN_FENCE: result = GetCollisionRatio(b, 0.1f, 10.f, 9.9f); break; - case SURFACE_PED: result = GetCollisionRatio(b, 0.f, 20.f, 20.f); break; - case SURFACE_SAND: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; - case SURFACE_WATER: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; - case SURFACE_WOOD_CRATES: result = GetCollisionRatio(b, 1.f, 4.f, 3.f); break; - case SURFACE_WOOD_BENCH: result = GetCollisionRatio(b, 0.1f, 5.f, 4.9f); break; - case SURFACE_WOOD_SOLID: result = GetCollisionRatio(b, 0.1f, 40.f, 39.9f); break; - case SURFACE_RUBBER: - case SURFACE_WHEELBASE: result = GetCollisionRatio(b, 0.f, 10.f, 10.f); break; - case SURFACE_PLASTIC: result = GetCollisionRatio(b, 0.1f, 4.f, 3.9f); break; - case SURFACE_HEDGE: result = GetCollisionRatio(b, 0.f, 0.5f, 0.5f); break; - case SURFACE_CONTAINER: result = GetCollisionRatio(b, 4.f, 40.f, 36.f); break; - case SURFACE_NEWS_VENDOR: result = GetCollisionRatio(b, 0.f, 5.f, 5.f); break; - default: result = 0.f; break; - } - - return result; -} - -float -cAudioManager::GetCollisionRatio(float a, float b, float c, float d) const -{ - float e; - e = a; - if(a <= b) return 0.0f; - if(c <= a) e = c; - return (e - b) / d; -} - -uint32 -cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision) -{ - uint8 surface1 = audioCollision.m_bSurface1; - uint8 surface2 = audioCollision.m_bSurface2; - int32 vol; - float ratio; - - if(surface1 == SURFACE_GRASS || surface2 == SURFACE_GRASS || surface1 == SURFACE_HEDGE || - surface2 == SURFACE_HEDGE) { - ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_RAIN; - m_sQueueSample.m_nFrequency = 13000.f * ratio + 35000; - vol = 50.f * ratio; - } else if(surface1 == SURFACE_WATER || surface2 == SURFACE_WATER) { - ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; - m_sQueueSample.m_nFrequency = 6050.f * ratio + 16000; - vol = 30.f * ratio; - } else if(surface1 == SURFACE_GRAVEL || surface2 == SURFACE_GRAVEL || surface1 == SURFACE_MUD_DRY || - surface2 == SURFACE_MUD_DRY || surface1 == SURFACE_SAND || surface2 == SURFACE_SAND) { - ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_GRAVEL_SKID; - m_sQueueSample.m_nFrequency = 6000.f * ratio + 10000; - vol = 50.f * ratio; - } else if(surface1 == SURFACE_PED || surface2 == SURFACE_PED) { - return 0; - } else { - ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); - m_sQueueSample.m_nSampleIndex = SFX_SCRAPE_CAR_1; - m_sQueueSample.m_nFrequency = 10000.f * ratio + 10000; - vol = 40.f * ratio; - } - if(audioCollision.m_nBaseVolume < 2) vol = audioCollision.m_nBaseVolume * vol / 2; - return vol; -} - void -cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter) +cAudioManager::ServiceCollisions() { - if(col.m_fIntensity2 > 0.0016f) { - uint8 emittingVol = SetLoopingCollisionRequestedSfxFreqAndGetVol(col); - if(emittingVol) { - m_sQueueSample.m_fDistance = Sqrt(col.m_fDistance); - m_sQueueSample.m_nVolume = - ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); - if(m_sQueueSample.m_nVolume) { - m_sQueueSample.m_nCounter = counter; - m_sQueueSample.m_vecPos = col.m_vecPosition; - m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 7; - m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; - SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; - AddSampleToRequestedQueue(); + int i, j; + bool8 abRepeatedCollision1[NUMAUDIOCOLLISIONS]; + bool8 abRepeatedCollision2[NUMAUDIOCOLLISIONS]; + + m_sQueueSample.m_nEntityIndex = m_nCollisionEntity; + + for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) + abRepeatedCollision1[i] = abRepeatedCollision2[i] = FALSE; + + for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { + for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { + int index = m_sCollisionManager.m_bIndicesTable[i]; + if ((m_sCollisionManager.m_asCollisions1[index].m_pEntity1 == m_sCollisionManager.m_asCollisions2[j].m_pEntity1) + && (m_sCollisionManager.m_asCollisions1[index].m_pEntity2 == m_sCollisionManager.m_asCollisions2[j].m_pEntity2) + && (m_sCollisionManager.m_asCollisions1[index].m_bSurface1 == m_sCollisionManager.m_asCollisions2[j].m_bSurface1) + && (m_sCollisionManager.m_asCollisions1[index].m_bSurface2 == m_sCollisionManager.m_asCollisions2[j].m_bSurface2) + ) { + abRepeatedCollision1[index] = TRUE; + abRepeatedCollision2[j] = TRUE; + m_sCollisionManager.m_asCollisions1[index].m_nBaseVolume = ++m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume; + SetUpLoopingCollisionSound(m_sCollisionManager.m_asCollisions1[index], j); + break; } } } + + for (i = 0; i < NUMAUDIOCOLLISIONS; i++) { + if (!abRepeatedCollision2[i]) { + m_sCollisionManager.m_asCollisions2[i].m_pEntity1 = nil; + m_sCollisionManager.m_asCollisions2[i].m_pEntity2 = nil; + m_sCollisionManager.m_asCollisions2[i].m_bSurface1 = SURFACE_DEFAULT; + m_sCollisionManager.m_asCollisions2[i].m_bSurface2 = SURFACE_DEFAULT; + m_sCollisionManager.m_asCollisions2[i].m_fIntensity2 = 0.0f; + m_sCollisionManager.m_asCollisions2[i].m_fIntensity1 = 0.0f; + m_sCollisionManager.m_asCollisions2[i].m_vecPosition = CVector(0.0f, 0.0f, 0.0f); + m_sCollisionManager.m_asCollisions2[i].m_fDistance = 0.0f; + } + } + + for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { + int index = m_sCollisionManager.m_bIndicesTable[i]; + if (!abRepeatedCollision1[index]) { + for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { + if (!abRepeatedCollision2[j]) { + m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume = 1; + m_sCollisionManager.m_asCollisions2[j].m_pEntity1 = m_sCollisionManager.m_asCollisions1[index].m_pEntity1; + m_sCollisionManager.m_asCollisions2[j].m_pEntity2 = m_sCollisionManager.m_asCollisions1[index].m_pEntity2; + m_sCollisionManager.m_asCollisions2[j].m_bSurface1 = m_sCollisionManager.m_asCollisions1[index].m_bSurface1; + m_sCollisionManager.m_asCollisions2[j].m_bSurface2 = m_sCollisionManager.m_asCollisions1[index].m_bSurface2; + break; + } + } + SetUpOneShotCollisionSound(m_sCollisionManager.m_asCollisions1[index]); + SetUpLoopingCollisionSound(m_sCollisionManager.m_asCollisions1[index], j); + } + } + + for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) + m_sCollisionManager.m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; + m_sCollisionManager.m_bCollisionsInQueue = 0; } + static const int32 gOneShotCol[] = {SFX_COL_TARMAC_1, SFX_COL_TARMAC_1, SFX_COL_GRASS_1, @@ -219,9 +176,8 @@ static const int32 gOneShotCol[] = {SFX_COL_TARMAC_1, void cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) { - - int16 s1; - int16 s2; + uint16 s1; + uint16 s2; int32 emittingVol; float ratio; @@ -321,101 +277,126 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) } void -cAudioManager::ServiceCollisions() +cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter) { - int i, j; - bool8 abRepeatedCollision1[NUMAUDIOCOLLISIONS]; - bool8 abRepeatedCollision2[NUMAUDIOCOLLISIONS]; - - m_sQueueSample.m_nEntityIndex = m_nCollisionEntity; - - for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) - abRepeatedCollision1[i] = abRepeatedCollision2[i] = FALSE; - - for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { - for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { - int index = m_sCollisionManager.m_bIndicesTable[i]; - if ((m_sCollisionManager.m_asCollisions1[index].m_pEntity1 == m_sCollisionManager.m_asCollisions2[j].m_pEntity1) - && (m_sCollisionManager.m_asCollisions1[index].m_pEntity2 == m_sCollisionManager.m_asCollisions2[j].m_pEntity2) - && (m_sCollisionManager.m_asCollisions1[index].m_bSurface1 == m_sCollisionManager.m_asCollisions2[j].m_bSurface1) - && (m_sCollisionManager.m_asCollisions1[index].m_bSurface2 == m_sCollisionManager.m_asCollisions2[j].m_bSurface2) - ) { - abRepeatedCollision1[index] = TRUE; - abRepeatedCollision2[j] = TRUE; - m_sCollisionManager.m_asCollisions1[index].m_nBaseVolume = ++m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume; - SetUpLoopingCollisionSound(m_sCollisionManager.m_asCollisions1[index], j); - break; + if(col.m_fIntensity2 > 0.0016f) { + uint8 emittingVol = SetLoopingCollisionRequestedSfxFreqAndGetVol(col); + if(emittingVol) { + m_sQueueSample.m_fDistance = Sqrt(col.m_fDistance); + m_sQueueSample.m_nVolume = + ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); + if(m_sQueueSample.m_nVolume) { + m_sQueueSample.m_nCounter = counter; + m_sQueueSample.m_vecPos = col.m_vecPosition; + m_sQueueSample.m_nBankIndex = SFX_BANK_0; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nLoopCount = 0; + m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex); + m_sQueueSample.m_fSpeedMultiplier = 4.0f; + m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_nReleasingVolumeDivider = 5; + m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bRequireReflection = FALSE; + AddSampleToRequestedQueue(); } } } - - for (i = 0; i < NUMAUDIOCOLLISIONS; i++) { - if (!abRepeatedCollision2[i]) { - m_sCollisionManager.m_asCollisions2[i].m_pEntity1 = nil; - m_sCollisionManager.m_asCollisions2[i].m_pEntity2 = nil; - m_sCollisionManager.m_asCollisions2[i].m_bSurface1 = SURFACE_DEFAULT; - m_sCollisionManager.m_asCollisions2[i].m_bSurface2 = SURFACE_DEFAULT; - m_sCollisionManager.m_asCollisions2[i].m_fIntensity2 = 0.0f; - m_sCollisionManager.m_asCollisions2[i].m_fIntensity1 = 0.0f; - m_sCollisionManager.m_asCollisions2[i].m_vecPosition = CVector(0.0f, 0.0f, 0.0f); - m_sCollisionManager.m_asCollisions2[i].m_fDistance = 0.0f; - } - } - - for (i = 0; i < m_sCollisionManager.m_bCollisionsInQueue; i++) { - int index = m_sCollisionManager.m_bIndicesTable[i]; - if (!abRepeatedCollision1[index]) { - for (j = 0; j < NUMAUDIOCOLLISIONS; j++) { - if (!abRepeatedCollision2[j]) { - m_sCollisionManager.m_asCollisions2[j].m_nBaseVolume = 1; - m_sCollisionManager.m_asCollisions2[j].m_pEntity1 = m_sCollisionManager.m_asCollisions1[index].m_pEntity1; - m_sCollisionManager.m_asCollisions2[j].m_pEntity2 = m_sCollisionManager.m_asCollisions1[index].m_pEntity2; - m_sCollisionManager.m_asCollisions2[j].m_bSurface1 = m_sCollisionManager.m_asCollisions1[index].m_bSurface1; - m_sCollisionManager.m_asCollisions2[j].m_bSurface2 = m_sCollisionManager.m_asCollisions1[index].m_bSurface2; - break; - } - } - SetUpOneShotCollisionSound(m_sCollisionManager.m_asCollisions1[index]); - SetUpLoopingCollisionSound(m_sCollisionManager.m_asCollisions1[index], j); - } - } - - for (int i = 0; i < NUMAUDIOCOLLISIONS; i++) - m_sCollisionManager.m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; - m_sCollisionManager.m_bCollisionsInQueue = 0; } -void -cAudioManager::ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, - float velocity) +uint32 +cAudioManager::SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision) { - float distSquared; - CVector v1; - CVector v2; + uint8 surface1 = audioCollision.m_bSurface1; + uint8 surface2 = audioCollision.m_bSurface2; + int32 vol; + float ratio; - if(!m_bIsInitialised || m_nCollisionEntity < 0 || m_nUserPause || - (velocity < 0.0016f && collisionPower < 0.01f)) - return; - - if(entity1->IsBuilding()) { - v1 = v2 = entity2->GetPosition(); - } else if(entity2->IsBuilding()) { - v1 = v2 = entity1->GetPosition(); + if(surface1 == SURFACE_GRASS || surface2 == SURFACE_GRASS || surface1 == SURFACE_HEDGE || + surface2 == SURFACE_HEDGE) { + ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_RAIN; + m_sQueueSample.m_nFrequency = 13000.f * ratio + 35000; + vol = 50.f * ratio; + } else if(surface1 == SURFACE_WATER || surface2 == SURFACE_WATER) { + ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; + m_sQueueSample.m_nFrequency = 6050.f * ratio + 16000; + vol = 30.f * ratio; + } else if(surface1 == SURFACE_GRAVEL || surface2 == SURFACE_GRAVEL || surface1 == SURFACE_MUD_DRY || + surface2 == SURFACE_MUD_DRY || surface1 == SURFACE_SAND || surface2 == SURFACE_SAND) { + ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_GRAVEL_SKID; + m_sQueueSample.m_nFrequency = 6000.f * ratio + 10000; + vol = 50.f * ratio; + } else if(surface1 == SURFACE_PED || surface2 == SURFACE_PED) { + return 0; } else { - v1 = entity1->GetPosition(); - v2 = entity2->GetPosition(); - } - CVector pos = (v1 + v2) * 0.5f; - distSquared = GetDistanceSquared(pos); - if(distSquared < SQR(CollisionSoundIntensity)) { - m_sCollisionManager.m_sQueue.m_pEntity1 = entity1; - m_sCollisionManager.m_sQueue.m_pEntity2 = entity2; - m_sCollisionManager.m_sQueue.m_bSurface1 = surface1; - m_sCollisionManager.m_sQueue.m_bSurface2 = surface2; - m_sCollisionManager.m_sQueue.m_fIntensity1 = collisionPower; - m_sCollisionManager.m_sQueue.m_fIntensity2 = velocity; - m_sCollisionManager.m_sQueue.m_vecPosition = pos; - m_sCollisionManager.m_sQueue.m_fDistance = distSquared; - m_sCollisionManager.AddCollisionToRequestedQueue(); + ratio = GetCollisionRatio(audioCollision.m_fIntensity2, 0.0001f, 0.09f, 0.0899f); + m_sQueueSample.m_nSampleIndex = SFX_SCRAPE_CAR_1; + m_sQueueSample.m_nFrequency = 10000.f * ratio + 10000; + vol = 40.f * ratio; } + if(audioCollision.m_nBaseVolume < 2) vol = audioCollision.m_nBaseVolume * vol / 2; + return vol; +} + +float +cAudioManager::GetCollisionOneShotRatio(uint32 a, float b) +{ + switch(a) { + case SURFACE_DEFAULT: + case SURFACE_TARMAC: + case SURFACE_PAVEMENT: + case SURFACE_STEEP_CLIFF: + case SURFACE_TRANSPARENT_STONE: return GetCollisionRatio(b, 10.f, 60.f, 50.f); + case SURFACE_GRASS: + case SURFACE_CARDBOARDBOX: return GetCollisionRatio(b, 0.f, 2.f, 2.f); + case SURFACE_GRAVEL: return GetCollisionRatio(b, 0.f, 2.f, 2.f); + case SURFACE_MUD_DRY: return GetCollisionRatio(b, 0.f, 2.f, 2.f); + case SURFACE_CAR: return GetCollisionRatio(b, 6.f, 50.f, 44.f); + case SURFACE_GLASS: return GetCollisionRatio(b, 0.1f, 10.f, 9.9f); + case SURFACE_TRANSPARENT_CLOTH: + case SURFACE_THICK_METAL_PLATE: return GetCollisionRatio(b, 30.f, 130.f, 100.f); + case SURFACE_GARAGE_DOOR: return GetCollisionRatio(b, 20.f, 100.f, 80.f); + case SURFACE_CAR_PANEL: return GetCollisionRatio(b, 0.f, 4.f, 4.f); + case SURFACE_SCAFFOLD_POLE: + case SURFACE_METAL_GATE: return GetCollisionRatio(b, 1.f, 10.f, 9.f); + case SURFACE_LAMP_POST: return GetCollisionRatio(b, 1.f, 10.f, 9.f); + case SURFACE_FIRE_HYDRANT: return GetCollisionRatio(b, 1.f, 15.f, 14.f); + case SURFACE_GIRDER: return GetCollisionRatio(b, 8.f, 50.f, 42.f); + case SURFACE_METAL_CHAIN_FENCE: return GetCollisionRatio(b, 0.1f, 10.f, 9.9f); + case SURFACE_PED: return GetCollisionRatio(b, 0.f, 20.f, 20.f); + case SURFACE_SAND: return GetCollisionRatio(b, 0.f, 10.f, 10.f); + case SURFACE_WATER: return GetCollisionRatio(b, 0.f, 10.f, 10.f); + case SURFACE_WOOD_CRATES: return GetCollisionRatio(b, 1.f, 4.f, 3.f); + case SURFACE_WOOD_BENCH: return GetCollisionRatio(b, 0.1f, 5.f, 4.9f); + case SURFACE_WOOD_SOLID: return GetCollisionRatio(b, 0.1f, 40.f, 39.9f); + case SURFACE_RUBBER: + case SURFACE_WHEELBASE: return GetCollisionRatio(b, 0.f, 10.f, 10.f); + case SURFACE_PLASTIC: return GetCollisionRatio(b, 0.1f, 4.f, 3.9f); + case SURFACE_HEDGE: return GetCollisionRatio(b, 0.f, 0.5f, 0.5f); + case SURFACE_CONTAINER: return GetCollisionRatio(b, 4.f, 40.f, 36.f); + case SURFACE_NEWS_VENDOR: return GetCollisionRatio(b, 0.f, 5.f, 5.f); + } + + return 0.f; +} + +float +cAudioManager::GetCollisionLoopingRatio(uint32 a, uint32 b, float c) +{ + return GetCollisionRatio(c, 0.0f, 0.02f, 0.02f); +} + +float +cAudioManager::GetCollisionRatio(float a, float b, float c, float d) +{ + float e; + e = a; + if(a <= b) return 0.0f; + if(c <= a) e = c; + return (e - b) / d; } diff --git a/src/audio/AudioCollision.h b/src/audio/AudioCollision.h index 0a058916..a201d500 100644 --- a/src/audio/AudioCollision.h +++ b/src/audio/AudioCollision.h @@ -17,7 +17,18 @@ public: float m_fDistance; int32 m_nBaseVolume; - // no methods + cAudioCollision() { Reset(); } + + void Reset() + { + m_pEntity1 = nil; + m_pEntity2 = nil; + m_bSurface1 = 0; + m_bSurface2 = 0; + m_fIntensity1 = m_fIntensity2 = 0.0f; + m_vecPosition = CVector(0.0f, 0.0f, 0.0f); + m_fDistance = 0.0f; + } }; VALIDATE_SIZE(cAudioCollision, 40); @@ -31,7 +42,15 @@ public: uint8 m_bCollisionsInQueue; cAudioCollision m_sQueue; - cAudioCollisionManager(); + cAudioCollisionManager() + { + m_sQueue.Reset(); + + for(int i = 0; i < NUMAUDIOCOLLISIONS; i++) + m_bIndicesTable[i] = NUMAUDIOCOLLISIONS; + + m_bCollisionsInQueue = 0; + } void AddCollisionToRequestedQueue(); }; diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index fdc7305b..44664f8a 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -52,11 +52,8 @@ uint32 gHomeNextTime; uint32 gCellNextTime; uint32 gNextCryTime; -enum PLAY_STATUS { PLAY_STATUS_STOPPED = 0, PLAY_STATUS_PLAYING, PLAY_STATUS_FINISHED }; -enum LOADING_STATUS { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED, LOADING_STATUS_FAILED }; - void -cAudioManager::PreInitialiseGameSpecificSetup() const +cAudioManager::PreInitialiseGameSpecificSetup() { BankStartOffset[SFX_BANK_0] = SAMPLEBANK_START; #ifdef GTA_PS2 @@ -163,6 +160,7 @@ cAudioManager::PostInitialiseGameSpecificSetup() m_sMissionAudio.m_nMissionAudioCounter = 0; ResetAudioLogicTimers(CTimer::GetTimeInMilliseconds()); } + void cAudioManager::PreTerminateGameSpecificShutdown() { @@ -228,7 +226,7 @@ cAudioManager::ResetAudioLogicTimers(uint32 timer) } void -cAudioManager::ProcessReverb() const +cAudioManager::ProcessReverb() { if (SampleManager.UpdateReverb() && m_bDynamicAcousticModelingStatus) { #ifndef GTA_PS2 @@ -248,7 +246,7 @@ cAudioManager::ProcessReverb() const } float -cAudioManager::GetDistanceSquared(const CVector &v) const +cAudioManager::GetDistanceSquared(const CVector &v) { const CVector &c = TheCamera.GetPosition(); return sq(v.x - c.x) + sq(v.y - c.y) + sq((v.z - c.z) * 0.2f); @@ -801,8 +799,6 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) } } - - bool8 cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) { @@ -1063,20 +1059,20 @@ cAudioManager::UpdateGasPedalAudio(CAutomobile *automobile) } void -cAudioManager::PlayerJustGotInCar() const +cAudioManager::PlayerJustGotInCar() { if (m_bIsInitialised) bPlayerJustEnteredCar = TRUE; } void -cAudioManager::PlayerJustLeftCar(void) const +cAudioManager::PlayerJustLeftCar(void) { // UNUSED: This is a perfectly empty function. } void -cAudioManager::AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping) +cAudioManager::AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping) { m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, 50.f, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { @@ -1581,7 +1577,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) } bool8 -cAudioManager::UsesSiren(int32 model) const +cAudioManager::UsesSiren(uint32 model) { switch (model) { case FIRETRUK: @@ -1597,7 +1593,7 @@ cAudioManager::UsesSiren(int32 model) const } bool8 -cAudioManager::UsesSirenSwitching(int32 model) const +cAudioManager::UsesSirenSwitching(uint32 model) { switch (model) { case AMBULAN: @@ -1663,7 +1659,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) } bool8 -cAudioManager::UsesReverseWarning(int32 model) const +cAudioManager::UsesReverseWarning(uint32 model) { return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == COACH; } @@ -1792,7 +1788,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) } bool8 -cAudioManager::HasAirBrakes(int32 model) const +cAudioManager::HasAirBrakes(uint32 model) { return model == LINERUN || model == FIRETRUK || model == TRASH || model == BUS || model == COACH; } @@ -2631,8 +2627,8 @@ uint8 gJumboVolOffsetPercentage; void DoJumboVolOffset() { - if (!(AudioManager.GetFrameCounter() % (AudioManager.GetRandomNumber(0) % 6 + 3))) - gJumboVolOffsetPercentage = AudioManager.GetRandomNumber(1) % 60; + if (!(AudioManager.m_FrameCounter % (AudioManager.m_anRandomTable[0] % 6 + 3))) + gJumboVolOffsetPercentage = AudioManager.m_anRandomTable[1] % 60; } void @@ -2910,7 +2906,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) } int32 -cAudioManager::GetJumboTaxiFreq() const +cAudioManager::GetJumboTaxiFreq() { return (60.833f * m_sQueueSample.m_fDistance) + 22050; } @@ -3565,23 +3561,23 @@ cAudioManager::SetupPedComments(cPedParams ¶ms, uint16 sound) switch (sound) { case SOUND_PED_HELI_PLAYER_FOUND: soundIntensity = 400.0f; - pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_POLICE_HELI_1, SFX_POLICE_HELI_29); + pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 29 + SFX_POLICE_HELI_1; break; case SOUND_PED_BODYCAST_HIT: if (CTimer::GetTimeInMilliseconds() <= gNextCryTime) return; soundIntensity = 50.0f; gNextCryTime = CTimer::GetTimeInMilliseconds() + 500; - pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_PLASTER_BLOKE_1, SFX_PLASTER_BLOKE_4); + pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 4 + SFX_PLASTER_BLOKE_1; break; case SOUND_INJURED_PED_MALE_OUCH: case SOUND_INJURED_PED_MALE_PRISON: soundIntensity = 50.0f; - pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_MALE_GRUNT_1, SFX_GENERIC_MALE_GRUNT_15); + pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 15 + SFX_GENERIC_MALE_GRUNT_1; break; case SOUND_INJURED_PED_FEMALE: soundIntensity = 50.0f; - pedComment.m_nSampleIndex = GetRandomNumberInRange(m_sQueueSample.m_nEntityIndex % 4, SFX_GENERIC_FEMALE_GRUNT_1, SFX_GENERIC_FEMALE_GRUNT_11); + pedComment.m_nSampleIndex = m_anRandomTable[m_sQueueSample.m_nEntityIndex % 4] % 11 + SFX_GENERIC_FEMALE_GRUNT_1; break; default: return; @@ -3618,7 +3614,7 @@ cAudioManager::SetupPedComments(cPedParams ¶ms, uint16 sound) } int32 -cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound) +cAudioManager::GetPedCommentSfx(CPed *ped, uint16 sound) { if (ped->IsPlayer()) return GetPlayerTalkSfx(sound); @@ -3639,7 +3635,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound) case MI_MALE01: return GetNormalMaleTalkSfx(sound); case MI_TAXI_D: - return GetTaxiDriverTalkSfx(sound); + return GetAsianTaxiDriverTalkSfx(sound); case MI_PIMP: return GetPimpTalkSfx(sound); case MI_GANG01: @@ -3673,7 +3669,7 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound) case MI_SPECIAL04: return GetSpecialCharacterTalkSfx(ped->GetModelIndex(), sound); case MI_MALE02: - return GetMaleNo2TalkSfx(sound); + return GetCasualMaleOldTalkSfx(sound); case MI_MALE03: case MI_P_MAN1: case MI_P_MAN2: @@ -3768,14 +3764,14 @@ cAudioManager::GetPedCommentSfx(CPed *ped, int32 sound) case MI_STUD_WOM: return GetStudentFemaleTalkSfx(sound); case MI_CAS_MAN: - return GetCasualMaleOldTalkSfx(sound); + return GetCasualMaleYoungTalkSfx(sound); default: return GetGenericMaleTalkSfx(sound); } } void -cAudioManager::GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset) const +cAudioManager::GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset) { phrase = sample + m_anRandomTable[m_sQueueSample.m_nEntityIndex & 3] % maxOffset; @@ -3789,7 +3785,7 @@ cAudioManager::GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint #pragma region PED_COMMENTS uint32 -cAudioManager::GetPlayerTalkSfx(int16 sound) +cAudioManager::GetPlayerTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -3812,7 +3808,7 @@ cAudioManager::GetPlayerTalkSfx(int16 sound) } uint32 -cAudioManager::GetCopTalkSfx(int16 sound) +cAudioManager::GetCopTalkSfx(uint16 sound) { uint32 sfx; PedState pedState; @@ -3836,7 +3832,7 @@ cAudioManager::GetCopTalkSfx(int16 sound) } uint32 -cAudioManager::GetSwatTalkSfx(int16 sound) +cAudioManager::GetSwatTalkSfx(uint16 sound) { uint32 sfx; PedState pedState; @@ -3860,7 +3856,7 @@ cAudioManager::GetSwatTalkSfx(int16 sound) } uint32 -cAudioManager::GetFBITalkSfx(int16 sound) +cAudioManager::GetFBITalkSfx(uint16 sound) { uint32 sfx; PedState pedState; @@ -3884,7 +3880,7 @@ cAudioManager::GetFBITalkSfx(int16 sound) } uint32 -cAudioManager::GetArmyTalkSfx(int16 sound) +cAudioManager::GetArmyTalkSfx(uint16 sound) { uint32 sfx; PedState pedState; @@ -3903,7 +3899,7 @@ cAudioManager::GetArmyTalkSfx(int16 sound) } uint32 -cAudioManager::GetMedicTalkSfx(int16 sound) +cAudioManager::GetMedicTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -3931,41 +3927,41 @@ cAudioManager::GetMedicTalkSfx(int16 sound) } uint32 -cAudioManager::GetFiremanTalkSfx(int16 sound) +cAudioManager::GetFiremanTalkSfx(uint16 sound) { return GetGenericMaleTalkSfx(sound); } uint32 -cAudioManager::GetNormalMaleTalkSfx(int16 sound) +cAudioManager::GetBusinessMaleOldTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; switch (sound) { case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_GUN_PANIC_1, 7); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_GUN_PANIC_1, 3); break; case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_CARJACKED_1, 7); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_FIGHT_1, 5); break; case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_DODGE_1, 9); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DODGE_1, 4); break; case SOUND_PED_FLEE_RUN: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_RUN_FROM_FIGHT_1, 5); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MRUN_FROM_FIGHT_1, 5); break; case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_DRIVER_ABUSE_1, 12); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_EYING_1, 8); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_SHOCKED_1, 10); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 5); break; case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_CHAT_1, 25); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CHAT_1, 5); break; default: return GetGenericMaleTalkSfx(sound); @@ -3974,61 +3970,47 @@ cAudioManager::GetNormalMaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetTaxiDriverTalkSfx(int16 sound) +cAudioManager::GetBusinessMaleYoungTalkSfx(uint16 sound, uint32 model) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_ASIAN_TAXI_DRIVER_VOICE_1_CARJACKED_1, 7); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1, 6); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - - return (SFX_ASIAN_TAXI_DRIVER_VOICE_2_DRIVER_ABUSE_1 - SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; -} - -uint32 -cAudioManager::GetPimpTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_UP: - GetPhrase(sfx, lastSfx, SFX_PIMP_GUN_COOL_1, 7); + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_GUN_PANIC_1, 3); break; case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_PIMP_CARJACKED_1, 4); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_DEFEND: - GetPhrase(sfx, lastSfx, SFX_PIMP_FIGHT_1, 9); + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_FIGHT_1, 4); break; case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_PIMP_DODGE_1, 6); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DODGE_1, 4); + break; + case SOUND_PED_FLEE_RUN: + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_RUN_FROM_FIGHT_1, 5); break; case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_PIMP_DRIVER_ABUSE_1, 5); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_PIMP_SHOCKED_1, 2); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); break; case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_PIMP_CHAT_1, 17); + GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CHAT_1, 6); break; default: return GetGenericMaleTalkSfx(sound); } + + if (model == MI_B_MAN3) + sfx += (SFX_BUSINESS_MALE_YOUNG_VOICE_2_DRIVER_ABUSE_1 - SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1); return sfx; } uint32 -cAudioManager::GetMafiaTalkSfx(int16 sound) +cAudioManager::GetMafiaTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4062,7 +4044,7 @@ cAudioManager::GetMafiaTalkSfx(int16 sound) } uint32 -cAudioManager::GetTriadTalkSfx(int16 sound) +cAudioManager::GetTriadTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4099,7 +4081,7 @@ cAudioManager::GetTriadTalkSfx(int16 sound) } uint32 -cAudioManager::GetDiabloTalkSfx(int16 sound) +cAudioManager::GetDiabloTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4140,7 +4122,7 @@ cAudioManager::GetDiabloTalkSfx(int16 sound) } uint32 -cAudioManager::GetYakuzaTalkSfx(int16 sound) +cAudioManager::GetYakuzaTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4171,7 +4153,7 @@ cAudioManager::GetYakuzaTalkSfx(int16 sound) } uint32 -cAudioManager::GetYardieTalkSfx(int16 sound) +cAudioManager::GetYardieTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4208,7 +4190,7 @@ cAudioManager::GetYardieTalkSfx(int16 sound) } uint32 -cAudioManager::GetColumbianTalkSfx(int16 sound) +cAudioManager::GetColumbianTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4242,7 +4224,7 @@ cAudioManager::GetColumbianTalkSfx(int16 sound) } uint32 -cAudioManager::GetHoodTalkSfx(int16 sound) +cAudioManager::GetHoodTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4281,7 +4263,7 @@ cAudioManager::GetHoodTalkSfx(int16 sound) } uint32 -cAudioManager::GetBlackCriminalTalkSfx(int16 sound) +cAudioManager::GetBlackCriminalTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4313,7 +4295,7 @@ cAudioManager::GetBlackCriminalTalkSfx(int16 sound) } uint32 -cAudioManager::GetWhiteCriminalTalkSfx(int16 sound) +cAudioManager::GetWhiteCriminalTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4345,7 +4327,7 @@ cAudioManager::GetWhiteCriminalTalkSfx(int16 sound) } uint32 -cAudioManager::GetMaleNo2TalkSfx(int16 sound) +cAudioManager::GetCasualMaleOldTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4379,79 +4361,13 @@ cAudioManager::GetMaleNo2TalkSfx(int16 sound) } uint32 -cAudioManager::GetBlackProjectMaleTalkSfx(int16 sound, int32 model) +cAudioManager::GetCasualMaleYoungTalkSfx(uint16 sound) { - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch(sound) { - case SOUND_PED_HANDS_UP: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_GUN_COOL_1, 3); break; - case SOUND_PED_CAR_JACKED: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_CARJACKED_1, 2); break; - case SOUND_PED_ROBBED: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_MUGGED_1, 2); break; - case SOUND_PED_ATTACK: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_FIGHT_1, 6); break; - case SOUND_PED_EVADE: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DODGE_1, 5); break; - case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1, 7); break; - case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_EYING_1, 3); break; - case SOUND_PED_CHAT: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_CHAT_1, 6); break; - default: return GetGenericMaleTalkSfx(sound); - } - - if (model == MI_P_MAN2) - sfx += (SFX_BLACK_PROJECT_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1); - return sfx; + return GetGenericMaleTalkSfx(sound); } uint32 -cAudioManager::GetWhiteFatMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch(sound) { - case SOUND_PED_CAR_JACKED: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_CARJACKED_1, 3); break; - case SOUND_PED_ROBBED: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_MUGGED_1, 3); break; - case SOUND_PED_EVADE: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DODGE_1, 9); break; - case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DRIVER_ABUSE_1, 9); break; - case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_LOST_1, 2); break; - case SOUND_PED_CHAT: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_CHAT_1, 9); break; - default: return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBlackFatMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_CARJACKED_1, 4); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_MUGGED_1, 3); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DODGE_1, 7); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_WAIT_DOUBLEBACK: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_LOST_1, 3); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_CHAT_1, 8); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBlackCasualFemaleTalkSfx(int16 sound) +cAudioManager::GetBlackCasualFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4488,7 +4404,7 @@ cAudioManager::GetBlackCasualFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetWhiteCasualFemaleTalkSfx(int16 sound) +cAudioManager::GetWhiteCasualFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4525,7 +4441,7 @@ cAudioManager::GetWhiteCasualFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetFemaleNo3TalkSfx(int16 sound) +cAudioManager::GetFemaleNo3TalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -4562,703 +4478,7 @@ cAudioManager::GetFemaleNo3TalkSfx(int16 sound) } uint32 -cAudioManager::GetBlackFatFemaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_GUN_PANIC_1, 4); - break; - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_SHOCKED_1, 5); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CHAT_1, 7); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetWhiteFatFemaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DODGE_1, 6); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 8); - break; - case SOUND_PED_WAIT_DOUBLEBACK: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_LOST_1, 2); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_SHOCKED_1, 4); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CHAT_1, 8); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBlackFemaleProstituteTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_UP: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_GUN_COOL_1, 4); - break; - case SOUND_PED_ROBBED: - sfx = SFX_BLACK_PROSTITUTE_VOICE_1_MUGGED_1; - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_FIGHT_1, 4); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DODGE_1, 3); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DRIVER_ABUSE_1, 4); - break; - case SOUND_PED_SOLICIT: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_SOLICIT_1, 8); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1, 4); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return (SFX_BLACK_PROSTITUTE_VOICE_2_CHAT_1 - SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; -} - -uint32 -cAudioManager::GetWhiteFemaleProstituteTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_FIGHT_1, 4); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DODGE_1, 3); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DRIVER_ABUSE_1, 4); - break; - case SOUND_PED_SOLICIT: - GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_SOLICIT_1, 8); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1, 4); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return (SFX_WHITE_PROSTITUTE_VOICE_2_CHAT_1 - SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; -} - -uint32 -cAudioManager::GetBlackProjectFemaleOldTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_CARJACKED_1, 6); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_DODGE_1, 10); - break; - case SOUND_PED_FLEE_RUN: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_RUN_FROM_FIGHT_1, 6); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_DRIVER_ABUSE_1, 7); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_SHOCKED_1, 2); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_CHAT_1, 10); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBlackProjectFemaleYoungTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_GUN_PANIC_1, 4); - break; - case SOUND_PED_CAR_JACKED: - sfx = SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_CARJACKED_1; - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_SHOCKED_1, 5); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_CHAT_1, 7); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetChinatownMaleOldTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_FIGHT_1, 5); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DODGE_1, 6); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_EYING_1, 3); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CHAT_1, 7); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetChinatownMaleYoungTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_GUN_PANIC_1, 2); - break; - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_FIGHT_1, 6); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_EYING_1, 3); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CHAT_1, 6); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetChinatownFemaleOldTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); - break; - case SOUND_PED_CHAT_EVENT: - sfx = SFX_CHINATOWN_OLD_FEMALE_VOICE_1_SHOCKED_1; - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_CHAT_1, 6); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetChinatownFemaleYoungTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DODGE_1, 6); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_SHOCKED_1, 4); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CHAT_1, 7); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetLittleItalyMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_FIGHT_1, 5); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1, 7); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CHAT_1, 6); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return (SFX_LITTLE_ITALY_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; -} - -uint32 -cAudioManager::GetLittleItalyFemaleOldTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DODGE_1, 6); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_SHOCKED_1, 4); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CHAT_1, 7); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetLittleItalyFemaleYoungTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DODGE_1, 7); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_EVENT: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_SHOCKED_1, 4); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_CHAT_1, 6); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetWhiteDockerMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_GUN_PANIC_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_FIGHT_1, 3); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DODGE_1, 4); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DRIVER_ABUSE_1, 4); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_EYING_1, 3); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_CHAT_1, 5); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBlackDockerMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_FIGHT_1, 5); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_EYING_1, 3); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_CHAT_1, 5); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetScumMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_GUN_PANIC_1, 5); - break; - case SOUND_PED_ROBBED: - sfx = SFX_SCUM_MALE_VOICE_1_MUGGED_1; - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_FIGHT_1, 10); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_DODGE_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_WAIT_DOUBLEBACK: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_LOST_1, 3); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_EYING_1, 5); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_CHAT_1, 9); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetScumFemaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_GUN_PANIC_1, 4); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_FIGHT_1, 4); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_DODGE_1, 8); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_CHAT_1, 13); - break; - default: - return GetGenericFemaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetWhiteWorkerMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_FIGHT_1, 3); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DODGE_1, 4); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_EYING_1, 2); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_CHAT_1, 6); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBlackWorkerMaleTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_GUN_PANIC_1, 4); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_FIGHT_1, 3); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DODGE_1, 3); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DRIVER_ABUSE_1, 4); - break; - case SOUND_PED_CHAT_SEXY: - GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_EYING_1, 3); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_CHAT_1, 4); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetBusinessMaleYoungTalkSfx(int16 sound, int32 model) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_FIGHT_1, 4); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DODGE_1, 4); - break; - case SOUND_PED_FLEE_RUN: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_RUN_FROM_FIGHT_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_YOUNG_VOICE_1_CHAT_1, 6); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - - if (model == MI_B_MAN3) - sfx += (SFX_BUSINESS_MALE_YOUNG_VOICE_2_DRIVER_ABUSE_1 - SFX_BUSINESS_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1); - return sfx; -} - -uint32 -cAudioManager::GetBusinessMaleOldTalkSfx(int16 sound) -{ - uint32 sfx; - static uint32 lastSfx = NO_SAMPLE; - - switch (sound) { - case SOUND_PED_HANDS_COWER: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_GUN_PANIC_1, 3); - break; - case SOUND_PED_CAR_JACKED: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CARJACKED_1, 2); - break; - case SOUND_PED_ROBBED: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MUGGED_1, 2); - break; - case SOUND_PED_ATTACK: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_FIGHT_1, 5); - break; - case SOUND_PED_EVADE: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DODGE_1, 4); - break; - case SOUND_PED_FLEE_RUN: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_MRUN_FROM_FIGHT_1, 5); - break; - case SOUND_PED_ANNOYED_DRIVER: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 5); - break; - case SOUND_PED_CHAT: - GetPhrase(sfx, lastSfx, SFX_BUSINESS_MALE_OLD_VOICE_1_CHAT_1, 5); - break; - default: - return GetGenericMaleTalkSfx(sound); - } - return sfx; -} - -uint32 -cAudioManager::GetWhiteBusinessFemaleTalkSfx(int16 sound, int32 model) +cAudioManager::GetWhiteBusinessFemaleTalkSfx(uint16 sound, uint32 model) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5298,7 +4518,698 @@ cAudioManager::GetWhiteBusinessFemaleTalkSfx(int16 sound, int32 model) } uint32 -cAudioManager::GetBlackBusinessFemaleTalkSfx(int16 sound) +cAudioManager::GetBlackFatFemaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_SHOCKED_1, 5); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_FEMALE_VOICE_1_CHAT_1, 7); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetWhiteFatMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch(sound) { + case SOUND_PED_CAR_JACKED: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_CARJACKED_1, 3); break; + case SOUND_PED_ROBBED: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_MUGGED_1, 3); break; + case SOUND_PED_EVADE: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DODGE_1, 9); break; + case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_DRIVER_ABUSE_1, 9); break; + case SOUND_PED_WAIT_DOUBLEBACK: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_LOST_1, 2); break; + case SOUND_PED_CHAT: GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_MALE_VOICE_1_CHAT_1, 9); break; + default: return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetBlackFatMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_CARJACKED_1, 4); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_MUGGED_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DODGE_1, 7); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_WAIT_DOUBLEBACK: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_LOST_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_FAT_MALE_VOICE_1_CHAT_1, 8); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetWhiteFatFemaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DODGE_1, 6); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_DRIVER_ABUSE_1, 8); + break; + case SOUND_PED_WAIT_DOUBLEBACK: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_LOST_1, 2); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_SHOCKED_1, 4); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_WHITE_FAT_FEMALE_VOICE_1_CHAT_1, 8); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetBlackFemaleProstituteTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_UP: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_GUN_COOL_1, 4); + break; + case SOUND_PED_ROBBED: + sfx = SFX_BLACK_PROSTITUTE_VOICE_1_MUGGED_1; + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DODGE_1, 3); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_DRIVER_ABUSE_1, 4); + break; + case SOUND_PED_SOLICIT: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_SOLICIT_1, 8); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1, 4); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return (SFX_BLACK_PROSTITUTE_VOICE_2_CHAT_1 - SFX_BLACK_PROSTITUTE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; +} + +uint32 +cAudioManager::GetWhiteFemaleProstituteTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DODGE_1, 3); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_DRIVER_ABUSE_1, 4); + break; + case SOUND_PED_SOLICIT: + GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_SOLICIT_1, 8); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1, 4); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return (SFX_WHITE_PROSTITUTE_VOICE_2_CHAT_1 - SFX_WHITE_PROSTITUTE_VOICE_1_CHAT_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; +} + +uint32 +cAudioManager::GetBlackProjectMaleTalkSfx(uint16 sound, uint32 model) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch(sound) { + case SOUND_PED_HANDS_UP: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_GUN_COOL_1, 3); break; + case SOUND_PED_CAR_JACKED: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_CARJACKED_1, 2); break; + case SOUND_PED_ROBBED: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_MUGGED_1, 2); break; + case SOUND_PED_ATTACK: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_FIGHT_1, 6); break; + case SOUND_PED_EVADE: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DODGE_1, 5); break; + case SOUND_PED_ANNOYED_DRIVER: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1, 7); break; + case SOUND_PED_CHAT_SEXY: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_EYING_1, 3); break; + case SOUND_PED_CHAT: GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_MALE_VOICE_1_CHAT_1, 6); break; + default: return GetGenericMaleTalkSfx(sound); + } + + if (model == MI_P_MAN2) + sfx += (SFX_BLACK_PROJECT_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_BLACK_PROJECT_MALE_VOICE_1_DRIVER_ABUSE_1); + return sfx; +} + +uint32 +cAudioManager::GetBlackProjectFemaleOldTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_CARJACKED_1, 6); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_DODGE_1, 10); + break; + case SOUND_PED_FLEE_RUN: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_RUN_FROM_FIGHT_1, 6); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_SHOCKED_1, 2); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_OLD_VOICE_1_CHAT_1, 10); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetBlackProjectFemaleYoungTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_CAR_JACKED: + sfx = SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_CARJACKED_1; + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_SHOCKED_1, 5); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_PROJECT_FEMALE_YOUNG_VOICE_1_CHAT_1, 7); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetChinatownMaleOldTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_GUN_PANIC_1, 3); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DODGE_1, 6); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_OLD_VOICE_1_CHAT_1, 7); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetChinatownMaleYoungTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_GUN_PANIC_1, 2); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_FIGHT_1, 6); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_MALE_YOUNG_VOICE_1_CHAT_1, 6); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetChinatownFemaleOldTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_GUN_PANIC_1, 3); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); + break; + case SOUND_PED_CHAT_EVENT: + sfx = SFX_CHINATOWN_OLD_FEMALE_VOICE_1_SHOCKED_1; + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_OLD_FEMALE_VOICE_1_CHAT_1, 6); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetChinatownFemaleYoungTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DODGE_1, 6); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_SHOCKED_1, 4); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_CHINATOWN_YOUNG_FEMALE_VOICE_1_CHAT_1, 7); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetLittleItalyMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_GUN_PANIC_1, 3); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_MALE_VOICE_1_CHAT_1, 6); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return (SFX_LITTLE_ITALY_MALE_VOICE_2_DRIVER_ABUSE_1 - SFX_LITTLE_ITALY_MALE_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; +} + +uint32 +cAudioManager::GetLittleItalyFemaleOldTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DODGE_1, 6); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_DRIVER_ABUSE_1, 7); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_SHOCKED_1, 4); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_OLD_FEMALE_VOICE_1_CHAT_1, 7); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetLittleItalyFemaleYoungTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_CARJACKED_1, 2); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DODGE_1, 7); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_SHOCKED_1, 4); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_LITTLE_ITALY_YOUNG_FEMALE_VOICE_1_CHAT_1, 6); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetWhiteDockerMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_GUN_PANIC_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DODGE_1, 4); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_DRIVER_ABUSE_1, 4); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_WHITE_DOCKER_MALE_VOICE_1_CHAT_1, 5); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetBlackDockerMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_GUN_PANIC_1, 3); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_FIGHT_1, 5); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_DOCKER_VOICE_1_CHAT_1, 5); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetScumMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_GUN_PANIC_1, 5); + break; + case SOUND_PED_ROBBED: + sfx = SFX_SCUM_MALE_VOICE_1_MUGGED_1; + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_FIGHT_1, 10); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_DODGE_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_WAIT_DOUBLEBACK: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_LOST_1, 3); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_EYING_1, 5); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_SCUM_MALE_VOICE_1_CHAT_1, 9); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetScumFemaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_ROBBED: + GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_MUGGED_1, 2); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_FIGHT_1, 4); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_DODGE_1, 8); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_DRIVER_ABUSE_1, 5); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_SCUM_FEMALE_VOICE_1_CHAT_1, 13); + break; + default: + return GetGenericFemaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetWhiteWorkerMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_GUN_PANIC_1, 3); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DODGE_1, 4); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_DRIVER_ABUSE_1, 6); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_EYING_1, 2); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_WHITE_WORKER_MALE_VOICE_1_CHAT_1, 6); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetBlackWorkerMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_GUN_PANIC_1, 4); + break; + case SOUND_PED_ATTACK: + GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_FIGHT_1, 3); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DODGE_1, 3); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_DRIVER_ABUSE_1, 4); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_EYING_1, 3); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_BLACK_WORKER_MALE_VOICE_1_CHAT_1, 4); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetBlackBusinessFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5335,7 +5246,7 @@ cAudioManager::GetBlackBusinessFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetSupermodelMaleTalkSfx(int16 sound) +cAudioManager::GetSupermodelMaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5369,7 +5280,7 @@ cAudioManager::GetSupermodelMaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetSupermodelFemaleTalkSfx(int16 sound) +cAudioManager::GetSupermodelFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5400,7 +5311,7 @@ cAudioManager::GetSupermodelFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetStewardMaleTalkSfx(int16 sound) +cAudioManager::GetStewardMaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5428,7 +5339,7 @@ cAudioManager::GetStewardMaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetStewardFemaleTalkSfx(int16 sound) +cAudioManager::GetStewardFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5453,7 +5364,7 @@ cAudioManager::GetStewardFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetFanMaleTalkSfx(int16 sound, int32 model) +cAudioManager::GetFanMaleTalkSfx(uint16 sound, uint32 model) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5484,7 +5395,7 @@ cAudioManager::GetFanMaleTalkSfx(int16 sound, int32 model) } uint32 -cAudioManager::GetFanFemaleTalkSfx(int16 sound) +cAudioManager::GetFanFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5512,7 +5423,7 @@ cAudioManager::GetFanFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetHospitalMaleTalkSfx(int16 sound) +cAudioManager::GetHospitalMaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5540,7 +5451,7 @@ cAudioManager::GetHospitalMaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetHospitalFemaleTalkSfx(int16 sound) +cAudioManager::GetHospitalFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5562,7 +5473,7 @@ cAudioManager::GetHospitalFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetWhiteConstructionWorkerTalkSfx(int16 sound) +cAudioManager::GetWhiteConstructionWorkerTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5596,7 +5507,7 @@ cAudioManager::GetWhiteConstructionWorkerTalkSfx(int16 sound) } uint32 -cAudioManager::GetBlackConstructionWorkerTalkSfx(int16 sound) +cAudioManager::GetBlackConstructionWorkerTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5630,7 +5541,7 @@ cAudioManager::GetBlackConstructionWorkerTalkSfx(int16 sound) } uint32 -cAudioManager::GetShopperFemaleTalkSfx(int16 sound, int32 model) +cAudioManager::GetShopperFemaleTalkSfx(uint16 sound, uint32 model) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5667,7 +5578,7 @@ cAudioManager::GetShopperFemaleTalkSfx(int16 sound, int32 model) } uint32 -cAudioManager::GetStudentMaleTalkSfx(int16 sound) +cAudioManager::GetStudentMaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5701,7 +5612,7 @@ cAudioManager::GetStudentMaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetStudentFemaleTalkSfx(int16 sound) +cAudioManager::GetStudentFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5735,29 +5646,23 @@ cAudioManager::GetStudentFemaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetCasualMaleOldTalkSfx(int16 sound) -{ - return GetGenericMaleTalkSfx(sound); -} - -uint32 -cAudioManager::GetSpecialCharacterTalkSfx(int32 modelIndex, int32 sound) +cAudioManager::GetSpecialCharacterTalkSfx(uint32 modelIndex, uint16 sound) { char *modelName = CModelInfo::GetModelInfo(modelIndex)->GetModelName(); if (!CGeneral::faststricmp(modelName, "eight") || !CGeneral::faststricmp(modelName, "eight2")) { - return GetEightTalkSfx(sound); + return GetEightBallTalkSfx(sound); } if (!CGeneral::faststricmp(modelName, "frankie")) { - return GetFrankieTalkSfx(sound); + return GetSalvatoreTalkSfx(sound); } if (!CGeneral::faststricmp(modelName, "misty")) { return GetMistyTalkSfx(sound); } if (!CGeneral::faststricmp(modelName, "ojg") || !CGeneral::faststricmp(modelName, "ojg_p")) { - return GetOJGTalkSfx(sound); + return GetOldJapTalkSfx(sound); } if (!CGeneral::faststricmp(modelName, "cat")) { - return GetCatatalinaTalkSfx(sound); + return GetCatalinaTalkSfx(sound); } if (!CGeneral::faststricmp(modelName, "bomber")) { return GetBomberTalkSfx(sound); @@ -5777,8 +5682,9 @@ cAudioManager::GetSpecialCharacterTalkSfx(int32 modelIndex, int32 sound) return GetGenericMaleTalkSfx(sound); } + uint32 -cAudioManager::GetEightTalkSfx(int16 sound) +cAudioManager::GetEightBallTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5803,7 +5709,7 @@ cAudioManager::GetEightTalkSfx(int16 sound) } uint32 -cAudioManager::GetFrankieTalkSfx(int16 sound) +cAudioManager::GetSalvatoreTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5828,7 +5734,7 @@ cAudioManager::GetFrankieTalkSfx(int16 sound) } uint32 -cAudioManager::GetMistyTalkSfx(int16 sound) +cAudioManager::GetMistyTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5857,19 +5763,19 @@ cAudioManager::GetMistyTalkSfx(int16 sound) } uint32 -cAudioManager::GetOJGTalkSfx(int16 sound) +cAudioManager::GetOldJapTalkSfx(uint16 sound) { return GetGenericMaleTalkSfx(sound); } uint32 -cAudioManager::GetCatatalinaTalkSfx(int16 sound) +cAudioManager::GetCatalinaTalkSfx(uint16 sound) { return GetGenericFemaleTalkSfx(sound); } uint32 -cAudioManager::GetBomberTalkSfx(int16 sound) +cAudioManager::GetBomberTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5886,7 +5792,7 @@ cAudioManager::GetBomberTalkSfx(int16 sound) } uint32 -cAudioManager::GetSecurityGuardTalkSfx(int16 sound) +cAudioManager::GetSecurityGuardTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5919,7 +5825,7 @@ cAudioManager::GetSecurityGuardTalkSfx(int16 sound) } uint32 -cAudioManager::GetChunkyTalkSfx(int16 sound) +cAudioManager::GetChunkyTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5939,7 +5845,98 @@ cAudioManager::GetChunkyTalkSfx(int16 sound) } uint32 -cAudioManager::GetGenericMaleTalkSfx(int16 sound) +cAudioManager::GetAsianTaxiDriverTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_ASIAN_TAXI_DRIVER_VOICE_1_CARJACKED_1, 7); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1, 6); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + + return (SFX_ASIAN_TAXI_DRIVER_VOICE_2_DRIVER_ABUSE_1 - SFX_ASIAN_TAXI_DRIVER_VOICE_1_DRIVER_ABUSE_1) * (m_sQueueSample.m_nEntityIndex % 2) + sfx; +} + +uint32 +cAudioManager::GetPimpTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_UP: + GetPhrase(sfx, lastSfx, SFX_PIMP_GUN_COOL_1, 7); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_PIMP_CARJACKED_1, 4); + break; + case SOUND_PED_DEFEND: + GetPhrase(sfx, lastSfx, SFX_PIMP_FIGHT_1, 9); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_PIMP_DODGE_1, 6); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_PIMP_DRIVER_ABUSE_1, 5); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_PIMP_SHOCKED_1, 2); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_PIMP_CHAT_1, 17); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetNormalMaleTalkSfx(uint16 sound) +{ + uint32 sfx; + static uint32 lastSfx = NO_SAMPLE; + + switch (sound) { + case SOUND_PED_HANDS_COWER: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_GUN_PANIC_1, 7); + break; + case SOUND_PED_CAR_JACKED: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_CARJACKED_1, 7); + break; + case SOUND_PED_EVADE: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_DODGE_1, 9); + break; + case SOUND_PED_FLEE_RUN: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_RUN_FROM_FIGHT_1, 5); + break; + case SOUND_PED_ANNOYED_DRIVER: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_DRIVER_ABUSE_1, 12); + break; + case SOUND_PED_CHAT_SEXY: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_EYING_1, 8); + break; + case SOUND_PED_CHAT_EVENT: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_SHOCKED_1, 10); + break; + case SOUND_PED_CHAT: + GetPhrase(sfx, lastSfx, SFX_NORMAL_MALE_CHAT_1, 25); + break; + default: + return GetGenericMaleTalkSfx(sound); + } + return sfx; +} + +uint32 +cAudioManager::GetGenericMaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -5965,7 +5962,7 @@ cAudioManager::GetGenericMaleTalkSfx(int16 sound) } uint32 -cAudioManager::GetGenericFemaleTalkSfx(int16 sound) +cAudioManager::GetGenericFemaleTalkSfx(uint16 sound) { uint32 sfx; static uint32 lastSfx = NO_SAMPLE; @@ -8353,7 +8350,7 @@ FindMissionAudioSfx(const char *name) } bool8 -cAudioManager::MissionScriptAudioUsesPoliceChannel(int32 soundMission) const +cAudioManager::MissionScriptAudioUsesPoliceChannel(uint32 soundMission) { switch (soundMission) { case STREAMED_SOUND_MISSION_J6_D: @@ -8394,7 +8391,7 @@ cAudioManager::PreloadMissionAudio(Const char *name) } uint8 -cAudioManager::GetMissionAudioLoadingStatus() const +cAudioManager::GetMissionAudioLoadingStatus() { if (m_bIsInitialised) return m_sMissionAudio.m_nLoadingStatus; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index a113cc93..c3565828 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -109,7 +109,9 @@ cAudioManager::Service() if (m_bIsInitialised) { m_nPreviousUserPause = m_nUserPause; m_nUserPause = CTimer::GetIsUserPaused(); +#ifdef GTA_PC UpdateReflections(); +#endif ServiceSoundEffects(); MusicManager.Service(); } @@ -216,35 +218,35 @@ cAudioManager::PlayOneShot(int32 index, uint16 sound, float vol) } void -cAudioManager::SetEffectsMasterVolume(uint8 volume) const +cAudioManager::SetEffectsMasterVolume(uint8 volume) { SampleManager.SetEffectsMasterVolume(volume); } void -cAudioManager::SetMusicMasterVolume(uint8 volume) const +cAudioManager::SetMusicMasterVolume(uint8 volume) { SampleManager.SetMusicMasterVolume(volume); } void -cAudioManager::SetEffectsFadeVol(uint8 volume) const +cAudioManager::SetEffectsFadeVol(uint8 volume) { SampleManager.SetEffectsFadeVolume(volume); } +void +cAudioManager::SetMusicFadeVol(uint8 volume) +{ + SampleManager.SetMusicFadeVolume(volume); +} + void cAudioManager::SetMonoMode(bool8 mono) { SampleManager.SetMonoMode(mono); } -void -cAudioManager::SetMusicFadeVol(uint8 volume) const -{ - SampleManager.SetMusicFadeVolume(volume); -} - void cAudioManager::ResetTimers(uint32 time) { @@ -307,8 +309,10 @@ cAudioManager::DestroyAllGameCreatedEntities() } } +#ifdef GTA_PC + uint8 -cAudioManager::GetNum3DProvidersAvailable() const +cAudioManager::GetNum3DProvidersAvailable() { if (m_bIsInitialised) return SampleManager.GetNum3DProvidersAvailable(); @@ -316,7 +320,7 @@ cAudioManager::GetNum3DProvidersAvailable() const } char * -cAudioManager::Get3DProviderName(uint8 id) const +cAudioManager::Get3DProviderName(uint8 id) { if (!m_bIsInitialised) return nil; @@ -331,7 +335,7 @@ cAudioManager::Get3DProviderName(uint8 id) const } int8 -cAudioManager::GetCurrent3DProviderIndex() const +cAudioManager::GetCurrent3DProviderIndex() { if (m_bIsInitialised) return SampleManager.GetCurrent3DProviderIndex(); @@ -363,13 +367,13 @@ cAudioManager::SetCurrent3DProvider(uint8 which) } void -cAudioManager::SetSpeakerConfig(int32 conf) const +cAudioManager::SetSpeakerConfig(int32 conf) { SampleManager.SetSpeakerConfig(conf); } bool8 -cAudioManager::IsMP3RadioChannelAvailable() const +cAudioManager::IsMP3RadioChannelAvailable() { if (m_bIsInitialised) return SampleManager.IsMP3RadioChannelAvailable(); @@ -378,7 +382,7 @@ cAudioManager::IsMP3RadioChannelAvailable() const } void -cAudioManager::ReleaseDigitalHandle() const +cAudioManager::ReleaseDigitalHandle() { if (m_bIsInitialised) { SampleManager.ReleaseDigitalHandle(); @@ -386,7 +390,7 @@ cAudioManager::ReleaseDigitalHandle() const } void -cAudioManager::ReacquireDigitalHandle() const +cAudioManager::ReacquireDigitalHandle() { if (m_bIsInitialised) { SampleManager.ReacquireDigitalHandle(); @@ -400,13 +404,13 @@ cAudioManager::SetDynamicAcousticModelingStatus(bool8 status) } bool8 -cAudioManager::CheckForAnAudioFileOnCD() const +cAudioManager::CheckForAnAudioFileOnCD() { return SampleManager.CheckForAnAudioFileOnCD(); } char -cAudioManager::GetCDAudioDriveLetter() const +cAudioManager::GetCDAudioDriveLetter() { if (m_bIsInitialised) return SampleManager.GetCDAudioDriveLetter(); @@ -415,11 +419,13 @@ cAudioManager::GetCDAudioDriveLetter() const } bool8 -cAudioManager::IsAudioInitialised() const +cAudioManager::IsAudioInitialised() { return m_bIsInitialised; } +#endif // GTA_PC + void cAudioManager::ServiceSoundEffects() { @@ -469,8 +475,14 @@ cAudioManager::ServiceSoundEffects() m_sAudioScriptObjectManager.m_nScriptObjectEntityTotal = 0; } +uint32 +cAudioManager::FL(float f) +{ + return SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) * f; +} + uint8 -cAudioManager::ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) const +cAudioManager::ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) { float newSoundIntensity; if (soundIntensity <= 0.0f) @@ -482,7 +494,7 @@ cAudioManager::ComputeVolume(uint8 emittingVolume, float soundIntensity, float d } void -cAudioManager::TranslateEntity(Const CVector *in, CVector *out) const +cAudioManager::TranslateEntity(Const CVector *in, CVector *out) { *out = MultiplyInverse(TheCamera.GetMatrix(), *in); } @@ -501,7 +513,7 @@ cAudioManager::ComputePan(float dist, CVector *vec) } int32 -cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier) const +cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier) { uint32 newFreq = oldFreq; if (!TheCamera.Get_Just_Switched_Status() && speedMultiplier != 0.0f) { @@ -522,7 +534,7 @@ cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, } int32 -cAudioManager::RandomDisplacement(uint32 seed) const +cAudioManager::RandomDisplacement(uint32 seed) { int32 value; @@ -593,6 +605,7 @@ cAudioManager::AddSampleToRequestedQueue() AddReflectionsToRequestedQueue(); } } + void cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) { @@ -610,6 +623,7 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] = sample; } +#ifdef GTA_PC void cAudioManager::AddReflectionsToRequestedQueue() { @@ -687,6 +701,7 @@ cAudioManager::UpdateReflections() m_afReflectionsDistances[4] = 50.0f; } } +#endif // GTA_PC void cAudioManager::AddReleasingSounds() @@ -964,6 +979,13 @@ cAudioManager::ClearActiveSamples() } } +void +cAudioManager::LoadBankIfNecessary(uint8 bank) +{ + if(!SampleManager.IsSampleBankLoaded(bank)) + SampleManager.LoadSampleBank(bank); +} + void cAudioManager::GenerateIntegerRandomNumberTable() { diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 70302745..7c591a1e 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -20,8 +20,8 @@ public: #ifndef GTA_PS2 int32 m_nLoopStart; int32 m_nLoopEnd; -#endif uint8 m_nEmittingVolume; +#endif float m_fSpeedMultiplier; float m_fSoundIntensity; bool8 m_bReleasingSoundFlag; @@ -183,6 +183,9 @@ enum { MAX_REFLECTIONS, }; +enum PLAY_STATUS { PLAY_STATUS_STOPPED = 0, PLAY_STATUS_PLAYING, PLAY_STATUS_FINISHED }; +enum LOADING_STATUS { LOADING_STATUS_NOT_LOADED = 0, LOADING_STATUS_LOADED, LOADING_STATUS_FAILED }; + class cAudioManager { public: @@ -204,8 +207,10 @@ public: tAudioEntity m_asAudioEntities[NUM_AUDIOENTITIES]; int32 m_anAudioEntityIndices[NUM_AUDIOENTITIES]; int32 m_nAudioEntitiesTotal; +#ifdef GTA_PC CVector m_avecReflectionsPos[NUM_AUDIO_REFLECTIONS]; float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; +#endif cAudioScriptObjectManager m_sAudioScriptObjectManager; cPedComments m_sPedComments; int32 m_nFireAudioEntity; @@ -227,277 +232,279 @@ public: cAudioManager(); ~cAudioManager(); - // getters - uint32 GetFrameCounter() const { return m_FrameCounter; } - float GetReflectionsDistance(int32 idx) const { return m_afReflectionsDistances[idx]; } - int32 GetRandomNumber(int32 idx) const { return m_anRandomTable[idx]; } - int32 GetRandomNumberInRange(int32 idx, int32 low, int32 high) const { return (m_anRandomTable[idx] % (high - low + 1)) + low; } - bool8 ShouldDuckMissionAudio() const { return m_sMissionAudio.m_nPlayStatus == 1; } - - // "Should" be in alphabetic order, except "getXTalkSfx" - void AddDetailsToRequestedOrderList(uint8 sample); - void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 bank, - uint8 counter, bool8 notLooping); - void AddReflectionsToRequestedQueue(); - void AddReleasingSounds(); - void AddSampleToRequestedQueue(); - void AgeCrimes(); - - void CalculateDistance(bool8 &condition, float dist); - bool8 CheckForAnAudioFileOnCD() const; - void ClearActiveSamples(); - void ClearMissionAudio(); - void ClearRequestedQueue(); - int32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, - float speedMultiplier) const; - int32 ComputePan(float, CVector *); - uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) const; - int32 CreateEntity(eAudioType type, void *entity); - - void DestroyAllGameCreatedEntities(); - void DestroyEntity(int32 id); - void DoPoliceRadioCrackle(); - - // functions returning talk sfx, - // order from GetPedCommentSfx - uint32 GetPlayerTalkSfx(int16 sound); - uint32 GetCopTalkSfx(int16 sound); - uint32 GetSwatTalkSfx(int16 sound); - uint32 GetFBITalkSfx(int16 sound); - uint32 GetArmyTalkSfx(int16 sound); - uint32 GetMedicTalkSfx(int16 sound); - uint32 GetFiremanTalkSfx(int16 sound); - uint32 GetNormalMaleTalkSfx(int16 sound); - uint32 GetTaxiDriverTalkSfx(int16 sound); - uint32 GetPimpTalkSfx(int16 sound); - uint32 GetMafiaTalkSfx(int16 sound); - uint32 GetTriadTalkSfx(int16 sound); - uint32 GetDiabloTalkSfx(int16 sound); - uint32 GetYakuzaTalkSfx(int16 sound); - uint32 GetYardieTalkSfx(int16 sound); - uint32 GetColumbianTalkSfx(int16 sound); - uint32 GetHoodTalkSfx(int16 sound); - uint32 GetBlackCriminalTalkSfx(int16 sound); - uint32 GetWhiteCriminalTalkSfx(int16 sound); - uint32 GetMaleNo2TalkSfx(int16 sound); - uint32 GetBlackProjectMaleTalkSfx(int16 sound, int32 model); - uint32 GetWhiteFatMaleTalkSfx(int16 sound); - uint32 GetBlackFatMaleTalkSfx(int16 sound); - uint32 GetBlackCasualFemaleTalkSfx(int16 sound); - uint32 GetWhiteCasualFemaleTalkSfx(int16 sound); - uint32 GetFemaleNo3TalkSfx(int16 sound); - uint32 GetBlackFatFemaleTalkSfx(int16 sound); - uint32 GetWhiteFatFemaleTalkSfx(int16 sound); - uint32 GetBlackFemaleProstituteTalkSfx(int16 sound); - uint32 GetWhiteFemaleProstituteTalkSfx(int16 sound); - uint32 GetBlackProjectFemaleOldTalkSfx(int16 sound); - uint32 GetBlackProjectFemaleYoungTalkSfx(int16 sound); - uint32 GetChinatownMaleOldTalkSfx(int16 sound); - uint32 GetChinatownMaleYoungTalkSfx(int16 sound); - uint32 GetChinatownFemaleOldTalkSfx(int16 sound); - uint32 GetChinatownFemaleYoungTalkSfx(int16 sound); - uint32 GetLittleItalyMaleTalkSfx(int16 sound); - uint32 GetLittleItalyFemaleOldTalkSfx(int16 sound); - uint32 GetLittleItalyFemaleYoungTalkSfx(int16 sound); - uint32 GetWhiteDockerMaleTalkSfx(int16 sound); - uint32 GetBlackDockerMaleTalkSfx(int16 sound); - uint32 GetScumMaleTalkSfx(int16 sound); - uint32 GetScumFemaleTalkSfx(int16 sound); - uint32 GetWhiteWorkerMaleTalkSfx(int16 sound); - uint32 GetBlackWorkerMaleTalkSfx(int16 sound); - uint32 GetBusinessMaleYoungTalkSfx(int16 sound, int32 model); - uint32 GetBusinessMaleOldTalkSfx(int16 sound); - uint32 GetWhiteBusinessFemaleTalkSfx(int16 sound, int32 model); - uint32 GetBlackBusinessFemaleTalkSfx(int16 sound); - uint32 GetSupermodelMaleTalkSfx(int16 sound); - uint32 GetSupermodelFemaleTalkSfx(int16 sound); - uint32 GetStewardMaleTalkSfx(int16 sound); - uint32 GetStewardFemaleTalkSfx(int16 sound); - uint32 GetFanMaleTalkSfx(int16 sound, int32 model); - uint32 GetFanFemaleTalkSfx(int16 sound); - uint32 GetHospitalMaleTalkSfx(int16 sound); - uint32 GetHospitalFemaleTalkSfx(int16 sound); - uint32 GetWhiteConstructionWorkerTalkSfx(int16 sound); - uint32 GetBlackConstructionWorkerTalkSfx(int16 sound); - uint32 GetShopperFemaleTalkSfx(int16 sound, int32 model); - uint32 GetStudentMaleTalkSfx(int16 sound); - uint32 GetStudentFemaleTalkSfx(int16 sound); - uint32 GetCasualMaleOldTalkSfx(int16 sound); - - uint32 GetSpecialCharacterTalkSfx(int32 modelIndex, int32 sound); - uint32 GetEightTalkSfx(int16 sound); - uint32 GetFrankieTalkSfx(int16 sound); - uint32 GetMistyTalkSfx(int16 sound); - uint32 GetOJGTalkSfx(int16 sound); - uint32 GetCatatalinaTalkSfx(int16 sound); - uint32 GetBomberTalkSfx(int16 sound); - uint32 GetSecurityGuardTalkSfx(int16 sound); - uint32 GetChunkyTalkSfx(int16 sound); - - uint32 GetGenericMaleTalkSfx(int16 sound); - uint32 GetGenericFemaleTalkSfx(int16 sound); - // end of functions returning talk sfx - - void GenerateIntegerRandomNumberTable(); - char *Get3DProviderName(uint8 id) const; - char GetCDAudioDriveLetter() const; - int8 GetCurrent3DProviderIndex() const; - float GetCollisionLoopingRatio(uint32 a, uint32 b, float c) const; // not used - float GetCollisionOneShotRatio(int32 a, float b) const; - float GetCollisionRatio(float a, float b, float c, float d) const; - float GetDistanceSquared(const CVector &v) const; - int32 GetJumboTaxiFreq() const; - uint8 GetMissionAudioLoadingStatus() const; - int8 GetMissionScriptPoliceAudioPlayingStatus() const; - uint8 GetNum3DProvidersAvailable() const; - int32 GetPedCommentSfx(CPed *ped, int32 sound); - void GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset) const; - float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, - cTransmission *transmission, float velocityChange); - float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, - cTransmission *transmission, float velocityChange); - - bool8 HasAirBrakes(int32 model) const; - void Initialise(); - void InitialisePoliceRadio(); - void InitialisePoliceRadioZones(); - void InterrogateAudioEntities(); - bool8 IsAudioInitialised() const; - bool8 IsMissionAudioSampleFinished(); - bool8 IsMP3RadioChannelAvailable() const; - - bool8 MissionScriptAudioUsesPoliceChannel(int32 soundMission) const; - - void PlayLoadedMissionAudio(); - void PlayOneShot(int32 index, uint16 sound, float vol); - void PlaySuspectLastSeen(float x, float y, float z); - void PlayerJustGotInCar() const; - void PlayerJustLeftCar() const; - void PostInitialiseGameSpecificSetup(); - void PostTerminateGameSpecificShutdown(); - void PreInitialiseGameSpecificSetup() const; - void PreloadMissionAudio(Const char *name); - void PreTerminateGameSpecificShutdown(); - /// processX - main logic of adding new sounds - void ProcessActiveQueues(); - bool8 ProcessAirBrakes(cVehicleParams& params); - void ProcessAirportScriptObject(uint8 sound); - bool8 ProcessBoatEngine(cVehicleParams& params); - bool8 ProcessBoatMovingOverWater(cVehicleParams& params); - void ProcessBridge(); - void ProcessBridgeMotor(); - void ProcessBridgeOneShots(); - void ProcessBridgeWarning(); - bool8 ProcessCarBombTick(cVehicleParams& params); - void ProcessCesna(cVehicleParams& params); - void ProcessCinemaScriptObject(uint8 sound); - void ProcessCrane(); - void ProcessDocksScriptObject(uint8 sound); - bool8 ProcessEngineDamage(cVehicleParams& params); - void ProcessEntity(int32 sound); - void ProcessExplosions(int32 explosion); - void ProcessFireHydrant(); - void ProcessFires(int32 entity); - void ProcessFrontEnd(); - void ProcessGarages(); - bool8 ProcessHelicopter(cVehicleParams& params); - void ProcessHomeScriptObject(uint8 sound); - void ProcessJumbo(cVehicleParams& params); - void ProcessJumboAccel(CPlane *plane); - void ProcessJumboDecel(CPlane *plane); - void ProcessJumboFlying(); - void ProcessJumboLanding(CPlane *plane); - void ProcessJumboTakeOff(CPlane *plane); - void ProcessJumboTaxi(); - void ProcessLaunderetteScriptObject(uint8 sound); - void ProcessLoopingScriptObject(uint8 sound); - void ProcessMissionAudio(); - void ProcessModelCarEngine(cVehicleParams& params); - void ProcessOneShotScriptObject(uint8 sound); - void ProcessPed(CPhysical *ped); - void ProcessPedHeadphones(cPedParams ¶ms); - void ProcessPedOneShots(cPedParams ¶ms); - void ProcessPhysical(int32 id); - void ProcessPlane(cVehicleParams& params); - void ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile *automobile); - void ProcessPoliceCellBeatingScriptObject(uint8 sound); - void ProcessPornCinema(uint8 sound); - void ProcessProjectiles(); - void ProcessRainOnVehicle(cVehicleParams& params); - void ProcessReverb() const; - bool8 ProcessReverseGear(cVehicleParams& params); - void ProcessSawMillScriptObject(uint8 sound); - void ProcessScriptObject(int32 id); - void ProcessShopScriptObject(uint8 sound); - void ProcessSpecial(); - bool8 ProcessTrainNoise(cVehicleParams& params); - void ProcessVehicle(CVehicle *vehicle); - bool8 ProcessVehicleDoors(cVehicleParams& params); - void ProcessVehicleEngine(cVehicleParams& params); - void ProcessVehicleHorn(cVehicleParams& params); - void ProcessVehicleOneShots(cVehicleParams& params); - bool8 ProcessVehicleReverseWarning(cVehicleParams& params); - bool8 ProcessVehicleRoadNoise(cVehicleParams& params); - bool8 ProcessVehicleSirenOrAlarm(cVehicleParams& params); - bool8 ProcessVehicleSkidding(cVehicleParams& params); - void ProcessWaterCannon(int32); - void ProcessWeather(int32 id); - bool8 ProcessWetRoadNoise(cVehicleParams& params); - void ProcessWorkShopScriptObject(uint8 sound); - - int32 RandomDisplacement(uint32 seed) const; - void ReacquireDigitalHandle() const; - void ReleaseDigitalHandle() const; - void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, - float collisionPower, float intensity2); - void ReportCrime(eCrimeType crime, const CVector &pos); - void ResetAudioLogicTimers(uint32 timer); - void ResetPoliceRadio(); - void ResetTimers(uint32 time); - - void Service(); - void ServiceCollisions(); - void ServicePoliceRadio(); - void ServicePoliceRadioChannel(uint8 wantedLevel); - void ServiceSoundEffects(); - int8 SetCurrent3DProvider(uint8 which); - void SetDynamicAcousticModelingStatus(bool8 status); - void SetEffectsFadeVol(uint8 volume) const; - void SetEffectsMasterVolume(uint8 volume) const; - void SetEntityStatus(int32 id, bool8 status); - uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision); - void SetMissionAudioLocation(float x, float y, float z); - void SetMissionScriptPoliceAudio(int32 sfx) const; - void SetMonoMode(bool8 mono); - void SetMusicFadeVol(uint8 volume) const; - void SetMusicMasterVolume(uint8 volume) const; - void SetSpeakerConfig(int32 conf) const; - void SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter); - void SetUpOneShotCollisionSound(const cAudioCollision &col); - bool8 SetupCrimeReport(); - bool8 SetupJumboEngineSound(uint8 vol, uint32 freq); - bool8 SetupJumboFlySound(uint8 emittingVol); - bool8 SetupJumboRumbleSound(uint8 emittingVol); - bool8 SetupJumboTaxiSound(uint8 vol); - bool8 SetupJumboWhineSound(uint8 emittingVol, uint32 freq); - void SetupPedComments(cPedParams ¶ms, uint16 sound); - void SetupSuspectLastSeenReport(); - void Terminate(); - void TranslateEntity(Const CVector *v1, CVector *v2) const; - - void UpdateGasPedalAudio(CAutomobile *automobile); - void UpdateReflections(); - bool8 UsesReverseWarning(int32 model) const; - bool8 UsesSiren(int32 model) const; - bool8 UsesSirenSwitching(int32 model) const; + void Service(); + int32 CreateEntity(eAudioType type, void *entity); + void DestroyEntity(int32 id); + void SetEntityStatus(int32 id, bool8 status); + void PlayOneShot(int32 index, uint16 sound, float vol); + void SetEffectsMasterVolume(uint8 volume); + void SetMusicMasterVolume(uint8 volume); + void SetEffectsFadeVol(uint8 volume); + void SetMusicFadeVol(uint8 volume); + void SetMonoMode(bool8 mono); + void ResetTimers(uint32 time); + void DestroyAllGameCreatedEntities(); + +#ifdef GTA_PC + uint8 GetNum3DProvidersAvailable(); + char *Get3DProviderName(uint8 id); + int8 GetCurrent3DProviderIndex(); + int8 SetCurrent3DProvider(uint8 which); + void SetSpeakerConfig(int32 conf); + bool8 IsMP3RadioChannelAvailable(); + void ReleaseDigitalHandle(); + void ReacquireDigitalHandle(); + void SetDynamicAcousticModelingStatus(bool8 status); + bool8 CheckForAnAudioFileOnCD(); + char GetCDAudioDriveLetter(); + bool8 IsAudioInitialised(); +#endif + + void ServiceSoundEffects(); + uint32 FL(float f); // not used + uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance); + void TranslateEntity(Const CVector *v1, CVector *v2); + int32 ComputePan(float, CVector *); + int32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier); // inlined on PS2 + int32 RandomDisplacement(uint32 seed); + void InterrogateAudioEntities(); // inlined on PS2 + void AddSampleToRequestedQueue(); + void AddDetailsToRequestedOrderList(uint8 sample); // inlined on PS2 +#ifdef GTA_PC + void AddReflectionsToRequestedQueue(); + void UpdateReflections(); +#endif + void AddReleasingSounds(); + void ProcessActiveQueues(); + void ClearRequestedQueue(); // inlined on PS2 + void ClearActiveSamples(); + void GenerateIntegerRandomNumberTable(); // inlined on PS2 + void LoadBankIfNecessary(uint8 bank); // this is used only on PS2 but technically not a platform code #ifdef GTA_PC - // only used in pc void AdjustSamplesVolume(); uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist); #endif + + // audio logic + void PreInitialiseGameSpecificSetup(); + void PostInitialiseGameSpecificSetup(); + void PreTerminateGameSpecificShutdown(); + void PostTerminateGameSpecificShutdown(); + void ResetAudioLogicTimers(uint32 timer); + void ProcessReverb(); + float GetDistanceSquared(const CVector &v); + void CalculateDistance(bool8 &condition, float dist); + void ProcessSpecial(); + void ProcessEntity(int32 sound); + void ProcessPhysical(int32 id); + void ProcessVehicle(CVehicle *vehicle); + void ProcessRainOnVehicle(cVehicleParams ¶ms); + bool8 ProcessReverseGear(cVehicleParams ¶ms); + void ProcessModelCarEngine(cVehicleParams ¶ms); + bool8 ProcessVehicleRoadNoise(cVehicleParams ¶ms); + bool8 ProcessWetRoadNoise(cVehicleParams ¶ms); + + // vehicles + void ProcessVehicleEngine(cVehicleParams ¶ms); + void UpdateGasPedalAudio(CAutomobile *automobile); // inlined on PS2 + void PlayerJustGotInCar(); + void PlayerJustLeftCar(); + void AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping); + void ProcessCesna(cVehicleParams ¶ms); + void ProcessPlayersVehicleEngine(cVehicleParams ¶ms, CAutomobile *automobile); + bool8 ProcessVehicleSkidding(cVehicleParams ¶ms); + float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); + float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); // was in .h on PS2 + void ProcessVehicleHorn(cVehicleParams ¶ms); + bool8 UsesSiren(uint32 model); // inlined on PS2 + bool8 UsesSirenSwitching(uint32 model); // inlined on PS2 + bool8 ProcessVehicleSirenOrAlarm(cVehicleParams ¶ms); + bool8 UsesReverseWarning(uint32 model); // inlined on PS2 + bool8 ProcessVehicleReverseWarning(cVehicleParams ¶ms); + bool8 ProcessVehicleDoors(cVehicleParams ¶ms); + bool8 ProcessAirBrakes(cVehicleParams ¶ms); + bool8 HasAirBrakes(uint32 model); // inlined on PS2 + bool8 ProcessEngineDamage(cVehicleParams ¶ms); + bool8 ProcessCarBombTick(cVehicleParams ¶ms); + void ProcessVehicleOneShots(cVehicleParams ¶ms); + bool8 ProcessTrainNoise(cVehicleParams ¶ms); + bool8 ProcessBoatEngine(cVehicleParams ¶ms); + bool8 ProcessBoatMovingOverWater(cVehicleParams ¶ms); + bool8 ProcessHelicopter(cVehicleParams ¶ms); + void ProcessPlane(cVehicleParams ¶ms); // inlined on PS2 + void ProcessJumbo(cVehicleParams ¶ms); + void ProcessJumboTaxi(); // inlined on PS2 + void ProcessJumboAccel(CPlane *plane); + void ProcessJumboTakeOff(CPlane *plane); // inlined on PS2 + void ProcessJumboFlying(); // inlined on PS2 + void ProcessJumboLanding(CPlane *plane); // inlined on PS2 + void ProcessJumboDecel(CPlane *plane); // inlined on PS2 + bool8 SetupJumboTaxiSound(uint8 vol); + bool8 SetupJumboWhineSound(uint8 emittingVol, uint32 freq); + bool8 SetupJumboEngineSound(uint8 vol, uint32 freq); + bool8 SetupJumboFlySound(uint8 emittingVol); + bool8 SetupJumboRumbleSound(uint8 emittingVol); + int32 GetJumboTaxiFreq(); // inlined on PS2 + + // peds + void ProcessPed(CPhysical *ped); // inlined on PS2 + void ProcessPedHeadphones(cPedParams ¶ms); + void ProcessPedOneShots(cPedParams ¶ms); + + // ped comments + void SetupPedComments(cPedParams ¶ms, uint16 sound); + int32 GetPedCommentSfx(CPed *ped, uint16 sound); + void GetPhrase(uint32 &phrase, uint32 &prevPhrase, uint32 sample, uint32 maxOffset); // inlined on PS2 + uint32 GetPlayerTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetCopTalkSfx(uint16 sound); + uint32 GetSwatTalkSfx(uint16 sound); + uint32 GetFBITalkSfx(uint16 sound); + uint32 GetArmyTalkSfx(uint16 sound); + uint32 GetMedicTalkSfx(uint16 sound); + uint32 GetFiremanTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetBusinessMaleOldTalkSfx(uint16 sound); + uint32 GetBusinessMaleYoungTalkSfx(uint16 sound, uint32 model); + uint32 GetMafiaTalkSfx(uint16 sound); + uint32 GetTriadTalkSfx(uint16 sound); + uint32 GetDiabloTalkSfx(uint16 sound); + uint32 GetYakuzaTalkSfx(uint16 sound); + uint32 GetYardieTalkSfx(uint16 sound); + uint32 GetColumbianTalkSfx(uint16 sound); + uint32 GetHoodTalkSfx(uint16 sound); + uint32 GetBlackCriminalTalkSfx(uint16 sound); + uint32 GetWhiteCriminalTalkSfx(uint16 sound); + uint32 GetCasualMaleOldTalkSfx(uint16 sound); + uint32 GetCasualMaleYoungTalkSfx(uint16 sound); + uint32 GetBlackCasualFemaleTalkSfx(uint16 sound); + uint32 GetWhiteCasualFemaleTalkSfx(uint16 sound); + uint32 GetFemaleNo3TalkSfx(uint16 sound); + uint32 GetWhiteBusinessFemaleTalkSfx(uint16 sound, uint32 model); + uint32 GetBlackFatFemaleTalkSfx(uint16 sound); + uint32 GetWhiteFatMaleTalkSfx(uint16 sound); + uint32 GetBlackFatMaleTalkSfx(uint16 sound); + uint32 GetWhiteFatFemaleTalkSfx(uint16 sound); + uint32 GetBlackFemaleProstituteTalkSfx(uint16 sound); + uint32 GetWhiteFemaleProstituteTalkSfx(uint16 sound); + uint32 GetBlackProjectMaleTalkSfx(uint16 sound, uint32 model); + uint32 GetBlackProjectFemaleOldTalkSfx(uint16 sound); + uint32 GetBlackProjectFemaleYoungTalkSfx(uint16 sound); + uint32 GetChinatownMaleOldTalkSfx(uint16 sound); + uint32 GetChinatownMaleYoungTalkSfx(uint16 sound); + uint32 GetChinatownFemaleOldTalkSfx(uint16 sound); + uint32 GetChinatownFemaleYoungTalkSfx(uint16 sound); + uint32 GetLittleItalyMaleTalkSfx(uint16 sound); + uint32 GetLittleItalyFemaleOldTalkSfx(uint16 sound); + uint32 GetLittleItalyFemaleYoungTalkSfx(uint16 sound); + uint32 GetWhiteDockerMaleTalkSfx(uint16 sound); + uint32 GetBlackDockerMaleTalkSfx(uint16 sound); + uint32 GetScumMaleTalkSfx(uint16 sound); + uint32 GetScumFemaleTalkSfx(uint16 sound); + uint32 GetWhiteWorkerMaleTalkSfx(uint16 sound); + uint32 GetBlackWorkerMaleTalkSfx(uint16 sound); + uint32 GetBlackBusinessFemaleTalkSfx(uint16 sound); + uint32 GetSupermodelMaleTalkSfx(uint16 sound); + uint32 GetSupermodelFemaleTalkSfx(uint16 sound); + uint32 GetStewardMaleTalkSfx(uint16 sound); + uint32 GetStewardFemaleTalkSfx(uint16 sound); + uint32 GetFanMaleTalkSfx(uint16 sound, uint32 model); + uint32 GetFanFemaleTalkSfx(uint16 sound); + uint32 GetHospitalMaleTalkSfx(uint16 sound); + uint32 GetHospitalFemaleTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetWhiteConstructionWorkerTalkSfx(uint16 sound); + uint32 GetBlackConstructionWorkerTalkSfx(uint16 sound); + uint32 GetShopperFemaleTalkSfx(uint16 sound, uint32 model); + uint32 GetStudentMaleTalkSfx(uint16 sound); + uint32 GetStudentFemaleTalkSfx(uint16 sound); + + uint32 GetSpecialCharacterTalkSfx(uint32 modelIndex, uint16 sound); + uint32 GetEightBallTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetSalvatoreTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetMistyTalkSfx(uint16 sound); + uint32 GetOldJapTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetCatalinaTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetBomberTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetSecurityGuardTalkSfx(uint16 sound); + uint32 GetChunkyTalkSfx(uint16 sound); // inlined on PS2 + + uint32 GetAsianTaxiDriverTalkSfx(uint16 sound); // inlined on PS2 + uint32 GetPimpTalkSfx(uint16 sound); + uint32 GetNormalMaleTalkSfx(uint16 sound); + uint32 GetGenericMaleTalkSfx(uint16 sound); + uint32 GetGenericFemaleTalkSfx(uint16 sound); + + // particles + void ProcessExplosions(int32 explosion); + void ProcessFires(int32 entity); + void ProcessWaterCannon(int32); + + // script objects + void ProcessScriptObject(int32 id); // inlined on PS2 + void ProcessOneShotScriptObject(uint8 sound); + void ProcessLoopingScriptObject(uint8 sound); + void ProcessPornCinema(uint8 sound); + void ProcessWorkShopScriptObject(uint8 sound); + void ProcessSawMillScriptObject(uint8 sound); + void ProcessLaunderetteScriptObject(uint8 sound); + void ProcessShopScriptObject(uint8 sound); + void ProcessAirportScriptObject(uint8 sound); + void ProcessCinemaScriptObject(uint8 sound); + void ProcessDocksScriptObject(uint8 sound); + void ProcessHomeScriptObject(uint8 sound); + void ProcessPoliceCellBeatingScriptObject(uint8 sound); + + // misc + void ProcessWeather(int32 id); + void ProcessFrontEnd(); + void ProcessCrane(); + void ProcessProjectiles(); + void ProcessGarages(); + void ProcessFireHydrant(); + + // bridge + void ProcessBridge(); // inlined on PS2 + void ProcessBridgeWarning(); + void ProcessBridgeMotor(); + void ProcessBridgeOneShots(); + + // mission audio + bool8 MissionScriptAudioUsesPoliceChannel(uint32 soundMission); + void PreloadMissionAudio(Const char *name); + uint8 GetMissionAudioLoadingStatus(); + void SetMissionAudioLocation(float x, float y, float z); + void PlayLoadedMissionAudio(); + bool8 IsMissionAudioSampleFinished(); + bool8 IsMissionAudioSamplePlaying() { return m_sMissionAudio.m_nPlayStatus == PLAY_STATUS_PLAYING; } + bool8 ShouldDuckMissionAudio() { return IsMissionAudioSamplePlaying(); } + void ClearMissionAudio(); + void ProcessMissionAudio(); + + // police radio + void InitialisePoliceRadioZones(); + void InitialisePoliceRadio(); + void ResetPoliceRadio(); + void SetMissionScriptPoliceAudio(int32 sfx); + int8 GetMissionScriptPoliceAudioPlayingStatus(); + void DoPoliceRadioCrackle(); + void ServicePoliceRadio(); + void ServicePoliceRadioChannel(uint8 wantedLevel); + bool8 SetupCrimeReport(); + void SetupSuspectLastSeenReport(); + void ReportCrime(eCrimeType crime, const CVector &pos); + void PlaySuspectLastSeen(float x, float y, float z); + void AgeCrimes(); // inlined on PS2 + + // collision stuff + void ReportCollision(CEntity *entity1, CEntity *entity2, uint8 surface1, uint8 surface2, float collisionPower, float intensity2); + void ServiceCollisions(); + void SetUpOneShotCollisionSound(const cAudioCollision &col); + void SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 counter); + uint32 SetLoopingCollisionRequestedSfxFreqAndGetVol(const cAudioCollision &audioCollision); + float GetCollisionOneShotRatio(uint32 a, float b); + float GetCollisionLoopingRatio(uint32 a, uint32 b, float c); // not used + float GetCollisionRatio(float a, float b, float c, float d); // inlined on PS2 }; /* diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index cb441622..815e55f2 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -236,23 +236,23 @@ cMusicManager::Initialise() if (!IsInitialised()) { time_t timevalue = time(0); if (timevalue == -1) { - pos = AudioManager.GetRandomNumber(0); + pos = AudioManager.m_anRandomTable[0]; } else { tm *pTm = localtime(&timevalue); if (pTm->tm_sec == 0) - pTm->tm_sec = AudioManager.GetRandomNumber(0); + pTm->tm_sec = AudioManager.m_anRandomTable[0]; if (pTm->tm_min == 0) - pTm->tm_min = AudioManager.GetRandomNumber(1); + pTm->tm_min = AudioManager.m_anRandomTable[1]; if (pTm->tm_hour == 0) - pTm->tm_hour = AudioManager.GetRandomNumber(2); + pTm->tm_hour = AudioManager.m_anRandomTable[2]; if (pTm->tm_mday == 0) - pTm->tm_mday = AudioManager.GetRandomNumber(3); + pTm->tm_mday = AudioManager.m_anRandomTable[3]; if (pTm->tm_mon == 0) - pTm->tm_mon = AudioManager.GetRandomNumber(4); + pTm->tm_mon = AudioManager.m_anRandomTable[4]; if (pTm->tm_year == 0) - pTm->tm_year = AudioManager.GetRandomNumber(3); + pTm->tm_year = AudioManager.m_anRandomTable[3]; if (pTm->tm_wday == 0) - pTm->tm_wday = AudioManager.GetRandomNumber(2); + pTm->tm_wday = AudioManager.m_anRandomTable[2]; pos = pTm->tm_yday * pTm->tm_wday * pTm->tm_year @@ -265,7 +265,7 @@ cMusicManager::Initialise() for (int i = 0; i < TOTAL_STREAMED_SOUNDS; i++) { m_aTracks[i].m_nLength = SampleManager.GetStreamedFileLength(i); - m_aTracks[i].m_nPosition = pos * AudioManager.GetRandomNumber(i % 5) % m_aTracks[i].m_nLength; + m_aTracks[i].m_nPosition = pos * AudioManager.m_anRandomTable[i % 5] % m_aTracks[i].m_nLength; m_aTracks[i].m_nLastPosCheckTimer = CTimer::GetTimeInMillisecondsPauseMode(); } @@ -949,7 +949,7 @@ cMusicManager::GetCarTuning() if (veh == nil) return RADIO_OFF; if (UsesPoliceRadio(veh)) return POLICE_RADIO; if (veh->m_nRadioStation == USERTRACK && !SampleManager.IsMP3RadioChannelAvailable()) - veh->m_nRadioStation = AudioManager.GetRandomNumber(2) % USERTRACK; + veh->m_nRadioStation = AudioManager.m_anRandomTable[2] % USERTRACK; return veh->m_nRadioStation; } diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 235a53d3..9a98de35 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -106,7 +106,7 @@ cAudioManager::ResetPoliceRadio() } void -cAudioManager::SetMissionScriptPoliceAudio(int32 sfx) const +cAudioManager::SetMissionScriptPoliceAudio(int32 sfx) { if (!m_bIsInitialised) return; if (g_nMissionAudioPlayingStatus != 1) { @@ -116,7 +116,7 @@ cAudioManager::SetMissionScriptPoliceAudio(int32 sfx) const } int8 -cAudioManager::GetMissionScriptPoliceAudioPlayingStatus() const +cAudioManager::GetMissionScriptPoliceAudioPlayingStatus() { return g_nMissionAudioPlayingStatus; } @@ -677,8 +677,6 @@ cAudioManager::SetupSuspectLastSeenReport() } } - - void cAudioManager::ReportCrime(eCrimeType type, const CVector &pos) { diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index d529513d..7c40d15d 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -1245,7 +1245,7 @@ cSampleManager::Initialise(void) int32 randval; if ( bUseRandomTable ) - randval = AudioManager.GetRandomNumber(1); + randval = AudioManager.m_anRandomTable[1]; else randval = localtm->tm_sec * localtm->tm_min; @@ -1256,7 +1256,7 @@ cSampleManager::Initialise(void) randmp3 = randmp3->pNext; if ( bUseRandomTable ) - _CurMP3Pos = AudioManager.GetRandomNumber(0) % randmp3->nTrackLength; + _CurMP3Pos = AudioManager.m_anRandomTable[0] % randmp3->nTrackLength; else { if ( localtm->tm_sec > 0 ) @@ -1265,7 +1265,7 @@ cSampleManager::Initialise(void) _CurMP3Pos = s*s*s*s*s*s*s*s % randmp3->nTrackLength; } else - _CurMP3Pos = AudioManager.GetRandomNumber(0) % randmp3->nTrackLength; + _CurMP3Pos = AudioManager.m_anRandomTable[0] % randmp3->nTrackLength; } } else @@ -1345,7 +1345,7 @@ cSampleManager::CheckForAnAudioFileOnCD(void) strcpy(filepath, m_szCDRomRootPath); #endif // #if GTA_VERSION >= GTA3_PC_11 - strcat(filepath, PS2StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); + strcat(filepath, PS2StreamedNameTable[AudioManager.m_anRandomTable[1] % TOTAL_STREAMED_SOUNDS]); f = fopen(filepath, "rb"); if ( !f ) @@ -1360,7 +1360,7 @@ cSampleManager::CheckForAnAudioFileOnCD(void) strcpy(filepath, m_szCDRomRootPath); #endif // #if GTA_VERSION >= GTA3_PC_11 - strcat(filepath, StreamedNameTable[AudioManager.GetRandomNumber(1) % TOTAL_STREAMED_SOUNDS]); + strcat(filepath, StreamedNameTable[AudioManager.m_anRandomTable[1] % TOTAL_STREAMED_SOUNDS]); f = fopen(filepath, "rb"); } @@ -1631,12 +1631,12 @@ cSampleManager::UpdateReverb(void) if ( !usingEAX ) return FALSE; - if ( AudioManager.GetFrameCounter() & 15 ) + if ( AudioManager.m_FrameCounter & 15 ) return FALSE; - float y = AudioManager.GetReflectionsDistance(REFLECTION_TOP) + AudioManager.GetReflectionsDistance(REFLECTION_BOTTOM); - float x = AudioManager.GetReflectionsDistance(REFLECTION_LEFT) + AudioManager.GetReflectionsDistance(REFLECTION_RIGHT); - float z = AudioManager.GetReflectionsDistance(REFLECTION_UP); + float y = AudioManager.m_afReflectionsDistances[REFLECTION_TOP] + AudioManager.m_afReflectionsDistances[REFLECTION_BOTTOM]; + float x = AudioManager.m_afReflectionsDistances[REFLECTION_LEFT] + AudioManager.m_afReflectionsDistances[REFLECTION_RIGHT]; + float z = AudioManager.m_afReflectionsDistances[REFLECTION_UP]; float normy = norm(y, 5.0f, 40.0f); float normx = norm(x, 5.0f, 40.0f); diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 2d9f9e86..74b352a1 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -995,7 +995,7 @@ cSampleManager::Initialise(void) int32 randval; if ( bUseRandomTable ) - randval = AudioManager.GetRandomNumber(1); + randval = AudioManager.m_anRandomTable[1]; else randval = localtm->tm_sec * localtm->tm_min; @@ -1006,7 +1006,7 @@ cSampleManager::Initialise(void) randmp3 = randmp3->pNext; if ( bUseRandomTable ) - _CurMP3Pos = AudioManager.GetRandomNumber(0) % randmp3->nTrackLength; + _CurMP3Pos = AudioManager.m_anRandomTable[0] % randmp3->nTrackLength; else { if ( localtm->tm_sec > 0 ) @@ -1015,7 +1015,7 @@ cSampleManager::Initialise(void) _CurMP3Pos = s*s*s*s*s*s*s*s % randmp3->nTrackLength; } else - _CurMP3Pos = AudioManager.GetRandomNumber(0) % randmp3->nTrackLength; + _CurMP3Pos = AudioManager.m_anRandomTable[0] % randmp3->nTrackLength; } } else @@ -1363,9 +1363,9 @@ bool8 cSampleManager::UpdateReverb(void) if ( AudioManager.GetFrameCounter() & 15 ) return FALSE; - float y = AudioManager.GetReflectionsDistance(REFLECTION_TOP) + AudioManager.GetReflectionsDistance(REFLECTION_BOTTOM); - float x = AudioManager.GetReflectionsDistance(REFLECTION_LEFT) + AudioManager.GetReflectionsDistance(REFLECTION_RIGHT); - float z = AudioManager.GetReflectionsDistance(REFLECTION_UP); + float y = AudioManager.m_afReflectionsDistances[REFLECTION_TOP] + AudioManager.m_afReflectionsDistances[REFLECTION_BOTTOM]; + float x = AudioManager.m_afReflectionsDistances[REFLECTION_LEFT] + AudioManager.m_afReflectionsDistances[REFLECTION_RIGHT]; + float z = AudioManager.m_afReflectionsDistances[REFLECTION_UP]; float normy = norm(y, 5.0f, 40.0f); float normx = norm(x, 5.0f, 40.0f); From 6a94299eac3357ca4d1d13648df625b4a9d286fb Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 26 Jul 2021 04:42:15 +0300 Subject: [PATCH 247/314] Fix --- src/audio/sampman_oal.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 74b352a1..17776347 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -1360,7 +1360,7 @@ bool8 cSampleManager::UpdateReverb(void) if ( !usingEAX && !_usingEFX ) return FALSE; - if ( AudioManager.GetFrameCounter() & 15 ) + if ( AudioManager.m_FrameCounter & 15 ) return FALSE; float y = AudioManager.m_afReflectionsDistances[REFLECTION_TOP] + AudioManager.m_afReflectionsDistances[REFLECTION_BOTTOM]; From f73dfa12e6c41d1dcd16a4f5a220cc91c346ba7c Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 23 Jul 2021 21:07:44 +0300 Subject: [PATCH 248/314] Make cars and peds to not despawn when you look away --- src/control/CarCtrl.cpp | 5 ++++- src/core/config.h | 4 ++++ src/peds/Population.cpp | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index 35580053..37312b89 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -731,6 +731,7 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle) } float distanceToPlayer = (pVehicle->GetPosition() - vecPlayerPos).Magnitude2D(); float threshold = 50.0f; +#ifndef EXTENDED_OFFSCREEN_DESPAWN_RANGE if (pVehicle->GetIsOnScreen() || TheCamera.Cams[TheCamera.ActiveCam].LookingLeft || TheCamera.Cams[TheCamera.ActiveCam].LookingRight || @@ -741,7 +742,9 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle) pVehicle->GetModelIndex() == MI_FIRETRUCK || pVehicle->bIsLawEnforcer || pVehicle->bIsCarParkVehicle - ){ + ) +#endif + { threshold = 130.0f * TheCamera.GenerationDistMultiplier; } if (pVehicle->bExtendedRange) diff --git a/src/core/config.h b/src/core/config.h index f0960e44..17f0e44c 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -265,6 +265,9 @@ enum Config { #define NO_MOVIES // add option to disable intro videos +#define EXTENDED_OFFSCREEN_DESPAWN_RANGE // Use onscreen despawn range for offscreen peds and vehicles to avoid them despawning in the distance when you look + // away + #if defined(__LP64__) || defined(_WIN64) #define FIX_BUGS_64 // Must have fixes to be able to run 64 bit build #endif @@ -450,6 +453,7 @@ enum Config { #undef PS2_ALPHA_TEST #undef NO_ISLAND_LOADING #undef PS2_AUDIO_CHANNELS + #undef EXTENDED_OFFSCREEN_DESPAWN_RANGE #define PC_PARTICLE #define VC_PED_PORTS // To not process collisions always. But should be tested if that's really beneficial #define VC_RAIN_NERF // Reduces number of rain particles diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index 1d2a5798..fcabff91 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -1126,13 +1126,16 @@ CPopulation::ManagePopulation(void) bool pedIsFarAway = false; if (PedCreationDistMultiplier() * (PED_REMOVE_DIST_SPECIAL * TheCamera.GenerationDistMultiplier) < dist || (!ped->bCullExtraFarAway && PedCreationDistMultiplier() * PED_REMOVE_DIST * TheCamera.GenerationDistMultiplier < dist) +#ifndef EXTENDED_OFFSCREEN_DESPAWN_RANGE || (PedCreationDistMultiplier() * (MIN_CREATION_DIST + CREATION_RANGE) * OFFSCREEN_CREATION_MULT < dist && !ped->GetIsOnScreen() && TheCamera.Cams[TheCamera.ActiveCam].Mode != CCam::MODE_SNIPER && TheCamera.Cams[TheCamera.ActiveCam].Mode != CCam::MODE_SNIPER_RUNABOUT && !TheCamera.Cams[TheCamera.ActiveCam].LookingLeft && !TheCamera.Cams[TheCamera.ActiveCam].LookingRight - && !TheCamera.Cams[TheCamera.ActiveCam].LookingBehind)) + && !TheCamera.Cams[TheCamera.ActiveCam].LookingBehind) +#endif + ) pedIsFarAway = true; if (!pedIsFarAway) From cafc0f3c10343b89f5cc555c0ef975a65e775cae Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 26 Jul 2021 08:28:01 +0300 Subject: [PATCH 249/314] Fix ridiculously accurate bullets when you shoot behind with enabled free camera --- src/weapons/Weapon.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index 6f0e9094..6eab1a65 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -592,6 +592,16 @@ CWeapon::FireInstantHit(CEntity *shooter, CVector *fireSource) { CVector src, trgt; TheCamera.Find3rdPersonCamTargetVector(info->m_fRange, *fireSource, src, trgt); +#ifdef FREE_CAM + CPed *shooterPed = (CPed *)shooter; + if((shooterPed->m_pedIK.m_flags & CPedIK::GUN_POINTED_SUCCESSFULLY) == 0) { + trgt.x = info->m_fRange; + trgt.y = 0.0f; + trgt.z = 0.0f; + + shooterPed->TransformToNode(trgt, PED_HANDR); + } +#endif #ifdef FIX_BUGS // fix muzzleflash rotation From bc3734cae3aeb6334314b67951eb31d7dd6c14d6 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 26 Jul 2021 09:13:16 +0300 Subject: [PATCH 250/314] Fix smooth spray when shooting with colt or usi while using PC controls --- src/peds/Ped.cpp | 3 +++ src/peds/PlayerPed.cpp | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 8d0fbbe8..147b1218 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -1348,6 +1348,9 @@ CPed::CalculateNewVelocity(void) limitedRotDest -= 2 * PI; } +#ifdef FREE_CAM + if (!TheCamera.Cams[0].Using3rdPersonMouseCam()) +#endif if (IsPlayer() && m_nPedState == PED_ATTACK) headAmount /= 4.0f; diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 6d6fc714..416fb949 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -503,6 +503,10 @@ CPlayerPed::DoWeaponSmoothSpray(void) { if (m_nPedState == PED_ATTACK && !m_pPointGunAt) { eWeaponType weapon = GetWeapon()->m_eWeaponType; +#ifdef FREE_CAM + if(TheCamera.Cams[0].Using3rdPersonMouseCam() && (weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI)) + return false; +#endif if (weapon == WEAPONTYPE_FLAMETHROWER || weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI || weapon == WEAPONTYPE_SHOTGUN || weapon == WEAPONTYPE_AK47 || weapon == WEAPONTYPE_M16 || weapon == WEAPONTYPE_HELICANNON) return true; @@ -1183,6 +1187,13 @@ CPlayerPed::PlayerControlZelda(CPad *padUsed) padMoveInGameUnit = CVector2D(leftRight, upDown).Magnitude() / PAD_MOVE_TO_GAME_WORLD_MOVE; } +#ifdef FREE_CAM + if(TheCamera.Cams[0].Using3rdPersonMouseCam() && doSmoothSpray) { + padMoveInGameUnit = 0.0f; + smoothSprayWithoutMove = false; + } +#endif + if (padMoveInGameUnit > 0.0f || smoothSprayWithoutMove) { float padHeading = CGeneral::GetRadianAngleBetweenPoints(0.0f, 0.0f, -leftRight, upDown); float neededTurn = CGeneral::LimitRadianAngle(padHeading - camOrientation); From f19a1aebd428ac7be642d0ae53e9d8837e9ac85a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 26 Jul 2021 09:16:20 +0300 Subject: [PATCH 251/314] Remove deceiving comment --- src/peds/PedIK.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/peds/PedIK.h b/src/peds/PedIK.h index 9077fbea..1543fa34 100644 --- a/src/peds/PedIK.h +++ b/src/peds/PedIK.h @@ -29,7 +29,7 @@ class CPedIK { public: enum { - GUN_POINTED_SUCCESSFULLY = 1, // set but unused + GUN_POINTED_SUCCESSFULLY = 1, LOOKAROUND_HEAD_ONLY = 2, AIMS_WITH_ARM = 4, }; From d77ed4608f22d853452a4e220b7f76f85c2d3b76 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 26 Jul 2021 20:25:36 +0200 Subject: [PATCH 252/314] fix --- src/core/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/config.h b/src/core/config.h index f0960e44..2abaec13 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -409,7 +409,7 @@ enum Config { // #define VC_PED_PORTS // various ports from VC's CPed, mostly subtle // #define NEW_WALK_AROUND_ALGORITHM // to make walking around vehicles/objects less awkward #define CANCELLABLE_CAR_ENTER -//#define PEDS_REPORT_CRIMES_ON_PHONE, requires COMPATIBLE_SAVES +//#define PEDS_REPORT_CRIMES_ON_PHONE // requires COMPATIBLE_SAVES // Camera //#define PS2_CAM_TRANSITION // old way of transitioning between cam modes From 388dd5cb00dde2053c7eb488c13d608a70ba330c Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Mon, 26 Jul 2021 19:23:37 -0700 Subject: [PATCH 253/314] Allow sector ped count to exceed gap-list size This solves the gnNumTempPedList assertion. To prove this works, change gapTempPedList's length to 12, and visit the Triad's basketball court. --- src/peds/Ped.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 4d80cac2..4c47ee7c 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -392,8 +392,21 @@ CPed::BuildPedLists(void) if (ped != this && !ped->bInVehicle) { float dist = (ped->GetPosition() - GetPosition()).Magnitude2D(); if (nThreatReactionRangeMultiplier * 30.0f > dist) { +#ifdef FIX_BUGS + static_assert( ARRAY_SIZE(m_nearPeds) < ARRAY_SIZE(gapTempPedList) - 1, "gapTempPedList needs wiggle room for unsorted peds and nil slot" ); + // If the gap ped list is full, sort it and truncate it + // before pushing more unsorted peds + if( gnNumTempPedList == ARRAY_SIZE(gapTempPedList) - 1 ) + { + gapTempPedList[gnNumTempPedList] = nil; + SortPeds(gapTempPedList, 0, gnNumTempPedList - 1); + gnNumTempPedList = ARRAY_SIZE(m_nearPeds); + } +#endif + gapTempPedList[gnNumTempPedList] = ped; gnNumTempPedList++; + // NOTE: We cannot absolutely fill the gap list, as the list is null-terminated before being passed to SortPeds assert(gnNumTempPedList < ARRAY_SIZE(gapTempPedList)); } } From 55e83982c31a18474a7789f1a966a25934ad37f8 Mon Sep 17 00:00:00 2001 From: Magnus Larsen Date: Tue, 27 Jul 2021 00:22:10 -0700 Subject: [PATCH 254/314] Remove static_assert from previous commit --- src/peds/Ped.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 4c47ee7c..5a72f288 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -393,7 +393,6 @@ CPed::BuildPedLists(void) float dist = (ped->GetPosition() - GetPosition()).Magnitude2D(); if (nThreatReactionRangeMultiplier * 30.0f > dist) { #ifdef FIX_BUGS - static_assert( ARRAY_SIZE(m_nearPeds) < ARRAY_SIZE(gapTempPedList) - 1, "gapTempPedList needs wiggle room for unsorted peds and nil slot" ); // If the gap ped list is full, sort it and truncate it // before pushing more unsorted peds if( gnNumTempPedList == ARRAY_SIZE(gapTempPedList) - 1 ) From 5240dce01882804d5f68766cf75b33b81f14cdb4 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 27 Jul 2021 22:01:17 +0300 Subject: [PATCH 255/314] cAudioManager::GetCollisionOneShotRatio cleanup --- src/audio/AudioCollision.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index cfd13fb6..bc470c49 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -353,33 +353,34 @@ cAudioManager::GetCollisionOneShotRatio(uint32 a, float b) case SURFACE_STEEP_CLIFF: case SURFACE_TRANSPARENT_STONE: return GetCollisionRatio(b, 10.f, 60.f, 50.f); case SURFACE_GRASS: - case SURFACE_CARDBOARDBOX: return GetCollisionRatio(b, 0.f, 2.f, 2.f); - case SURFACE_GRAVEL: return GetCollisionRatio(b, 0.f, 2.f, 2.f); + case SURFACE_CARDBOARDBOX: + case SURFACE_GRAVEL: case SURFACE_MUD_DRY: return GetCollisionRatio(b, 0.f, 2.f, 2.f); case SURFACE_CAR: return GetCollisionRatio(b, 6.f, 50.f, 44.f); - case SURFACE_GLASS: return GetCollisionRatio(b, 0.1f, 10.f, 9.9f); + case SURFACE_GLASS: + case SURFACE_METAL_CHAIN_FENCE: return GetCollisionRatio(b, 0.1f, 10.f, 9.9f); case SURFACE_TRANSPARENT_CLOTH: case SURFACE_THICK_METAL_PLATE: return GetCollisionRatio(b, 30.f, 130.f, 100.f); case SURFACE_GARAGE_DOOR: return GetCollisionRatio(b, 20.f, 100.f, 80.f); case SURFACE_CAR_PANEL: return GetCollisionRatio(b, 0.f, 4.f, 4.f); case SURFACE_SCAFFOLD_POLE: - case SURFACE_METAL_GATE: return GetCollisionRatio(b, 1.f, 10.f, 9.f); + case SURFACE_METAL_GATE: case SURFACE_LAMP_POST: return GetCollisionRatio(b, 1.f, 10.f, 9.f); case SURFACE_FIRE_HYDRANT: return GetCollisionRatio(b, 1.f, 15.f, 14.f); case SURFACE_GIRDER: return GetCollisionRatio(b, 8.f, 50.f, 42.f); - case SURFACE_METAL_CHAIN_FENCE: return GetCollisionRatio(b, 0.1f, 10.f, 9.9f); case SURFACE_PED: return GetCollisionRatio(b, 0.f, 20.f, 20.f); - case SURFACE_SAND: return GetCollisionRatio(b, 0.f, 10.f, 10.f); - case SURFACE_WATER: return GetCollisionRatio(b, 0.f, 10.f, 10.f); + case SURFACE_SAND: + case SURFACE_WATER: + case SURFACE_RUBBER: + case SURFACE_WHEELBASE: return GetCollisionRatio(b, 0.f, 10.f, 10.f); case SURFACE_WOOD_CRATES: return GetCollisionRatio(b, 1.f, 4.f, 3.f); case SURFACE_WOOD_BENCH: return GetCollisionRatio(b, 0.1f, 5.f, 4.9f); case SURFACE_WOOD_SOLID: return GetCollisionRatio(b, 0.1f, 40.f, 39.9f); - case SURFACE_RUBBER: - case SURFACE_WHEELBASE: return GetCollisionRatio(b, 0.f, 10.f, 10.f); case SURFACE_PLASTIC: return GetCollisionRatio(b, 0.1f, 4.f, 3.9f); case SURFACE_HEDGE: return GetCollisionRatio(b, 0.f, 0.5f, 0.5f); case SURFACE_CONTAINER: return GetCollisionRatio(b, 4.f, 40.f, 36.f); case SURFACE_NEWS_VENDOR: return GetCollisionRatio(b, 0.f, 5.f, 5.f); + default: break; } return 0.f; From 16e2e3d0913b5454b51c1300a6b6e1ae4012441a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 27 Jul 2021 22:32:47 +0300 Subject: [PATCH 256/314] Type fix --- src/audio/AudioManager.h | 2 +- src/audio/PolRadio.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 7c591a1e..b836f221 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -485,7 +485,7 @@ public: void InitialisePoliceRadioZones(); void InitialisePoliceRadio(); void ResetPoliceRadio(); - void SetMissionScriptPoliceAudio(int32 sfx); + void SetMissionScriptPoliceAudio(uint32 sfx); int8 GetMissionScriptPoliceAudioPlayingStatus(); void DoPoliceRadioCrackle(); void ServicePoliceRadio(); diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 9a98de35..6fc1ceef 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -106,7 +106,7 @@ cAudioManager::ResetPoliceRadio() } void -cAudioManager::SetMissionScriptPoliceAudio(int32 sfx) +cAudioManager::SetMissionScriptPoliceAudio(uint32 sfx) { if (!m_bIsInitialised) return; if (g_nMissionAudioPlayingStatus != 1) { From d0666a8702ab3dff7c054474c7b0e833cc479501 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 27 Jul 2021 22:38:35 +0300 Subject: [PATCH 257/314] One more type fix --- src/audio/PolRadio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 6fc1ceef..d6079191 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -25,7 +25,7 @@ tPoliceRadioZone ZoneSfx[NUMAUDIOZONES]; char SubZo2Label[8]; char SubZo3Label[8]; -int32 g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; +uint32 g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; int8 g_nMissionAudioPlayingStatus = 2; uint8 gSpecialSuspectLastSeenReport; uint32 gMinTimeToNextReport[NUM_CRIME_TYPES]; From 81673ab304bbe0816785e95acd91c03c14674064 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 28 Jul 2021 10:36:18 +0300 Subject: [PATCH 258/314] Fix comments --- src/audio/AudioManager.cpp | 2 +- src/audio/AudioManager.h | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index c3565828..4f703c82 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -512,7 +512,7 @@ cAudioManager::ComputePan(float dist, CVector *vec) return Min(107, PanTable[index] + 63); } -int32 +uint32 cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier) { uint32 newFreq = oldFreq; diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index b836f221..5757a873 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -267,7 +267,7 @@ public: uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance); void TranslateEntity(Const CVector *v1, CVector *v2); int32 ComputePan(float, CVector *); - int32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier); // inlined on PS2 + uint32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier); // inlined on PS2 int32 RandomDisplacement(uint32 seed); void InterrogateAudioEntities(); // inlined on PS2 void AddSampleToRequestedQueue(); @@ -300,14 +300,14 @@ public: void ProcessSpecial(); void ProcessEntity(int32 sound); void ProcessPhysical(int32 id); + + // vehicles void ProcessVehicle(CVehicle *vehicle); void ProcessRainOnVehicle(cVehicleParams ¶ms); bool8 ProcessReverseGear(cVehicleParams ¶ms); void ProcessModelCarEngine(cVehicleParams ¶ms); bool8 ProcessVehicleRoadNoise(cVehicleParams ¶ms); bool8 ProcessWetRoadNoise(cVehicleParams ¶ms); - - // vehicles void ProcessVehicleEngine(cVehicleParams ¶ms); void UpdateGasPedalAudio(CAutomobile *automobile); // inlined on PS2 void PlayerJustGotInCar(); @@ -317,7 +317,7 @@ public: void ProcessPlayersVehicleEngine(cVehicleParams ¶ms, CAutomobile *automobile); bool8 ProcessVehicleSkidding(cVehicleParams ¶ms); float GetVehicleDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); - float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); // was in .h on PS2 + float GetVehicleNonDriveWheelSkidValue(uint8 wheel, CAutomobile *automobile, cTransmission *transmission, float velocityChange); // inlined on PS2 void ProcessVehicleHorn(cVehicleParams ¶ms); bool8 UsesSiren(uint32 model); // inlined on PS2 bool8 UsesSirenSwitching(uint32 model); // inlined on PS2 From 6cea1de9e6062195f19b7fe5f1beeafe1432376c Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 29 Jul 2021 00:40:32 +0300 Subject: [PATCH 259/314] Reverse unused audio functions from mobile --- src/audio/AudioManager.cpp | 16 ++++++++++++++++ src/audio/AudioManager.h | 4 +++- src/audio/DMAudio.cpp | 12 ++++++++++++ src/audio/DMAudio.h | 4 +++- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 4f703c82..22415e76 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -160,6 +160,14 @@ cAudioManager::DestroyEntity(int32 id) } } +bool8 +cAudioManager::GetEntityStatus(int32 id) +{ + if (m_bIsInitialised && id >= 0 && id < NUM_AUDIOENTITIES && m_asAudioEntities[id].m_bIsUsed) + return m_asAudioEntities[id].m_bStatus; + return FALSE; +} + void cAudioManager::SetEntityStatus(int32 id, bool8 status) { @@ -167,6 +175,14 @@ cAudioManager::SetEntityStatus(int32 id, bool8 status) m_asAudioEntities[id].m_bStatus = status; } +void * +cAudioManager::GetEntityPointer(int32 id) +{ + if (m_bIsInitialised && id >= 0 && id < NUM_AUDIOENTITIES && m_asAudioEntities[id].m_bIsUsed) + return m_asAudioEntities[id].m_pEntity; + return NULL; +} + void cAudioManager::PlayOneShot(int32 index, uint16 sound, float vol) { diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 5757a873..187a71a8 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -48,7 +48,7 @@ public: eAudioType m_nType; void *m_pEntity; bool8 m_bIsUsed; - uint8 m_bStatus; + bool8 m_bStatus; int16 m_awAudioEvent[NUM_AUDIOENTITY_EVENTS]; float m_afVolume[NUM_AUDIOENTITY_EVENTS]; uint8 m_AudioEvents; @@ -237,7 +237,9 @@ public: void Service(); int32 CreateEntity(eAudioType type, void *entity); void DestroyEntity(int32 id); + bool8 GetEntityStatus(int32 id); void SetEntityStatus(int32 id, bool8 status); + void *GetEntityPointer(int32 id); void PlayOneShot(int32 index, uint16 sound, float vol); void SetEffectsMasterVolume(uint8 volume); void SetMusicMasterVolume(uint8 volume); diff --git a/src/audio/DMAudio.cpp b/src/audio/DMAudio.cpp index eea91bd1..688da201 100644 --- a/src/audio/DMAudio.cpp +++ b/src/audio/DMAudio.cpp @@ -38,6 +38,12 @@ cDMAudio::DestroyEntity(int32 audioEntity) AudioManager.DestroyEntity(audioEntity); } +bool8 +cDMAudio::GetEntityStatus(int32 audioEntity) +{ + return AudioManager.GetEntityStatus(audioEntity); +} + void cDMAudio::SetEntityStatus(int32 audioEntity, bool8 status) { @@ -170,6 +176,12 @@ cDMAudio::IsAudioInitialised(void) return AudioManager.IsAudioInitialised(); } +void +cDMAudio::ResetPoliceRadio() +{ + AudioManager.ResetPoliceRadio(); +} + void cDMAudio::ReportCrime(eCrimeType crime, const CVector &pos) { diff --git a/src/audio/DMAudio.h b/src/audio/DMAudio.h index 19689fab..9f427272 100644 --- a/src/audio/DMAudio.h +++ b/src/audio/DMAudio.h @@ -22,6 +22,7 @@ public: int32 CreateEntity(eAudioType type, void *UID); void DestroyEntity(int32 audioEntity); + bool8 GetEntityStatus(int32 audioEntity); void SetEntityStatus(int32 audioEntity, bool8 status); void PlayOneShot(int32 audioEntity, uint16 oneShot, float volume); void DestroyAllGameCreatedEntities(void); @@ -51,7 +52,8 @@ public: char GetCDAudioDriveLetter(void); bool8 IsAudioInitialised(void); - + + void ResetPoliceRadio(); void ReportCrime(eCrimeType crime, CVector const &pos); int32 CreateLoopingScriptObject(cAudioScriptObject *scriptObject); From 3c5bae164f54ef3eb21d1f62aabbbb58939f14ab Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 29 Jul 2021 19:43:35 +0200 Subject: [PATCH 260/314] CVisibilityPlugins and CRenderer fixes --- src/core/FileLoader.cpp | 6 ++-- src/modelinfo/MloModelInfo.h | 2 +- src/modelinfo/XtraCompsModelInfo.h | 3 +- src/renderer/Renderer.cpp | 5 ++- src/rw/VisibilityPlugins.cpp | 54 ++++++++++++++++++++---------- src/rw/VisibilityPlugins.h | 3 ++ 6 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/core/FileLoader.cpp b/src/core/FileLoader.cpp index cc2b402b..afa2a66f 100644 --- a/src/core/FileLoader.cpp +++ b/src/core/FileLoader.cpp @@ -1135,12 +1135,12 @@ CFileLoader::LoadMLO(const char *line) char smth[8]; char name[24]; int modelIndex; - float someFloat; + float drawDist; - sscanf(line, "%s %s %d %f", smth, name, &modelIndex, &someFloat); + sscanf(line, "%s %s %d %f", smth, name, &modelIndex, &drawDist); CMloModelInfo *minfo = CModelInfo::AddMloModel(modelIndex); minfo->SetModelName(name); - minfo->field_34 = someFloat; + minfo->drawDist = drawDist; int instId = CModelInfo::GetMloInstanceStore().allocPtr; minfo->firstInstance = instId; minfo->lastInstance = instId; diff --git a/src/modelinfo/MloModelInfo.h b/src/modelinfo/MloModelInfo.h index d4344706..b1ae3298 100644 --- a/src/modelinfo/MloModelInfo.h +++ b/src/modelinfo/MloModelInfo.h @@ -5,7 +5,7 @@ class CMloModelInfo : public CClumpModelInfo { public: - float field_34; // draw distance? + float drawDist; int firstInstance; int lastInstance; public: diff --git a/src/modelinfo/XtraCompsModelInfo.h b/src/modelinfo/XtraCompsModelInfo.h index 9832399c..ab308a8a 100644 --- a/src/modelinfo/XtraCompsModelInfo.h +++ b/src/modelinfo/XtraCompsModelInfo.h @@ -7,6 +7,7 @@ class CXtraCompsModelInfo : public CClumpModelInfo int field_34; public: CXtraCompsModelInfo(void) : CClumpModelInfo(MITYPE_XTRACOMPS) { field_34 = 0; } - void SetClump(RpClump*) {}; void Shutdown(void) {}; + RwObject *CreateInstance(void) { return nil; } + void SetClump(RpClump*) {}; }; \ No newline at end of file diff --git a/src/renderer/Renderer.cpp b/src/renderer/Renderer.cpp index 1c0bd445..25effc81 100644 --- a/src/renderer/Renderer.cpp +++ b/src/renderer/Renderer.cpp @@ -154,11 +154,14 @@ CRenderer::PreRender(void) void CRenderer::RenderOneRoad(CEntity *e) { +#ifndef MASTER if(gbDontRenderBuildings) return; if(gbShowCollisionPolys) CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(), e->GetModelIndex()); - else{ + else +#endif + { #ifdef EXTENDED_PIPELINES CustomPipes::AttachGlossPipe(e->GetAtomic()); #endif diff --git a/src/rw/VisibilityPlugins.cpp b/src/rw/VisibilityPlugins.cpp index 7ff5c243..e6d4641d 100644 --- a/src/rw/VisibilityPlugins.cpp +++ b/src/rw/VisibilityPlugins.cpp @@ -155,7 +155,7 @@ CVisibilityPlugins::Initialise(void) m_alphaList.head.item.sort = 0.0f; m_alphaList.tail.item.sort = 100000000.0f; #ifdef ASPECT_RATIO_SCALE - // default 150 if not enough for bigger FOVs + // default 150 is not enough for bigger FOVs m_alphaEntityList.Init(NUMALPHAENTITYLIST * 3); #else m_alphaEntityList.Init(NUMALPHAENTITYLIST); @@ -658,8 +658,7 @@ CVisibilityPlugins::RenderTrainHiDetailAlphaCB(RpAtomic *atomic) return atomic; if(flags & ATOMIC_FLAG_DRAWLAST){ - // sort before clump - if(!InsertAtomicIntoSortedList(atomic, distsq - 0.0001f)) + if(!InsertAtomicIntoSortedList(atomic, distsq)) RENDERCALLBACK(atomic); }else{ if(!InsertAtomicIntoSortedList(atomic, distsq + dot)) @@ -791,16 +790,6 @@ CVisibilityPlugins::DefaultVisibilityCB(RpClump *clump) return true; } -bool -CVisibilityPlugins::MloVisibilityCB(RpClump *clump) -{ - RwFrame *frame = RpClumpGetFrame(clump); - CMloModelInfo *modelInfo = (CMloModelInfo*)GetFrameHierarchyId(frame); - if (sq(modelInfo->field_34) < GetDistanceSquaredFromCamera(frame)) - return false; - return CVisibilityPlugins::FrustumSphereCB(clump); -} - bool CVisibilityPlugins::FrustumSphereCB(RpClump *clump) { @@ -816,12 +805,23 @@ CVisibilityPlugins::FrustumSphereCB(RpClump *clump) return RwCameraFrustumTestSphere(ms_pCamera, &sphere) != rwSPHEREOUTSIDE; } +bool +CVisibilityPlugins::MloVisibilityCB(RpClump *clump) +{ + RwFrame *frame = RpClumpGetFrame(clump); + CMloModelInfo *modelInfo = (CMloModelInfo*)GetFrameHierarchyId(frame); + if (SQR(modelInfo->drawDist) < GetDistanceSquaredFromCamera(frame)) + return false; + return CVisibilityPlugins::FrustumSphereCB(clump); +} + bool CVisibilityPlugins::VehicleVisibilityCB(RpClump *clump) { - if (GetDistanceSquaredFromCamera(RpClumpGetFrame(clump)) <= ms_vehicleLod1Dist) - return FrustumSphereCB(clump); - return false; + RwFrame *frame = RpClumpGetFrame(clump); + if (ms_vehicleLod1Dist < GetDistanceSquaredFromCamera(frame)) + return false; + return FrustumSphereCB(clump); } bool @@ -927,6 +927,12 @@ CVisibilityPlugins::ClearAtomicFlag(RpAtomic *atomic, int f) ATOMICEXT(atomic)->flags &= ~f; } +void +CVisibilityPlugins::SetAtomicId(RpAtomic *atomic, int id) +{ + ATOMICEXT(atomic)->flags = id; +} + int CVisibilityPlugins::GetAtomicId(RpAtomic *atomic) { @@ -1012,7 +1018,9 @@ CVisibilityPlugins::SetClumpModelInfo(RpClump *clump, CClumpModelInfo *modelInfo // Unused switch (modelInfo->GetModelType()) { - // ignore MLO + case MITYPE_MLO: + CLUMPEXT(clump)->visibilityCB = MloVisibilityCB; + break; case MITYPE_VEHICLE: vmi = (CVehicleModelInfo*)modelInfo; if(vmi->m_vehicleType == VEHICLE_TYPE_TRAIN || @@ -1026,6 +1034,12 @@ CVisibilityPlugins::SetClumpModelInfo(RpClump *clump, CClumpModelInfo *modelInfo } } +CClumpModelInfo* +CVisibilityPlugins::GetClumpModelInfo(RpClump *clump) +{ + return (CClumpModelInfo*)GetFrameHierarchyId(RpClumpGetFrame(clump)); +} + void CVisibilityPlugins::SetClumpAlpha(RpClump *clump, int alpha) { @@ -1037,3 +1051,9 @@ CVisibilityPlugins::GetClumpAlpha(RpClump *clump) { return CLUMPEXT(clump)->alpha; } + +bool +CVisibilityPlugins::IsClumpVisible(RpClump *clump) +{ + return CLUMPEXT(clump)->visibilityCB(clump); +} diff --git a/src/rw/VisibilityPlugins.h b/src/rw/VisibilityPlugins.h index 5fb87765..f97fd589 100644 --- a/src/rw/VisibilityPlugins.h +++ b/src/rw/VisibilityPlugins.h @@ -94,6 +94,7 @@ public: static CSimpleModelInfo *GetAtomicModelInfo(RpAtomic *atomic); static void SetAtomicFlag(RpAtomic*, int); static void ClearAtomicFlag(RpAtomic*, int); + static void SetAtomicId(RpAtomic *atomic, int); static int GetAtomicId(RpAtomic *atomic); static void SetAtomicRenderCallback(RpAtomic*, RpAtomicCallBackRender); @@ -123,8 +124,10 @@ public: int alpha; }; static void SetClumpModelInfo(RpClump*, CClumpModelInfo*); + static CClumpModelInfo *GetClumpModelInfo(RpClump*); static void SetClumpAlpha(RpClump*, int); static int GetClumpAlpha(RpClump*); + static bool IsClumpVisible(RpClump*); static void *ClumpConstructor(void *object, int32 offset, int32 len); static void *ClumpDestructor(void *object, int32 offset, int32 len); From 0542b1bd4d8a08c39904a43c6104b27594c0a259 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 31 Jul 2021 23:03:59 +0300 Subject: [PATCH 261/314] Fix radio scroll when player controls disabled --- src/audio/MusicManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 815e55f2..9872589a 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -527,7 +527,7 @@ cMusicManager::ServiceGameMode() #endif } #ifdef RADIO_SCROLL_TO_PREV_STATION - else if(CPad::GetPad(0)->GetMouseWheelDownJustDown() || CPad::GetPad(0)->GetMouseWheelUpJustDown()) { + else if(!CPad::GetPad(0)->ArePlayerControlsDisabled() && (CPad::GetPad(0)->GetMouseWheelDownJustDown() || CPad::GetPad(0)->GetMouseWheelUpJustDown())) { int scrollNext = ControlsManager.GetControllerKeyAssociatedWithAction(VEHICLE_CHANGE_RADIO_STATION, MOUSE); int scrollPrev = scrollNext == rsMOUSEWHEELUPBUTTON ? rsMOUSEWHEELDOWNBUTTON : scrollNext == rsMOUSEWHEELDOWNBUTTON ? rsMOUSEWHEELUPBUTTON : -1; From 6d7dec96af56ced3d906c5b74326a2effdf4049f Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 1 Aug 2021 13:58:15 +0300 Subject: [PATCH 262/314] move debug script stuff to a separate file --- src/control/Script.cpp | 1413 +--------------------------------- src/control/Script.h | 13 + src/control/ScriptDebug.cpp | 1441 +++++++++++++++++++++++++++++++++++ 3 files changed, 1462 insertions(+), 1405 deletions(-) create mode 100644 src/control/ScriptDebug.cpp diff --git a/src/control/Script.cpp b/src/control/Script.cpp index b07c0701..285b4cb7 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -34,9 +34,6 @@ #include "Wanted.h" #include "Weather.h" #include "Zones.h" -#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT -#include -#endif uint8 CTheScripts::ScriptSpace[SIZE_SCRIPT_SPACE]; CRunningScript CTheScripts::ScriptsArray[MAX_NUM_SCRIPTS]; @@ -112,1213 +109,6 @@ bool doingMissionRetry; #endif -#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT - -#define REGISTER_COMMAND(command, in, out, cond, ovrd, visual) { command, #command, in, out, cond, ovrd, visual } -#define INPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE } -#define OUTPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE } -const tScriptCommandData commands[] = { - REGISTER_COMMAND(COMMAND_NOP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WAIT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GOTO, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SHAKE_CAM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_ADD_VAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_VAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_VAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_VAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_MULT_INT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_FLOAT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_INT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_FLOAT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_DIV_INT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_FLOAT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_INT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_FLOAT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_THAN_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_THAN_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_THAN_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_THAN_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_THAN_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_THAN_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_NOT_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_INT_VAR_NOT_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), - REGISTER_COMMAND(COMMAND_GOTO_IF_TRUE, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GOTO_IF_FALSE, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_TERMINATE_THIS_SCRIPT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_NEW_SCRIPT, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GOSUB, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RETURN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LINE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_PLAYER_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_INT_VAR_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_FLOAT_VAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_INT_LVAR_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_FLOAT_LVAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_INT_VAR_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_FLOAT_VAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_INT_LVAR_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_ADD_FLOAT_LVAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), - REGISTER_COMMAND(COMMAND_SUB_INT_VAR_FROM_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_FLOAT_VAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_INT_LVAR_FROM_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_FLOAT_LVAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_INT_VAR_FROM_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_FLOAT_VAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_INT_LVAR_FROM_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_SUB_FLOAT_LVAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), - REGISTER_COMMAND(COMMAND_MULT_INT_VAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_FLOAT_VAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_INT_LVAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_FLOAT_LVAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_INT_VAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_FLOAT_VAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_INT_LVAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_MULT_FLOAT_LVAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), - REGISTER_COMMAND(COMMAND_DIV_INT_VAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_FLOAT_VAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_INT_LVAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_FLOAT_LVAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_INT_VAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_FLOAT_VAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_INT_LVAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_DIV_FLOAT_LVAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), - REGISTER_COMMAND(COMMAND_ADD_TIMED_VAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), - REGISTER_COMMAND(COMMAND_ADD_TIMED_VAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), - REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), - REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), - REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), - REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), - REGISTER_COMMAND(COMMAND_SUB_TIMED_VAL_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), - REGISTER_COMMAND(COMMAND_SUB_TIMED_VAL_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), - REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), - REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), - REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), - REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), - REGISTER_COMMAND(COMMAND_SET_VAR_INT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_LVAR_INT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_VAR_FLOAT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_LVAR_FLOAT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_VAR_FLOAT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_LVAR_FLOAT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_VAR_INT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_SET_LVAR_INT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), - REGISTER_COMMAND(COMMAND_CSET_VAR_INT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_VAR_FLOAT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_LVAR_INT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_LVAR_FLOAT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_VAR_INT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_VAR_FLOAT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_LVAR_INT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_CSET_LVAR_FLOAT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, 0, " =#"), - REGISTER_COMMAND(COMMAND_ABS_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), - REGISTER_COMMAND(COMMAND_ABS_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), - REGISTER_COMMAND(COMMAND_ABS_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), - REGISTER_COMMAND(COMMAND_ABS_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), - REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), false, -1, ""), - REGISTER_COMMAND(COMMAND_DELETE_CHAR, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHAR_WANDER_DIR, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHAR_WANDER_RANGE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHAR_FOLLOW_PATH, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHAR_SET_IDLE, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CHAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STILL_ALIVE, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), false, -1, ""), - REGISTER_COMMAND(COMMAND_DELETE_CAR, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CAR_GOTO_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CAR_WANDER_RANDOMLY, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CAR_SET_IDLE, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_STILL_ALIVE, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_CRUISE_SPEED, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_DRIVING_STYLE, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_MISSION, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_0, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_1, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_2, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_3, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_4, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_5, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_6, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SPECIAL_7, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_PRINTS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_TIME_OF_DAY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TIME_OF_DAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_MINUTES_TO_TIME_OF_DAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_POINT_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_DEBUG_ON, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DEBUG_OFF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RETURN_TRUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RETURN_FALSE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_VAR_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_VAR_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LVAR_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LVAR_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LBRACKET, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RBRACKET, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REPEAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ENDREPEAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IFNOT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ELSE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ENDIF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WHILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WHILENOT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ENDWHILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ANDOR, INPUT_ARGUMENTS(ARGTYPE_ANDOR,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LAUNCH_MISSION, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MISSION_HAS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_CAR_CHAR_IS_IN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_CAR_PLAYER_IS_IN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_BUTTON_PRESSED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GET_PAD_STATE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), true, -1, ""), - REGISTER_COMMAND(COMMAND_DELETE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_SCORE_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ALTER_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ALTER_WANTED_LEVEL_NO_DROP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_WANTED_LEVEL_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_DEATHARREST_STATE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_DEATHARREST_BEEN_EXECUTED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_AMMO_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_AMMO_TO_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_AMMO_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STILL_ALIVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_DEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_DEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_DEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_THREAT_SEARCH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_THREAT_REACTION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_NO_OBJ, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ORDER_DRIVER_OUT_OF_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ORDER_CHAR_TO_DRIVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_PATROL_POINT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_GANGZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_PRESSING_HORN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CHAR_SPOTTED_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ORDER_CHAR_TO_BACKDOOR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_CHAR_TO_GANG, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_OBJECTIVE_PASSED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_DRIVE_AGGRESSION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_MAX_DRIVESPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CHAR_INSIDE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_WARP_PLAYER_FROM_CAR_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MAKE_CHAR_DO_NOTHING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_INVINCIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_INVINCIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_GRAPHIC_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_GRAPHIC_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_PLAYER_BEEN_ARRESTED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_STOP_CHAR_DRIVING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_KILL_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FAVOURITE_CAR_MODEL_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OCCUPATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_CAR_LOCK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SHAKE_CAM_WITH_POINT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_REMAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CAR_JUST_SUNK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_NO_COLLIDE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_DEAD_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_DEAD_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_TRAILER_ATTACHED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_ON_TRAILER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CAR_GOT_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_PARK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_PARK_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_KILL_ALL_PASSENGERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_BULLETPROOF, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_FLAMEPROOF, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_ROCKETPROOF, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CARBOMB_ACTIVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_CAR_ALARM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PUT_CAR_ON_TRAILER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_CRUSHED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_GANG_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CAR_GENERATOR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_CAR_GENERATOR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_PAGER_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_ONSCREEN_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_COUNTER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_ONSCREEN_COUNTER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ZONE_CAR_INFO, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_GANG_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_DENSITY, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PED_DENSITY, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RESTORE_CAMERA, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SHAKE_PAD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ZONE_PED_INFO, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TIME_SCALE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_IN_AIR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FIXED_CAMERA_POSITION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CAR_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CHAR_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_OBJECT_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_BLIP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_BLIP_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DIM_BLIP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_COORD_OLD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_BLIP_SCALE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FADING_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DO_FADE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_FADING_STATUS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_HOSPITAL_RESTART, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_POLICE_RESTART, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_OVERRIDE_NEXT_RESTART, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DRAW_SHADOW, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_PLAYER_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CHAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_OBJECT_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_OBJECT_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_TOUCHING_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_TOUCHING_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_CAMERA_SPLINE, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MOVE_CAMERA_ALONG_SPLINE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAMERA_POSITION_ALONG_SPLINE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_DECLARE_MISSION_FLAG, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DECLARE_MISSION_FLAG_FOR_CONTACT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DECLARE_BASE_BRIEF_ID_FOR_CONTACT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_HEALTH_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_HEALTH_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_HEALTH_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CONTACT_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_COORD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_BLIP_DISPLAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_ONE_OFF_SOUND, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_CONTINUOUS_SOUND, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_SOUND, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_STUCK_ON_ROOF, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_UPSIDEDOWN_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_UPSIDEDOWN_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_WAIT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GUARD_SPOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GUARD_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_WAIT_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_STOPPED_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_WEAPON_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_WEAPON_TO_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_WEAPON_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FORCE_WEATHER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FORCE_WEATHER_NOW, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RELEASE_WEATHER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CURRENT_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CURRENT_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CURRENT_CAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_OBJECT_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_OBJECT_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_GAME_TIMER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_CHAR_TO_FACE_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_PLAYER_TO_FACE_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_STOPPED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_MARK_CHAR_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MARK_CAR_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MARK_OBJECT_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DONT_REMOVE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DONT_REMOVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DONT_REMOVE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CHAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_CHAR_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_LEAVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_DESTROY_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_DESTROY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_AREA_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_AREA_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GUARD_ATTACK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_AS_LEADER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_AS_LEADER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LEAVE_GROUP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_ROUTE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_ROUTE_POINT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_ROADS_ON, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_ROADS_OFF, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_PASSENGERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_MAXIMUM_NUMBER_OF_PASSENGERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_DENSITY_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_HEAVY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_CHAR_THREAT_SEARCH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ACTIVATE_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DEACTIVATE_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_MAX_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SAVE_VAR_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SAVE_VAR_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_IN_AIR_PROPER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_UPSIDEDOWN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GET_PLAYER_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CANCEL_OVERRIDE_RESTART, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_POLICE_IGNORE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_PAGER_MESSAGE_WITH_NUMBER, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_KILL_FRENZY, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_READ_KILL_FRENZY_STATUS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SQRT, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_FLOAT_IN_RANGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_INT_IN_RANGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOCK_CAR_DOORS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_EXPLODE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_EXPLOSION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_UPRIGHT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_CHAR_TO_FACE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_CHAR_TO_FACE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_PLAYER_TO_FACE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_COORD_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_COORD_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_PICKUP_BEEN_COLLECTED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TAXI_LIGHTS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_BIG_Q, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_BIG_Q, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GARAGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GARAGE_WITH_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TARGET_CAR_FOR_MISSION_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_IN_MISSION_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FREE_BOMBS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_POWERPOINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ALL_TAXI_LIGHTS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_ARMED_WITH_ANY_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_APPLY_BRAKES_TO_PLAYERS_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_PLAYER_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CHAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_ARMED_WITH_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_CAR_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_ON, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_OFF, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHAR_LOOK_AT_CHAR_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHAR_LOOK_AT_PLAYER_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PLAYER_LOOK_AT_CHAR_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STOP_CHAR_LOOKING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STOP_PLAYER_LOOKING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_HELICOPTER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_ATTITUDE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_GANG_ATTITUDE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_PLAYER_ATTITUDE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_PED_MODELS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_RUN_TO_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_RUN_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_TOUCHING_OBJECT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_TOUCHING_OBJECT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_SPECIAL_CHARACTER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_SPECIAL_CHARACTER_LOADED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_FLASH_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FLASH_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FLASH_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_REMOTE_MODE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_ARM_CAR_WITH_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_PERSONALITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CUTSCENE_OFFSET, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ANIM_GROUP_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ANIM_GROUP_FOR_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REQUEST_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_MODEL_LOADED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_MARK_MODEL_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GRAB_PHONE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_REPEATED_PHONE_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PHONE_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_PHONE_DISPLAYED_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_PHONE_OFF, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DRAW_CORONA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DRAW_LIGHT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_WEATHER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RESTORE_WEATHER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_CLOCK, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RESTORE_CLOCK, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RESTART_CRITICAL_MISSION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_PLAYING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_NO_OBJ, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_WAIT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GUARD_SPOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GUARD_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_WAIT_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_CHAR_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_LEAVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_DRIVER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FOLLOW_CAR_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_DESTROY_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_DESTROY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_AREA_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_AREA_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GUARD_ATTACK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FOLLOW_ROUTE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_COORD_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_COORD_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_RUN_TO_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_RUN_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_PEDS_IN_AREA_TO_COLL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_PEDS_IN_VEHICLE_TO_COLL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_COLL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_IN_CARS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_COLL_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_COLL_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_COLL_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_PLAYER_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_PLAYER_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_PLAYER_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_STOPPED_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLL_STOPPED_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_PEDS_IN_COLL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_HEED_THREATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_HEED_THREATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CONTROLLER_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAN_RESPRAY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_UNLOAD_SPECIAL_CHARACTER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUM_OF_MODELS_KILLED_BY_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ACTIVATE_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_TAXI_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_OBJECT_NO_OFFSET, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_BOAT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_AREA_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_MESSAGE_WAIT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_PARTICLE_EFFECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_WIDESCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_CONTACT_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_COORD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_ONLY_DAMAGED_BY_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_ONLY_DAMAGED_BY_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_PROOFS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_PROOFS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_DEACTIVATE_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CAR_BEEN_TAKEN_TO_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_SWAT_REQUIRED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FBI_REQUIRED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ARMY_REQUIRED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_IN_WATER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CLOSEST_CHAR_NODE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CAR_GOTO_COORDINATES_ACCURATE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_PACMAN_RACE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_PACMAN_RECORD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_POWER_PILLS_EATEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_PACMAN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_PACMAN_SCRAMBLE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_POWER_PILLS_CARRIED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_CARRIED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_OBJECT_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GOSUB_FILE, INPUT_ARGUMENTS(ARGTYPE_LABEL, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_GROUND_Z_FOR_3D_COORD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_SCRIPT_FIRE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_SCRIPT_FIRE_EXTINGUISHED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_SCRIPT_FIRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COMEDY_CONTROLS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_BOAT_GOTO_COORDS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_BOAT_STOP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_SHOOTING_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_SHOOTING_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CURRENT_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CURRENT_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_EATEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_POWER_PILL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_BOAT_CRUISE_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_SHOOTING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_SHOOTING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_MONEY_PICKUP, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_ACCURACY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_CUTSCENE, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CUTSCENE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CUTSCENE_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_CUTSCENE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CUTSCENE_TIME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CUTSCENE_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_CUTSCENE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_RESTORE_CAMERA_JUMPCUT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_COLLECTABLE1, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLLECTABLE1_TOTAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PROJECTILE_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_DESTROY_PROJECTILES_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DROP_MINE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DROP_NAUTICAL_MINE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_SPECIAL_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_CUTSCENE_HEAD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CUTSCENE_HEAD_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SIN, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_COS, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_FORWARD_X, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_FORWARD_Y, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_GARAGE_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ACTIVATE_CRUSHER_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PLAYER_MADE_PROGRESS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PROGRESS_TOTAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_JUMP_DISTANCE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_JUMP_HEIGHT, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_JUMP_FLIPS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_JUMP_SPINS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_JUMP_STUNT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_UNIQUE_JUMP_FOUND, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_UNIQUE_JUMPS_TOTAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_PASSENGER_DROPPED_OFF_TAXI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_MONEY_MADE_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_MISSION_GIVEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_MISSION_PASSED, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_RUNNING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_ALL_SCRIPT_FIRES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_FIRST_CAR_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_SECOND_CAR_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CAR_BEEN_DAMAGED_BY_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_CHARS_GROUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_PLAYERS_GROUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_EXPLODE_CHAR_HEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_EXPLODE_PLAYER_HEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ANCHOR_BOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ZONE_GROUP, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_CAR_FIRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_CHAR_FIRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_RESPRAY_HAPPENED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAMERA_ZOOM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_PICKUP_WITH_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_RAM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_BLOCK_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_CATCH_TRAIN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_CATCH_TRAIN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_NEVER_GETS_TIRED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_FAST_RELOAD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_BLEEDING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_FUNNY_SUSPENSION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_BIG_WHEELS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FREE_RESPRAYS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_VISIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_VISIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_VISIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_AREA_OCCUPIED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_START_DRUG_RUN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_DRUG_RUN_BEEN_COMPLETED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_DRUG_PLANE_BEEN_SHOT_DOWN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SAVE_PLAYER_FROM_FIRES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_TEXT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_SCALE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_JUSTIFY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_CENTRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_WRAPX, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_CENTRE_SIZE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_BACKGROUND, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_BACKGROUND_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_BACKGROUND_ONLY_TEXT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_PROPORTIONAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_FONT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_INDUSTRIAL_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_COMMERCIAL_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SUBURBAN_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ROTATE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SLIDE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_CHAR_ELEGANTLY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_STAY_IN_SAME_PLACE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_NASTY_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_UNDRESS_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DRESS_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_CHASE_SCENE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STOP_CHASE_SCENE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_EXPLOSION_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_EXPLOSION_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_START_DRUG_DROP_OFF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_DROP_OFF_PLANE_BEEN_SHOT_DOWN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FIND_DROP_OFF_PLANE_COORDINATES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_FLOATING_PACKAGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_PLACE_OBJECT_RELATIVE_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MAKE_OBJECT_TARGETTABLE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_ARMOUR_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_ARMOUR_TO_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_OPEN_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLOSE_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WARP_CHAR_FROM_CAR_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CHAR_SPOTTED_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_HAIL_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_OBJECT_BEEN_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_START_KILL_FRENZY_HEADSHOT, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ACTIVATE_MILITARY_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WARP_PLAYER_INTO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WARP_CHAR_INTO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_CAR_RADIO, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_AUDIO_STREAM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_WAIT_STATE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAMERA_BEHIND_PLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_MOTION_BLUR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_STRING_IN_STRING, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_RANDOM_CHAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_2_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_2_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_3_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_3_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_4_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_4_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_SNIPER_BULLET_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_PLAYER_DETONATOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_STEAL_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_OBJECT_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_ICECREAM_JINGLE_ON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_STRING_IN_STRING_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_STRING_IN_STRING_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_5_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_5_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_6_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_6_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_POINT_OBSCURED_BY_A_MISSION_ENTITY, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_ALL_MODELS_NOW, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_TO_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DRAW_SPRITE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DRAW_RECT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_SPRITE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_TEXTURE_DICTIONARY, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_TEXTURE_DICTIONARY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_OBJECT_DYNAMIC, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_ANIM_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PLAY_MISSION_PASSED_TUNE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FREEZE_ONSCREEN_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_CAR_SIREN, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_ON_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_OFF_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_ROADS_ON_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_ROADS_OFF_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_WATERTIGHT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_MOVING_PARTICLE_EFFECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_CANT_BE_DRAGGED_OUT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_CAR_TO_FACE_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CRANE_LIFTING_CAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_DRAW_SPHERE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_STATUS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_MALE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SCRIPT_NAME, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CHANGE_GARAGE_TYPE_WITH_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FIND_DRUG_PLANE_COORDINATES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SAVE_INT_TO_DEBUG_FILE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SAVE_FLOAT_TO_DEBUG_FILE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SAVE_NEWLINE_TO_DEBUG_FILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_POLICE_RADIO_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_STRONG, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_ROUTE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_RUBBISH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_PARTICLE_EFFECTS_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_STREAMING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_GARAGE_OPEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_GARAGE_CLOSED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_START_CATALINA_HELI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CATALINA_HELI_TAKE_OFF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_CATALINA_HELI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_CATALINA_HELI_BEEN_SHOT_DOWN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SWAP_NEAREST_BUILDING_MODEL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_WORLD_PROCESSING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_ALL_PLAYER_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GRAB_CATALINA_HELI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_AREA_OF_CARS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ROTATING_GARAGE_DOOR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPHERE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_SPHERE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CATALINA_HELI_FLY_AWAY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_EVERYONE_IGNORE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_CAR_CHAR_IS_IN_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_STORE_CAR_PLAYER_IS_IN_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PHONE_DISPLAYING_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_COUNTER_WITH_STRING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_RANDOM_CAR_FOR_CAR_PARK, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_COLLISION_IN_MEMORY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_WANTED_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAMERA_IN_FRONT_OF_PLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_VISIBLY_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_DOES_OBJECT_EXIST, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_SCENE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_STUCK_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_STUCK_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_STUCK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_MISSION_AUDIO, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_MISSION_AUDIO_LOADED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_PLAY_MISSION_AUDIO, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_MISSION_AUDIO_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_IMPORT_GARAGE_SLOT_BEEN_FILLED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_THIS_PRINT, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_THIS_BIG_PRINT, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_MISSION_AUDIO_POSITION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ACTIVATE_SAVE_MENU, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_SAVE_GAME_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_NO_SPECIAL_CAMERA_FOR_THIS_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_PICKUP_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PED_DENSITY_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FORCE_RANDOM_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_DRAW_BEFORE_FADE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_COLLECTABLE1S_COLLECTED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_EL_BURRO_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_SPRITES_DRAW_BEFORE_FADE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TEXT_RIGHT_JUSTIFY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PRINT_HELP, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_HELP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FLASH_HUD_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FLASH_RADAR_BLIP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_IN_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GENERATE_CARS_AROUND_CAMERA, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_SMALL_PRINTS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_HAS_MILITARY_CRANE_COLLECTED_ALL_CARS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_UPSIDEDOWN_CAR_NOT_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CAN_PLAYER_START_MISSION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_MAKE_PLAYER_SAFE_FOR_CUTSCENE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_USE_TEXT_COMMANDS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_THREAT_FOR_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_THREAT_FOR_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_COLOURS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ALL_CARS_CAN_BE_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_CAN_BE_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MAKE_PLAYER_UNSAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_BODY_CAST_HEALTH, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHARS_CHATTING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MAKE_PLAYER_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_STAYS_IN_CURRENT_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_STAYS_IN_CURRENT_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_4X4_ONE_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_4X4_TWO_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_4X4_THREE_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_4X4_MAYHEM_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_LIFE_SAVED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_CRIMINAL_CAUGHT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_AMBULANCE_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_FIRE_EXTINGUISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_TURN_PHONE_ON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_LONGEST_DODO_FLIGHT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_DEFUSE_BOMB_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TOTAL_NUMBER_OF_KILL_FRENZIES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_BLOW_UP_RC_BUGGY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REMOVE_CAR_FROM_CHASE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_FRENCH_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_GERMAN_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_MISSION_AUDIO, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FADE_IN_AFTER_NEXT_ARREST, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FADE_IN_AFTER_NEXT_DEATH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GANG_PED_MODEL_PREFERENCE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_USE_PEDNODE_SEEK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SWITCH_VEHICLE_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_GET_OUT_OF_JAIL_FREE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_FREE_HEALTH_CARE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_DOOR_CLOSED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_AND_LAUNCH_MISSION, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_AND_LAUNCH_MISSION_INTERNAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_OBJECT_DRAW_LAST, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_AMMO_IN_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_AMMO_IN_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_KILL_FRENZY_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_SAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_NEAR_CLIP, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_RADIO_CHANNEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_OVERRIDE_HOSPITAL_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_OVERRIDE_POLICE_STATION_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FORCE_RAIN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DOES_GARAGE_CONTAIN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_TRACTION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ARE_MEASUREMENTS_IN_METRES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CONVERT_METRES_TO_FEET, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_MARK_ROADS_BETWEEN_LEVELS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MARK_PED_ROADS_BETWEEN_LEVELS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_AVOID_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_AVOID_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_THREAT_FOR_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_AREA_OF_CHARS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_TOTAL_NUMBER_OF_MISSIONS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CONVERT_METRES_TO_FEET_INT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_FASTEST_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_WARP_CHAR_INTO_CAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CAR_PASSENGER_SEAT_FREE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CHAR_IN_CAR_PASSENGER_SEAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_IS_CHRIS_CRIMINAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STOP_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ARE_CREDITS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CREATE_SINGLE_PARTICLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_IGNORE_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CHASE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_START_BOAT_FOAM_ANIMATION, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_UPDATE_BOAT_FOAM_ANIMATION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_MUSIC_DOES_FADE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_INTRO_IS_PLAYING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_PLAYER_HOOKER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_PLAY_END_OF_GAME_TUNE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_STOP_END_OF_GAME_TUNE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_SITTING_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_SITTING_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_SCRIPT_FIRE_AUDIO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ARE_ANY_CAR_CHEATS_ACTIVATED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_SUFFERS_CRITICAL_HITS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_LIFTING_A_PHONE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_SITTING_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_SITTING_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_COLLISION_WITH_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_SPLASH_SCREEN, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_IGNORE_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_MAKE_CRAIGS_CAR_A_BIT_STRONGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_JAMES_CAR_ON_PATH_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOAD_END_OF_GAME_TUNE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_ENABLE_PLAYER_CONTROL_CAMERA, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), -#if GTA_VERSION > GTA3_PS2_160 - REGISTER_COMMAND(COMMAND_SET_OBJECT_ROTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_DEBUG_CAMERA_COORDINATES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_DEBUG_CAMERA_FRONT_VECTOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_TARGETTING_ANY_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_TARGETTING_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_TARGETTING_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_TEXT_WITH_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_STRING, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DISPLAY_TEXT_WITH_2_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_FAIL_CURRENT_MISSION, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CLOSEST_OBJECT_OF_TYPE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_PLACE_OBJECT_RELATIVE_TO_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ALL_OCCUPANTS_OF_CAR_LEAVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_INTERPOLATION_PARAMETERS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_TOWARDS_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_AWAY_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_DEBUG_CAMERA_POINT_AT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_ATTACH_CHAR_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_DETACH_CHAR_FROM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_CHANGE_LANE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_CHAR_LAST_WEAPON_DAMAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_CLEAR_CAR_LAST_WEAPON_DAMAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_RANDOM_COP_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_RANDOM_COP_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_DRIVER_OF_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CURRENT_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_CURRENT_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_OBJECT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_OBJECT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_OBJECT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_OBJECT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_OBJECT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_OBJECT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_HANDBRAKE_TURN_LEFT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_HANDBRAKE_TURN_RIGHT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_SET_CAR_HANDBRAKE_STOP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_ON_ANY_BIKE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_SNIPER_BULLET_2D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_LOCATE_SNIPER_BULLET_3D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), - REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_SEATS_IN_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), - REGISTER_COMMAND(COMMAND_IS_PLAYER_ON_ANY_BIKE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_IS_CHAR_LYING_DOWN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_CAN_CHAR_SEE_DEAD_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), - REGISTER_COMMAND(COMMAND_SET_ENTER_CAR_RANGE_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), -#if GTA_VERSION < GTA3_PC_11 - REGISTER_COMMAND(COMMAND_SET_THREAT_REACTION_RANGE_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), -#endif -#endif -}; -#undef REGISTER_COMMAND -#undef INPUT_ARGUMENTS -#undef OUTPUT_ARGUMENTS - -static_assert(ARRAY_SIZE(commands) == LAST_SCRIPT_COMMAND, "commands array not filled"); - -#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 -static FILE* dbg_log; -#endif - -static void PrintToLog(const char* format, ...) -{ - va_list va; - va_start(va, format); - char tmp[1024]; -#ifdef _WIN32 - vsprintf_s(tmp, 1024, format, va); -#else - vsprintf(tmp, format, va); -#endif - va_end(va); - -#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 - if (dbg_log) - fwrite(tmp, 1, strlen(tmp), dbg_log); -#endif -} - -#endif - -void FlushLog() -{ -#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT -#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 - if (dbg_log) - fflush(dbg_log); -#endif -#endif -} - - const uint32 CRunningScript::nSaveStructSize = #ifdef COMPATIBLE_SAVES 136; @@ -1626,68 +416,6 @@ void CRunningScript::CollectParameters(uint32* pIp, int16 total) } } -#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT -int CRunningScript::CollectParameterForDebug(char* buf, bool& var) -{ - float tmp; - uint16 varIndex; - char tmpstr[24]; - var = false; - switch (CTheScripts::Read1ByteFromScript(&m_nIp)) - { - case ARGUMENT_INT32: - return CTheScripts::Read4BytesFromScript(&m_nIp); - case ARGUMENT_GLOBALVAR: - varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); - script_assert(varIndex >= 8 && varIndex < CTheScripts::GetSizeOfVariableSpace()); - var = true; - sprintf(tmpstr, " $%d", varIndex / 4); - strcat(buf, tmpstr); - return *((int32*)&CTheScripts::ScriptSpace[varIndex]); - case ARGUMENT_LOCALVAR: - varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); - script_assert(varIndex >= 0 && varIndex < ARRAY_SIZE(m_anLocalVariables)); - var = true; - sprintf(tmpstr, " %d@", varIndex); - strcat(buf, tmpstr); - return m_anLocalVariables[varIndex]; - case ARGUMENT_INT8: - return CTheScripts::Read1ByteFromScript(&m_nIp); - case ARGUMENT_INT16: - return CTheScripts::Read2BytesFromScript(&m_nIp); - case ARGUMENT_FLOAT: - tmp = CTheScripts::ReadFloatFromScript(&m_nIp); - return *(int32*)&tmp; - default: - PrintToLog("%s - script assertion failed in CollectParameterForDebug", buf); - script_assert(0); - break; - } - return 0; -} - -void CRunningScript::GetStoredParameterForDebug(char* buf) -{ - uint16 varIndex; - char tmpstr[24]; - switch (CTheScripts::Read1ByteFromScript(&m_nIp)) { - case ARGUMENT_GLOBALVAR: - varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); - sprintf(tmpstr, " $%d", varIndex / 4); - strcat(buf, tmpstr); - break; - case ARGUMENT_LOCALVAR: - varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); - sprintf(tmpstr, " %d@", varIndex); - strcat(buf, tmpstr); - break; - default: - PrintToLog("%s - script_assertion failed in GetStoredParameterForDebug", buf); - script_assert(0); - } -} -#endif - int32 CRunningScript::CollectNextParameterWithoutIncreasingPC(uint32 ip) { uint32* pIp = &ip; @@ -1868,14 +596,8 @@ void CTheScripts::Init() for (int i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) InvisibilitySettingArray[i] = nil; -#if defined USE_ADVANCED_SCRIPT_DEBUG_OUTPUT && SCRIPT_LOG_FILE_LEVEL == 2 - CFileMgr::SetDirMyDocuments(); - if (dbg_log) - fclose(dbg_log); - dbg_log = fopen("SCRDBG.LOG", "w"); - static const char* init_msg = "Starting debug script log\n\n"; - PrintToLog(init_msg); - CFileMgr::SetDir(""); +#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT + LogAfterScriptInitializing(); #endif } @@ -1975,15 +697,7 @@ void CTheScripts::Process() #endif #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT -#if SCRIPT_LOG_FILE_LEVEL == 1 - CFileMgr::SetDirMyDocuments(); - dbg_log = fopen("SCRDBG.LOG", "w"); - static const char* init_msg = "Starting debug script log\n\n"; - PrintToLog(init_msg); - CFileMgr::SetDir(""); -#endif - PrintToLog("------------------------\n"); - PrintToLog("CTheScripts::Process started, CTimer::GetTimeInMilliseconds == %u\n", CTimer::GetTimeInMilliseconds()); + LogBeforeScriptProcessing(); #endif CRunningScript* script = pActiveScripts; @@ -1995,12 +709,9 @@ void CTheScripts::Process() script = next; } DbgFlag = false; + #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT - PrintToLog("Script processing done, ScriptsUpdated: %d, CommandsExecuted: %d\n", ScriptsUpdated, CommandsExecuted); -#if SCRIPT_LOG_FILE_LEVEL == 1 - fclose(dbg_log); - dbg_log = nil; -#endif + LogAfterScriptProcessing(); #endif } @@ -2017,7 +728,7 @@ bool CTheScripts::IsPlayerOnAMission() void CRunningScript::Process() { #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT - PrintToLog("\n\nProcessing script %s (id %d)\n\n", m_abScriptName, this - CTheScripts::ScriptsArray); + LogOnStartProcessing(); #endif if (m_bIsMissionScript) DoDeatharrestCheck(); @@ -2049,41 +760,7 @@ int8 CRunningScript::ProcessOneCommand() m_bNotFlag = (command & 0x8000); command &= 0x7FFF; #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT - char commandInfo[1024]; - uint32 ip = m_nIp; - if (command < ARRAY_SIZE(commands)) { - script_assert(commands[command].id == command); - m_nIp -= 2; - sprintf(commandInfo, m_nIp >= SIZE_MAIN_SCRIPT ? "M<%5d> " : "<%6d> ", m_nIp >= SIZE_MAIN_SCRIPT ? m_nIp - SIZE_MAIN_SCRIPT : m_nIp); - m_nIp += 2; - if (m_bNotFlag) - strcat(commandInfo, "NOT "); - if (commands[command].position == -1) - strcat(commandInfo, commands[command].name + sizeof("COMMAND_") - 1); - for (int i = 0; commands[command].input[i] != ARGTYPE_NONE; i++) { - char tmp[16]; - bool var = false; - int value; - switch (commands[command].input[i]) { - case ARGTYPE_INT: - case ARGTYPE_PED_HANDLE: - case ARGTYPE_VEHICLE_HANDLE: - case ARGTYPE_OBJECT_HANDLE: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%d)" : " %d", value); break; - case ARGTYPE_FLOAT: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%.3f)" : " %.3f", *(float*)&value); break; - case ARGTYPE_STRING: sprintf(tmp, " '%s'", (const char*)&CTheScripts::ScriptSpace[m_nIp]); m_nIp += KEY_LENGTH_IN_SCRIPT; break; - case ARGTYPE_LABEL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s(%d))" : " %s(%d)", value >= 0 ? "G" : "L", abs(value)); break; - case ARGTYPE_BOOL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s)" : " %s", value ? "TRUE" : "FALSE"); break; - case ARGTYPE_ANDOR: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, " %d %ss", (value + 1) % 10, value / 10 == 0 ? "AND" : "OR"); break; - default: script_assert(0); - } - strcat(commandInfo, tmp); - if (commands[command].position == i) - strcat(commandInfo, commands[command].name_override); - } - uint32 t = m_nIp; - m_nIp = ip; - ip = t; - } + LogBeforeProcessingCommand(command); #endif if (command < 100) retval = ProcessCommands0To99(command); @@ -2115,36 +792,7 @@ int8 CRunningScript::ProcessOneCommand() retval = ProcessCommands1100To1199(command); #endif #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT - if (command < ARRAY_SIZE(commands)) { - if (commands[command].cond || commands[command].output[0] != ARGTYPE_NONE) { - strcat(commandInfo, " ->"); - if (commands[command].cond) - strcat(commandInfo, m_bCondResult ? " TRUE" : " FALSE"); - uint32 t = m_nIp; - m_nIp = ip; - ip = t; - for (int i = 0; commands[command].output[i] != ARGTYPE_NONE; i++) { - char tmp[16]; - switch (commands[command].output[i]) { - case ARGTYPE_INT: - case ARGTYPE_PED_HANDLE: - case ARGTYPE_VEHICLE_HANDLE: - case ARGTYPE_OBJECT_HANDLE: GetStoredParameterForDebug(commandInfo); sprintf(tmp, " (%d)", ScriptParams[i]); strcat(commandInfo, tmp); break; - case ARGTYPE_FLOAT: GetStoredParameterForDebug(commandInfo); sprintf(tmp, " (%8.3f)", *(float*)&ScriptParams[i]); strcat(commandInfo, tmp); break; - default: script_assert(0 && "Script only returns INTs and FLOATs"); - } - } - m_nIp = ip; - } - PrintToLog("%s\n", commandInfo); - if (m_bMissionFlag) { - for (int i = 0; commandInfo[i]; i++) { - if (commandInfo[i] == '_') - commandInfo[i] = ' '; - } - CDebug::DebugAddText(commandInfo); - } - } + LogAfterProcessingCommand(command); #elif defined USE_BASIC_SCRIPT_DEBUG_OUTPUT if (m_bMissionFlag) { char tmp[128]; @@ -4360,48 +3008,3 @@ void RetryMission(int type, int unk) } #endif - -#ifdef MISSION_SWITCHER -void -CTheScripts::SwitchToMission(int32 mission) -{ - for (CRunningScript* pScript = CTheScripts::pActiveScripts; pScript != nil; pScript = pScript->GetNext()) { - if (!pScript->m_bIsMissionScript || !pScript->m_bDeatharrestEnabled) { - continue; - } - while (pScript->m_nStackPointer > 0) - --pScript->m_nStackPointer; - - pScript->m_nIp = pScript->m_anStack[pScript->m_nStackPointer]; - *(int32*)&CTheScripts::ScriptSpace[CTheScripts::OnAMissionFlag] = 0; - pScript->m_nWakeTime = 0; - pScript->m_bDeatharrestExecuted = true; - - while (!pScript->ProcessOneCommand()); - - CMessages::ClearMessages(); - } - -#ifdef MISSION_REPLAY - missionRetryScriptIndex = mission; - if (missionRetryScriptIndex == 19) - CStats::LastMissionPassedName[0] = '\0'; -#endif - CTimer::Suspend(); - int offset = CTheScripts::MultiScriptArray[mission]; - CFileMgr::ChangeDir("\\"); -#ifdef USE_DEBUG_SCRIPT_LOADER - int handle = open_script(); -#else - int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); -#endif - CFileMgr::Seek(handle, offset, 0); - CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT); - CFileMgr::CloseFile(handle); - CRunningScript* pMissionScript = CTheScripts::StartNewScript(SIZE_MAIN_SCRIPT); - CTimer::Resume(); - pMissionScript->m_bIsMissionScript = true; - pMissionScript->m_bMissionFlag = true; - CTheScripts::bAlreadyRunningAMissionScript = true; -} -#endif diff --git a/src/control/Script.h b/src/control/Script.h index cefd6747..470de444 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -370,6 +370,13 @@ public: #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT int CollectParameterForDebug(char* buf, bool& var); void GetStoredParameterForDebug(char* buf); + void LogOnStartProcessing(); + void LogBeforeProcessingCommand(int32 command); + void LogAfterProcessingCommand(int32 command); + + static char commandInfo[]; + static uint32 storedIp; + #endif float LimitAngleOnCircle(float angle) { return angle < 0.0f ? angle + 360.0f : angle; } @@ -576,6 +583,12 @@ public: public: static void SwitchToMission(int32 mission); #endif + +#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT + static void LogAfterScriptInitializing(); + static void LogBeforeScriptProcessing(); + static void LogAfterScriptProcessing(); +#endif }; #ifdef MISSION_REPLAY diff --git a/src/control/ScriptDebug.cpp b/src/control/ScriptDebug.cpp new file mode 100644 index 00000000..e9014088 --- /dev/null +++ b/src/control/ScriptDebug.cpp @@ -0,0 +1,1441 @@ +#include "common.h" + +#include "Script.h" +#include "ScriptCommands.h" + +#include "Debug.h" +#include "FileMgr.h" +#include "Messages.h" +#include "Timer.h" +#include "Stats.h" +#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT +#include +#endif + +#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT + +char CRunningScript::commandInfo[1024]; +uint32 CRunningScript::storedIp; + +#define REGISTER_COMMAND(command, in, out, cond, ovrd, visual) { command, #command, in, out, cond, ovrd, visual } +#define INPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE } +#define OUTPUT_ARGUMENTS(...) { __VA_ARGS__ ARGTYPE_NONE } +const tScriptCommandData commands[] = { + REGISTER_COMMAND(COMMAND_NOP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WAIT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GOTO, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SHAKE_CAM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_ADD_VAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_VAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_VAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_VAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_VAL_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_MULT_INT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_FLOAT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_INT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_FLOAT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_DIV_INT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_FLOAT_VAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_INT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_FLOAT_LVAR_BY_VAL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_THAN_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_THAN_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_THAN_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_THAN_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_THAN_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_THAN_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_THAN_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_THAN_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_THAN_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >"), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_GREATER_OR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_GREATER_OR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_NUMBER_GREATER_OR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_GREATER_OR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_GREATER_OR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " >="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_NOT_EQUAL_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_INT_LVAR_NOT_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_INT_VAR_NOT_EQUAL_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " =="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_LVAR_NOT_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_IS_FLOAT_VAR_NOT_EQUAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, 0, " !="), + REGISTER_COMMAND(COMMAND_GOTO_IF_TRUE, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GOTO_IF_FALSE, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_TERMINATE_THIS_SCRIPT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_NEW_SCRIPT, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GOSUB, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RETURN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LINE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PLAYER_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_INT_VAR_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_FLOAT_VAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_INT_LVAR_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_FLOAT_LVAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_INT_VAR_TO_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_FLOAT_VAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_INT_LVAR_TO_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_ADD_FLOAT_LVAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +="), + REGISTER_COMMAND(COMMAND_SUB_INT_VAR_FROM_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_FLOAT_VAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_INT_LVAR_FROM_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_FLOAT_LVAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_INT_VAR_FROM_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_FLOAT_VAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_INT_LVAR_FROM_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_SUB_FLOAT_LVAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -="), + REGISTER_COMMAND(COMMAND_MULT_INT_VAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_FLOAT_VAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_INT_LVAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_FLOAT_LVAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_INT_VAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_FLOAT_VAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_INT_LVAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_MULT_FLOAT_LVAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " *="), + REGISTER_COMMAND(COMMAND_DIV_INT_VAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_FLOAT_VAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_INT_LVAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_FLOAT_LVAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_INT_VAR_BY_INT_LVAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_FLOAT_VAR_BY_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_INT_LVAR_BY_INT_VAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_DIV_FLOAT_LVAR_BY_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " /="), + REGISTER_COMMAND(COMMAND_ADD_TIMED_VAL_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), + REGISTER_COMMAND(COMMAND_ADD_TIMED_VAL_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), + REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), + REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), + REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_LVAR_TO_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), + REGISTER_COMMAND(COMMAND_ADD_TIMED_FLOAT_VAR_TO_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " +=@"), + REGISTER_COMMAND(COMMAND_SUB_TIMED_VAL_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), + REGISTER_COMMAND(COMMAND_SUB_TIMED_VAL_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), + REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), + REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), + REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_LVAR_FROM_FLOAT_VAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), + REGISTER_COMMAND(COMMAND_SUB_TIMED_FLOAT_VAR_FROM_FLOAT_LVAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " -=@"), + REGISTER_COMMAND(COMMAND_SET_VAR_INT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_LVAR_INT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_VAR_FLOAT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_LVAR_FLOAT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_VAR_FLOAT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_LVAR_FLOAT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_VAR_INT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_SET_LVAR_INT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ="), + REGISTER_COMMAND(COMMAND_CSET_VAR_INT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_VAR_FLOAT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_LVAR_INT_TO_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_LVAR_FLOAT_TO_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_VAR_INT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_VAR_FLOAT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_LVAR_INT_TO_LVAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_CSET_LVAR_FLOAT_TO_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " =#"), + REGISTER_COMMAND(COMMAND_ABS_VAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), + REGISTER_COMMAND(COMMAND_ABS_LVAR_INT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), + REGISTER_COMMAND(COMMAND_ABS_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), + REGISTER_COMMAND(COMMAND_ABS_VAR_FLOAT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, 0, " ABS"), + REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), false, -1, ""), + REGISTER_COMMAND(COMMAND_DELETE_CHAR, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHAR_WANDER_DIR, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHAR_WANDER_RANGE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHAR_FOLLOW_PATH, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHAR_SET_IDLE, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CHAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STILL_ALIVE, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_PED_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), false, -1, ""), + REGISTER_COMMAND(COMMAND_DELETE_CAR, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CAR_GOTO_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CAR_WANDER_RANDOMLY, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CAR_SET_IDLE, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_STILL_ALIVE, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_CRUISE_SPEED, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_DRIVING_STYLE, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_MISSION, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_VEHICLE_HANDLE, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_BOOL,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_0, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_1, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_2, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_3, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_4, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_5, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_6, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SPECIAL_7, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_PRINTS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_TIME_OF_DAY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TIME_OF_DAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_MINUTES_TO_TIME_OF_DAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_POINT_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DEBUG_ON, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DEBUG_OFF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RETURN_TRUE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RETURN_FALSE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_VAR_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_VAR_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LVAR_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LVAR_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LBRACKET, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RBRACKET, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REPEAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ENDREPEAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IFNOT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ELSE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ENDIF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WHILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WHILENOT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ENDWHILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ANDOR, INPUT_ARGUMENTS(ARGTYPE_ANDOR,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LAUNCH_MISSION, INPUT_ARGUMENTS(ARGTYPE_LABEL,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MISSION_HAS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_CAR_CHAR_IS_IN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_CAR_PLAYER_IS_IN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_BUTTON_PRESSED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PAD_STATE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_PLAYER_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ANY_MEANS_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CHAR_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CHAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), true, -1, ""), + REGISTER_COMMAND(COMMAND_DELETE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_SCORE_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_REMOTE_CONTROLLED_CAR_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ALTER_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ALTER_WANTED_LEVEL_NO_DROP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_WANTED_LEVEL_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_DEATHARREST_STATE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_DEATHARREST_BEEN_EXECUTED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_AMMO_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_AMMO_TO_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_AMMO_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STILL_ALIVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_DEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_DEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_DEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_THREAT_SEARCH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_THREAT_REACTION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_NO_OBJ, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ORDER_DRIVER_OUT_OF_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ORDER_CHAR_TO_DRIVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_PATROL_POINT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_GANGZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_PRESSING_HORN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CHAR_SPOTTED_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ORDER_CHAR_TO_BACKDOOR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_CHAR_TO_GANG, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_OBJECTIVE_PASSED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_DRIVE_AGGRESSION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_MAX_DRIVESPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CHAR_INSIDE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_WARP_PLAYER_FROM_CAR_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MAKE_CHAR_DO_NOTHING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_INVINCIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_INVINCIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_GRAPHIC_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_GRAPHIC_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_PLAYER_BEEN_ARRESTED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_STOP_CHAR_DRIVING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_KILL_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FAVOURITE_CAR_MODEL_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OCCUPATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_CAR_LOCK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SHAKE_CAM_WITH_POINT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_REMAP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CAR_JUST_SUNK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_NO_COLLIDE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_DEAD_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_DEAD_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_TRAILER_ATTACHED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_ON_TRAILER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CAR_GOT_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_PARK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_PARK_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_KILL_ALL_PASSENGERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_BULLETPROOF, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_FLAMEPROOF, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_ROCKETPROOF, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CARBOMB_ACTIVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_CAR_ALARM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PUT_CAR_ON_TRAILER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_CRUSHED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_GANG_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CAR_GENERATOR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_CAR_GENERATOR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_PAGER_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_ONSCREEN_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_COUNTER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_ONSCREEN_COUNTER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ZONE_CAR_INFO, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_GANG_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_DENSITY, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PED_DENSITY, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RESTORE_CAMERA, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SHAKE_PAD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ZONE_PED_INFO, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TIME_SCALE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_IN_AIR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FIXED_CAMERA_POSITION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_POINT_CAMERA_AT_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CAR_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CHAR_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_OBJECT_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_BLIP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_BLIP_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DIM_BLIP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_COORD_OLD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_BLIP_SCALE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FADING_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DO_FADE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_FADING_STATUS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_HOSPITAL_RESTART, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_POLICE_RESTART, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_OVERRIDE_NEXT_RESTART, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DRAW_SHADOW, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PLAYER_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CHAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_OBJECT_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_TOUCHING_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_TOUCHING_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_CAMERA_SPLINE, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MOVE_CAMERA_ALONG_SPLINE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAMERA_POSITION_ALONG_SPLINE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_DECLARE_MISSION_FLAG, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DECLARE_MISSION_FLAG_FOR_CONTACT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DECLARE_BASE_BRIEF_ID_FOR_CONTACT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_HEALTH_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_HEALTH_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_HEALTH_GREATER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_CONTACT_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_COORD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_BLIP_DISPLAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_ONE_OFF_SOUND, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_CONTINUOUS_SOUND, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_SOUND, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_STUCK_ON_ROOF, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_UPSIDEDOWN_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_UPSIDEDOWN_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_WAIT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GUARD_SPOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GUARD_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_WAIT_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED_IN_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_STOPPED_IN_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_WEAPON_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_WEAPON_TO_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_WEAPON_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FORCE_WEATHER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FORCE_WEATHER_NOW, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RELEASE_WEATHER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CURRENT_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CURRENT_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CURRENT_CAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_OBJECT_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_COORDINATES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_GAME_TIMER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_CHAR_TO_FACE_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_PLAYER_TO_FACE_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_STOPPED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_MARK_CHAR_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MARK_CAR_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MARK_OBJECT_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DONT_REMOVE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DONT_REMOVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DONT_REMOVE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CHAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_CHAR_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_KILL_PLAYER_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_LEAVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_ENTER_CAR_AS_DRIVER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_DESTROY_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_DESTROY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_AREA_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_AREA_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GUARD_ATTACK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_AS_LEADER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_AS_LEADER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LEAVE_GROUP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_ROUTE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_ROUTE_POINT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_ROADS_ON, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_ROADS_OFF, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_PASSENGERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_MAXIMUM_NUMBER_OF_PASSENGERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_DENSITY_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_HEAVY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_CHAR_THREAT_SEARCH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ACTIVATE_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DEACTIVATE_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_MAX_WANTED_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SAVE_VAR_INT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SAVE_VAR_FLOAT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_IN_AIR_PROPER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_UPSIDEDOWN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PLAYER_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CANCEL_OVERRIDE_RESTART, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_POLICE_IGNORE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_PAGER_MESSAGE_WITH_NUMBER, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_KILL_FRENZY, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_READ_KILL_FRENZY_STATUS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SQRT, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ANY_MEANS_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_ON_FOOT_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_PLAYER_IN_CAR_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_FLOAT_IN_RANGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GENERATE_RANDOM_INT_IN_RANGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOCK_CAR_DOORS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_EXPLODE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_EXPLOSION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_UPRIGHT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_CHAR_TO_FACE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_CHAR_TO_FACE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_PLAYER_TO_FACE_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_COORD_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_COORD_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_PICKUP_BEEN_COLLECTED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TAXI_LIGHTS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_BIG_Q, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_NUMBER_BIG_Q, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GARAGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GARAGE_WITH_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TARGET_CAR_FOR_MISSION_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_IN_MISSION_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FREE_BOMBS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_POWERPOINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ALL_TAXI_LIGHTS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_ARMED_WITH_ANY_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_APPLY_BRAKES_TO_PLAYERS_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_PLAYER_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CHAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_HEALTH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_ARMED_WITH_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_CAR_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_ON, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_OFF, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHAR_LOOK_AT_CHAR_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHAR_LOOK_AT_PLAYER_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PLAYER_LOOK_AT_CHAR_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STOP_CHAR_LOOKING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STOP_PLAYER_LOOKING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_HELICOPTER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_ATTITUDE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_GANG_ATTITUDE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_PLAYER_ATTITUDE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_PED_MODELS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_RUN_TO_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_RUN_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_TOUCHING_OBJECT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_TOUCHING_OBJECT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_SPECIAL_CHARACTER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_SPECIAL_CHARACTER_LOADED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_FLASH_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FLASH_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FLASH_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_REMOTE_MODE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_ARM_CAR_WITH_BOMB, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_PERSONALITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CUTSCENE_OFFSET, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ANIM_GROUP_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ANIM_GROUP_FOR_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REQUEST_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_MODEL_LOADED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_MARK_MODEL_AS_NO_LONGER_NEEDED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GRAB_PHONE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_REPEATED_PHONE_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PHONE_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_PHONE_DISPLAYED_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_PHONE_OFF, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DRAW_CORONA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DRAW_LIGHT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_WEATHER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RESTORE_WEATHER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_CLOCK, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RESTORE_CLOCK, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RESTART_CRITICAL_MISSION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_PLAYING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_NO_OBJ, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_WAIT_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GUARD_SPOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GUARD_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_WAIT_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_CHAR_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_KILL_PLAYER_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_TILL_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_CHAR_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FLEE_PLAYER_ON_FOOT_ALWAYS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_LEAVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_ENTER_CAR_AS_DRIVER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FOLLOW_CAR_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FIRE_AT_OBJECT_FROM_VEHICLE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_DESTROY_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_DESTROY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_AREA_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_AREA_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FOLLOW_CAR_ON_FOOT_WITH_OFFSET, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GUARD_ATTACK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_FOLLOW_ROUTE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_COORD_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_COORD_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_RUN_TO_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_RUN_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_PEDS_IN_AREA_TO_COLL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_PEDS_IN_VEHICLE_TO_COLL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_COLL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_IN_CARS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_COLL_ANY_MEANS_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_COLL_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_STOPPED_COLL_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_CHAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ANY_MEANS_PLAYER_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_ON_FOOT_PLAYER_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_COLL_IN_CAR_PLAYER_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_STOPPED_IN_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_STOPPED_IN_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLL_STOPPED_IN_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_PEDS_IN_COLL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_HEED_THREATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_HEED_THREATS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CONTROLLER_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAN_RESPRAY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_UNLOAD_SPECIAL_CHARACTER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RESET_NUM_OF_MODELS_KILLED_BY_PLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUM_OF_MODELS_KILLED_BY_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ACTIVATE_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_TAXI_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_OBJECT_NO_OFFSET, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_BOAT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_GOTO_AREA_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_GOTO_AREA_ANY_MEANS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_STOPPED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_MESSAGE_WAIT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_PARTICLE_EFFECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_WIDESCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_CONTACT_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_COORD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_ONLY_DAMAGED_BY_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_ONLY_DAMAGED_BY_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_PROOFS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_PROOFS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_ANGLED_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_ON_FOOT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_STOPPED_IN_ANGLED_AREA_IN_CAR_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DEACTIVATE_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_CARS_COLLECTED_BY_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CAR_BEEN_TAKEN_TO_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_SWAT_REQUIRED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FBI_REQUIRED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ARMY_REQUIRED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_IN_WATER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_CHAR_NODE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CAR_GOTO_COORDINATES_ACCURATE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_PACMAN_RACE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_PACMAN_RECORD, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_POWER_PILLS_EATEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_PACMAN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_PACMAN_SCRAMBLE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_POWER_PILLS_CARRIED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_CARRIED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_OBJECT_ON_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GOSUB_FILE, INPUT_ARGUMENTS(ARGTYPE_LABEL, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_GROUND_Z_FOR_3D_COORD, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_SCRIPT_FIRE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_SCRIPT_FIRE_EXTINGUISHED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_SCRIPT_FIRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COMEDY_CONTROLS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_BOAT_GOTO_COORDS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_BOAT_STOP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_SHOOTING_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_SHOOTING_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CURRENT_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CURRENT_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_NUMBER_OF_POWER_PILLS_EATEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_POWER_PILL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_BOAT_CRUISE_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_CHAR_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_IN_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_SHOOTING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_SHOOTING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_MONEY_PICKUP, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_ACCURACY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_CUTSCENE, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CUTSCENE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CUTSCENE_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_CUTSCENE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CUTSCENE_TIME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CUTSCENE_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_CUTSCENE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_RESTORE_CAMERA_JUMPCUT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_COLLECTABLE1, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLLECTABLE1_TOTAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PROJECTILE_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DESTROY_PROJECTILES_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DROP_MINE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DROP_NAUTICAL_MINE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_SPECIAL_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_CUTSCENE_HEAD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CUTSCENE_HEAD_ANIM, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SIN, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_COS, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_FORWARD_X, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_FORWARD_Y, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_GARAGE_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ACTIVATE_CRUSHER_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FOLLOW_CHAR_IN_FORMATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PLAYER_MADE_PROGRESS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PROGRESS_TOTAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_JUMP_DISTANCE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_JUMP_HEIGHT, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_JUMP_FLIPS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_JUMP_SPINS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_JUMP_STUNT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_UNIQUE_JUMP_FOUND, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_UNIQUE_JUMPS_TOTAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_PASSENGER_DROPPED_OFF_TAXI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_MONEY_MADE_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_MISSION_GIVEN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_MISSION_PASSED, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_RUNNING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_ALL_SCRIPT_FIRES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_FIRST_CAR_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_SECOND_CAR_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CHAR_BEEN_DAMAGED_BY_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CAR_BEEN_DAMAGED_BY_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_CHARS_GROUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_PLAYERS_GROUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_EXPLODE_CHAR_HEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_EXPLODE_PLAYER_HEAD, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ANCHOR_BOAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ZONE_GROUP, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_CAR_FIRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_CHAR_FIRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_CAR_OF_TYPE_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_RESPRAY_HAPPENED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAMERA_ZOOM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_PICKUP_WITH_AMMO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_RAM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_BLOCK_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_CATCH_TRAIN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_CATCH_TRAIN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_NEVER_GETS_TIRED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_FAST_RELOAD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_BLEEDING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_FUNNY_SUSPENSION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_BIG_WHEELS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FREE_RESPRAYS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_VISIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_VISIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_VISIBLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_AREA_OCCUPIED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_START_DRUG_RUN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_DRUG_RUN_BEEN_COMPLETED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_DRUG_PLANE_BEEN_SHOT_DOWN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SAVE_PLAYER_FROM_FIRES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_TEXT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_SCALE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_JUSTIFY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_CENTRE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_WRAPX, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_CENTRE_SIZE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_BACKGROUND, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_BACKGROUND_COLOUR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_BACKGROUND_ONLY_TEXT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_PROPORTIONAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_FONT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_INDUSTRIAL_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_COMMERCIAL_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SUBURBAN_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ROTATE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SLIDE_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_CHAR_ELEGANTLY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_STAY_IN_SAME_PLACE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_NASTY_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_UNDRESS_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DRESS_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_CHASE_SCENE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STOP_CHASE_SCENE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_EXPLOSION_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_EXPLOSION_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_START_DRUG_DROP_OFF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_DROP_OFF_PLANE_BEEN_SHOT_DOWN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FIND_DROP_OFF_PLANE_COORDINATES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_FLOATING_PACKAGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_PLACE_OBJECT_RELATIVE_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MAKE_OBJECT_TARGETTABLE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_ARMOUR_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_ARMOUR_TO_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_OPEN_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLOSE_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WARP_CHAR_FROM_CAR_TO_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_VISIBILITY_OF_CLOSEST_OBJECT_OF_TYPE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CHAR_SPOTTED_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_HAIL_TAXI, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_OBJECT_BEEN_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_START_KILL_FRENZY_HEADSHOT, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ACTIVATE_MILITARY_CRANE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WARP_PLAYER_INTO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WARP_CHAR_INTO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_CAR_RADIO, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_AUDIO_STREAM, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_2_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_3_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_4_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_5_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_WITH_6_NUMBERS_BIG, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_WAIT_STATE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAMERA_BEHIND_PLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_MOTION_BLUR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_STRING_IN_STRING, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_RANDOM_CHAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_STEAL_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_2_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_2_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_3_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_3_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_4_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_4_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_SNIPER_BULLET_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_PLAYER_DETONATOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_COLL_OBJ_STEAL_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_ICECREAM_JINGLE_ON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_STRING_IN_STRING_NOW, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_STRING_IN_STRING_SOON, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_5_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_5_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_6_REPEATED_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_6_PHONE_MESSAGES, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_POINT_OBSCURED_BY_A_MISSION_ENTITY, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_ALL_MODELS_NOW, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_TO_OBJECT_VELOCITY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DRAW_SPRITE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DRAW_RECT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_SPRITE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_TEXTURE_DICTIONARY, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_TEXTURE_DICTIONARY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_DYNAMIC, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_ANIM_SPEED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PLAY_MISSION_PASSED_TUNE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FREEZE_ONSCREEN_TIMER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_CAR_SIREN, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_ON_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_PED_ROADS_OFF_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_ROADS_ON_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_ROADS_OFF_ANGLED, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_WATERTIGHT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_MOVING_PARTICLE_EFFECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_CANT_BE_DRAGGED_OUT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_CAR_TO_FACE_COORD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CRANE_LIFTING_CAR, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DRAW_SPHERE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_STATUS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_MALE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SCRIPT_NAME, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CHANGE_GARAGE_TYPE_WITH_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FIND_DRUG_PLANE_COORDINATES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SAVE_INT_TO_DEBUG_FILE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SAVE_FLOAT_TO_DEBUG_FILE, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SAVE_NEWLINE_TO_DEBUG_FILE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_POLICE_RADIO_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_STRONG, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_ROUTE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_RUBBISH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_PARTICLE_EFFECTS_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_STREAMING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_GARAGE_OPEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_GARAGE_CLOSED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_START_CATALINA_HELI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CATALINA_HELI_TAKE_OFF, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_CATALINA_HELI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_CATALINA_HELI_BEEN_SHOT_DOWN, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SWAP_NEAREST_BUILDING_MODEL, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_WORLD_PROCESSING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_ALL_PLAYER_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GRAB_CATALINA_HELI, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_AREA_OF_CARS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ROTATING_GARAGE_DOOR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPHERE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_SPHERE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CATALINA_HELI_FLY_AWAY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_EVERYONE_IGNORE_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_CAR_CHAR_IS_IN_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_STORE_CAR_PLAYER_IS_IN_NO_SAVE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PHONE_DISPLAYING_MESSAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_TIMER_WITH_STRING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_ONSCREEN_COUNTER_WITH_STRING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_RANDOM_CAR_FOR_CAR_PARK, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_COLLISION_IN_MEMORY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_WANTED_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAMERA_IN_FRONT_OF_PLAYER, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_VISIBLY_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_DOES_OBJECT_EXIST, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_SCENE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_STUCK_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_STUCK_CAR_CHECK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_STUCK, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_MISSION_AUDIO, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_MISSION_AUDIO_LOADED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_PLAY_MISSION_AUDIO, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_MISSION_AUDIO_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_IMPORT_GARAGE_SLOT_BEEN_FILLED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_THIS_PRINT, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_THIS_BIG_PRINT, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_MISSION_AUDIO_POSITION, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ACTIVATE_SAVE_MENU, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_SAVE_GAME_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_NO_SPECIAL_CAMERA_FOR_THIS_GARAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_PICKUP_OLD, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_BLIP_FOR_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ADD_SPRITE_BLIP_FOR_PICKUP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PED_DENSITY_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FORCE_RANDOM_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_DRAW_BEFORE_FADE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_COLLECTABLE1S_COLLECTED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_EL_BURRO_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_SPRITES_DRAW_BEFORE_FADE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TEXT_RIGHT_JUSTIFY, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PRINT_HELP, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_HELP, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FLASH_HUD_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FLASH_RADAR_BLIP, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_IN_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GENERATE_CARS_AROUND_CAMERA, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_SMALL_PRINTS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_HAS_MILITARY_CRANE_COLLECTED_ALL_CARS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_UPSIDEDOWN_CAR_NOT_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CAN_PLAYER_START_MISSION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_MAKE_PLAYER_SAFE_FOR_CUTSCENE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_USE_TEXT_COMMANDS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_THREAT_FOR_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_THREAT_FOR_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_COLOURS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ALL_CARS_CAN_BE_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_CAN_BE_DAMAGED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MAKE_PLAYER_UNSAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_COLLISION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_BODY_CAST_HEALTH, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHARS_CHATTING, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MAKE_PLAYER_SAFE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_STAYS_IN_CURRENT_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_STAYS_IN_CURRENT_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_4X4_ONE_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_4X4_TWO_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_4X4_THREE_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_4X4_MAYHEM_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_LIFE_SAVED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_CRIMINAL_CAUGHT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_AMBULANCE_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_FIRE_EXTINGUISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_TURN_PHONE_ON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_LONGEST_DODO_FLIGHT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_DEFUSE_BOMB_TIME, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TOTAL_NUMBER_OF_KILL_FRENZIES, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_BLOW_UP_RC_BUGGY, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REMOVE_CAR_FROM_CHASE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_FRENCH_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_GERMAN_GAME, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_MISSION_AUDIO, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FADE_IN_AFTER_NEXT_ARREST, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FADE_IN_AFTER_NEXT_DEATH, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GANG_PED_MODEL_PREFERENCE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_USE_PEDNODE_SEEK, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SWITCH_VEHICLE_WEAPONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_GET_OUT_OF_JAIL_FREE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_FREE_HEALTH_CARE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_DOOR_CLOSED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_AND_LAUNCH_MISSION, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_AND_LAUNCH_MISSION_INTERNAL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_OBJECT_DRAW_LAST, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_AMMO_IN_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_AMMO_IN_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_KILL_FRENZY_PASSED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_SAY, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_NEAR_CLIP, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_RADIO_CHANNEL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_OVERRIDE_HOSPITAL_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_OVERRIDE_POLICE_STATION_LEVEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FORCE_RAIN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DOES_GARAGE_CONTAIN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_TRACTION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ARE_MEASUREMENTS_IN_METRES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CONVERT_METRES_TO_FEET, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_MARK_ROADS_BETWEEN_LEVELS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MARK_PED_ROADS_BETWEEN_LEVELS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_AVOID_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_AVOID_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_THREAT_FOR_PED_TYPE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_AREA_OF_CHARS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_TOTAL_NUMBER_OF_MISSIONS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CONVERT_METRES_TO_FEET_INT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_FASTEST_TIME, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_REGISTER_HIGHEST_SCORE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_WARP_CHAR_INTO_CAR_AS_PASSENGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CAR_PASSENGER_SEAT_FREE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CHAR_IN_CAR_PASSENGER_SEAT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_IS_CHRIS_CRIMINAL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STOP_CREDITS, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ARE_CREDITS_FINISHED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CREATE_SINGLE_PARTICLE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_IGNORE_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CHASE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_START_BOAT_FOAM_ANIMATION, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_UPDATE_BOAT_FOAM_ANIMATION, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_MUSIC_DOES_FADE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_INTRO_IS_PLAYING, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_PLAYER_HOOKER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_PLAY_END_OF_GAME_TUNE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_STOP_END_OF_GAME_TUNE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CAR_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_SITTING_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_SITTING_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_SCRIPT_FIRE_AUDIO, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ARE_ANY_CAR_CHEATS_ACTIVATED, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_SUFFERS_CRITICAL_HITS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_LIFTING_A_PHONE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_SITTING_IN_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_SITTING_IN_ANY_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_ON_FOOT, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_COLLISION_WITH_SCREEN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_SPLASH_SCREEN, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_IGNORE_LEVEL_TRANSITIONS, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_MAKE_CRAIGS_CAR_A_BIT_STRONGER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_JAMES_CAR_ON_PATH_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOAD_END_OF_GAME_TUNE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_ENABLE_PLAYER_CONTROL_CAMERA, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), +#if GTA_VERSION > GTA3_PS2_160 + REGISTER_COMMAND(COMMAND_SET_OBJECT_ROTATION, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_DEBUG_CAMERA_COORDINATES, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_DEBUG_CAMERA_FRONT_VECTOR, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_TARGETTING_ANY_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_TARGETTING_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_TARGETTING_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME, INPUT_ARGUMENTS(ARGTYPE_STRING,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_TEXT_WITH_NUMBER, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_STRING, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DISPLAY_TEXT_WITH_2_NUMBERS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_FAIL_CURRENT_MISSION, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_OBJECT_OF_TYPE, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_PLACE_OBJECT_RELATIVE_TO_OBJECT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ALL_OCCUPANTS_OF_CAR_LEAVE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_INTERPOLATION_PARAMETERS, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_TOWARDS_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CLOSEST_CAR_NODE_WITH_HEADING_AWAY_POINT, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_DEBUG_CAMERA_POINT_AT, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_ATTACH_CHAR_TO_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_DETACH_CHAR_FROM_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_CHANGE_LANE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_CHAR_LAST_WEAPON_DAMAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_CLEAR_CAR_LAST_WEAPON_DAMAGE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_COP_IN_AREA, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_RANDOM_COP_IN_ZONE, INPUT_ARGUMENTS(ARGTYPE_STRING, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CHAR_OBJ_FLEE_CAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_DRIVER_OF_CAR, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_FOLLOWERS, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GIVE_REMOTE_CONTROLLED_MODEL_TO_PLAYER, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CURRENT_PLAYER_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_CURRENT_CHAR_WEAPON, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_OBJECT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_OBJECT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_OBJECT_2D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ANY_MEANS_OBJECT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_ON_FOOT_OBJECT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_CHAR_IN_CAR_OBJECT_3D, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_HANDBRAKE_TURN_LEFT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_HANDBRAKE_TURN_RIGHT, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_SET_CAR_HANDBRAKE_STOP, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_ON_ANY_BIKE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_SNIPER_BULLET_2D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_LOCATE_SNIPER_BULLET_3D, INPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_FLOAT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), false, -1, ""), + REGISTER_COMMAND(COMMAND_GET_NUMBER_OF_SEATS_IN_MODEL, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(ARGTYPE_INT,), false, -1, ""), + REGISTER_COMMAND(COMMAND_IS_PLAYER_ON_ANY_BIKE, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_IS_CHAR_LYING_DOWN, INPUT_ARGUMENTS(ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_CAN_CHAR_SEE_DEAD_CHAR, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT,), OUTPUT_ARGUMENTS(), true, -1, ""), + REGISTER_COMMAND(COMMAND_SET_ENTER_CAR_RANGE_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), +#if GTA_VERSION < GTA3_PC_11 + REGISTER_COMMAND(COMMAND_SET_THREAT_REACTION_RANGE_MULTIPLIER, INPUT_ARGUMENTS(ARGTYPE_FLOAT,), OUTPUT_ARGUMENTS(), false, -1, ""), +#endif +#endif +}; +#undef REGISTER_COMMAND +#undef INPUT_ARGUMENTS +#undef OUTPUT_ARGUMENTS + +static_assert(ARRAY_SIZE(commands) == LAST_SCRIPT_COMMAND, "commands array not filled"); + +#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 +static FILE* dbg_log; +#endif + +static void PrintToLog(const char* format, ...) +{ + va_list va; + va_start(va, format); + char tmp[1024]; +#ifdef _WIN32 + vsprintf_s(tmp, 1024, format, va); +#else + vsprintf(tmp, format, va); +#endif + va_end(va); + +#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 + if (dbg_log) + fwrite(tmp, 1, strlen(tmp), dbg_log); +#endif +} + +int CRunningScript::CollectParameterForDebug(char* buf, bool& var) +{ + float tmp; + uint16 varIndex; + char tmpstr[24]; + var = false; + switch (CTheScripts::Read1ByteFromScript(&m_nIp)) + { + case ARGUMENT_INT32: + return CTheScripts::Read4BytesFromScript(&m_nIp); + case ARGUMENT_GLOBALVAR: + varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); + script_assert(varIndex >= 8 && varIndex < CTheScripts::GetSizeOfVariableSpace()); + var = true; + sprintf(tmpstr, " $%d", varIndex / 4); + strcat(buf, tmpstr); + return *((int32*)&CTheScripts::ScriptSpace[varIndex]); + case ARGUMENT_LOCALVAR: + varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); + script_assert(varIndex >= 0 && varIndex < ARRAY_SIZE(m_anLocalVariables)); + var = true; + sprintf(tmpstr, " %d@", varIndex); + strcat(buf, tmpstr); + return m_anLocalVariables[varIndex]; + case ARGUMENT_INT8: + return CTheScripts::Read1ByteFromScript(&m_nIp); + case ARGUMENT_INT16: + return CTheScripts::Read2BytesFromScript(&m_nIp); + case ARGUMENT_FLOAT: + tmp = CTheScripts::ReadFloatFromScript(&m_nIp); + return *(int32*)&tmp; + default: + PrintToLog("%s - script assertion failed in CollectParameterForDebug", buf); + script_assert(0); + break; + } + return 0; +} + +void CRunningScript::GetStoredParameterForDebug(char* buf) +{ + uint16 varIndex; + char tmpstr[24]; + switch (CTheScripts::Read1ByteFromScript(&m_nIp)) { + case ARGUMENT_GLOBALVAR: + varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); + sprintf(tmpstr, " $%d", varIndex / 4); + strcat(buf, tmpstr); + break; + case ARGUMENT_LOCALVAR: + varIndex = CTheScripts::Read2BytesFromScript(&m_nIp); + sprintf(tmpstr, " %d@", varIndex); + strcat(buf, tmpstr); + break; + default: + PrintToLog("%s - script_assertion failed in GetStoredParameterForDebug", buf); + script_assert(0); + } +} + +void CTheScripts::LogAfterScriptInitializing() +{ +#if SCRIPT_LOG_FILE_LEVEL == 2 + CFileMgr::SetDirMyDocuments(); + if (dbg_log) + fclose(dbg_log); + dbg_log = fopen("SCRDBG.LOG", "w"); + static const char* init_msg = "Starting debug script log\n\n"; + PrintToLog(init_msg); + CFileMgr::SetDir(""); +#endif +} + +void CTheScripts::LogBeforeScriptProcessing() +{ + +#if SCRIPT_LOG_FILE_LEVEL == 1 + CFileMgr::SetDirMyDocuments(); + dbg_log = fopen("SCRDBG.LOG", "w"); + static const char* init_msg = "Starting debug script log\n\n"; + PrintToLog(init_msg); + CFileMgr::SetDir(""); +#endif + PrintToLog("------------------------\n"); + PrintToLog("CTheScripts::Process started, CTimer::GetTimeInMilliseconds == %u\n", CTimer::GetTimeInMilliseconds()); +} + +void CTheScripts::LogAfterScriptProcessing() +{ + PrintToLog("Script processing done, ScriptsUpdated: %d, CommandsExecuted: %d\n", ScriptsUpdated, CommandsExecuted); +#if SCRIPT_LOG_FILE_LEVEL == 1 + fclose(dbg_log); + dbg_log = nil; +#endif +} + +void CRunningScript::LogOnStartProcessing() +{ + PrintToLog("\n\nProcessing script %s (id %d)\n\n", m_abScriptName, this - CTheScripts::ScriptsArray); +} + +void CRunningScript::LogBeforeProcessingCommand(int32 command) +{ + storedIp = m_nIp; + if (command < ARRAY_SIZE(commands)) { + script_assert(commands[command].id == command); + m_nIp -= 2; + sprintf(commandInfo, m_nIp >= SIZE_MAIN_SCRIPT ? "M<%5d> " : "<%6d> ", m_nIp >= SIZE_MAIN_SCRIPT ? m_nIp - SIZE_MAIN_SCRIPT : m_nIp); + m_nIp += 2; + if (m_bNotFlag) + strcat(commandInfo, "NOT "); + if (commands[command].position == -1) + strcat(commandInfo, commands[command].name + sizeof("COMMAND_") - 1); + for (int i = 0; commands[command].input[i] != ARGTYPE_NONE; i++) { + char tmp[16]; + bool var = false; + int value; + switch (commands[command].input[i]) { + case ARGTYPE_INT: + case ARGTYPE_PED_HANDLE: + case ARGTYPE_VEHICLE_HANDLE: + case ARGTYPE_OBJECT_HANDLE: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%d)" : " %d", value); break; + case ARGTYPE_FLOAT: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%.3f)" : " %.3f", *(float*)&value); break; + case ARGTYPE_STRING: sprintf(tmp, " '%s'", (const char*)&CTheScripts::ScriptSpace[m_nIp]); m_nIp += KEY_LENGTH_IN_SCRIPT; break; + case ARGTYPE_LABEL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s(%d))" : " %s(%d)", value >= 0 ? "G" : "L", abs(value)); break; + case ARGTYPE_BOOL: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, var ? " (%s)" : " %s", value ? "TRUE" : "FALSE"); break; + case ARGTYPE_ANDOR: value = CollectParameterForDebug(commandInfo, var); sprintf(tmp, " %d %ss", (value + 1) % 10, value / 10 == 0 ? "AND" : "OR"); break; + default: script_assert(0); + } + strcat(commandInfo, tmp); + if (commands[command].position == i) + strcat(commandInfo, commands[command].name_override); + } + uint32 t = m_nIp; + m_nIp = storedIp; + storedIp = t; + } +} + +void CRunningScript::LogAfterProcessingCommand(int32 command) +{ + if (command < ARRAY_SIZE(commands)) { + if (commands[command].cond || commands[command].output[0] != ARGTYPE_NONE) { + strcat(commandInfo, " ->"); + if (commands[command].cond) + strcat(commandInfo, m_bCondResult ? " TRUE" : " FALSE"); + uint32 t = m_nIp; + m_nIp = storedIp; + storedIp = t; + for (int i = 0; commands[command].output[i] != ARGTYPE_NONE; i++) { + char tmp[16]; + switch (commands[command].output[i]) { + case ARGTYPE_INT: + case ARGTYPE_PED_HANDLE: + case ARGTYPE_VEHICLE_HANDLE: + case ARGTYPE_OBJECT_HANDLE: GetStoredParameterForDebug(commandInfo); sprintf(tmp, " (%d)", ScriptParams[i]); strcat(commandInfo, tmp); break; + case ARGTYPE_FLOAT: GetStoredParameterForDebug(commandInfo); sprintf(tmp, " (%8.3f)", *(float*)&ScriptParams[i]); strcat(commandInfo, tmp); break; + default: script_assert(0 && "Script only returns INTs and FLOATs"); + } + } + m_nIp = storedIp; + } + PrintToLog("%s\n", commandInfo); + if (m_bMissionFlag) { + for (int i = 0; commandInfo[i]; i++) { + if (commandInfo[i] == '_') + commandInfo[i] = ' '; + } + CDebug::DebugAddText(commandInfo); + } + } +} + +#endif + +void FlushLog() +{ +#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT +#if SCRIPT_LOG_FILE_LEVEL == 1 || SCRIPT_LOG_FILE_LEVEL == 2 + if (dbg_log) + fflush(dbg_log); +#endif +#endif +} + + +#ifdef MISSION_SWITCHER +void +CTheScripts::SwitchToMission(int32 mission) +{ + for (CRunningScript* pScript = CTheScripts::pActiveScripts; pScript != nil; pScript = pScript->GetNext()) { + if (!pScript->m_bIsMissionScript || !pScript->m_bDeatharrestEnabled) { + continue; + } + while (pScript->m_nStackPointer > 0) + --pScript->m_nStackPointer; + + pScript->m_nIp = pScript->m_anStack[pScript->m_nStackPointer]; + *(int32*)&CTheScripts::ScriptSpace[CTheScripts::OnAMissionFlag] = 0; + pScript->m_nWakeTime = 0; + pScript->m_bDeatharrestExecuted = true; + + while (!pScript->ProcessOneCommand()); + + CMessages::ClearMessages(); + } + +#ifdef MISSION_REPLAY + missionRetryScriptIndex = mission; + if (missionRetryScriptIndex == 19) + CStats::LastMissionPassedName[0] = '\0'; +#endif + CTimer::Suspend(); + int offset = CTheScripts::MultiScriptArray[mission]; + CFileMgr::ChangeDir("\\"); +#ifdef USE_DEBUG_SCRIPT_LOADER + int handle = open_script(); +#else + int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); +#endif + CFileMgr::Seek(handle, offset, 0); + CFileMgr::Read(handle, (const char*)&CTheScripts::ScriptSpace[SIZE_MAIN_SCRIPT], SIZE_MISSION_SCRIPT); + CFileMgr::CloseFile(handle); + CRunningScript* pMissionScript = CTheScripts::StartNewScript(SIZE_MAIN_SCRIPT); + CTimer::Resume(); + pMissionScript->m_bIsMissionScript = true; + pMissionScript->m_bMissionFlag = true; + CTheScripts::bAlreadyRunningAMissionScript = true; +} +#endif From 865ce46fdb77e769101fd8c693272eab1c800e34 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 2 Aug 2021 14:26:00 +0300 Subject: [PATCH 263/314] Fix waypoint disappearing after each save --- src/core/Radar.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index e0203355..cccf1d2e 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -1022,6 +1022,10 @@ const char* gRadarTexNames[] = { void CRadar::Initialise() { +#ifdef MENU_MAP + TargetMarkerId = -1; +#endif + for (int i = 0; i < NUMRADARBLIPS; i++) { ms_RadarTrace[i].m_BlipIndex = 1; SetRadarMarkerState(i, false); @@ -1107,15 +1111,23 @@ INITSAVEBUF WriteSaveHeader(buf, 'R', 'D', 'R', '\0', *size - SAVE_HEADER_SIZE); #ifdef MENU_MAP + bool bWaypointDeleted = false; if (TargetMarkerId != -1) { ClearBlip(TargetMarkerId); TargetMarkerId = -1; + bWaypointDeleted = true; } #endif for (int i = 0; i < NUMRADARBLIPS; i++) WriteSaveBuf(buf, ms_RadarTrace[i]); + +#ifdef MENU_MAP + if(bWaypointDeleted) + ToggleTargetMarker(TargetMarkerPos.x, TargetMarkerPos.y); +#endif + VALIDATESAVEBUF(*size); } From 09748d094aabc4580bc0376bb46d8f334b43207c Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 2 Aug 2021 20:02:35 +0200 Subject: [PATCH 264/314] CPhysical fixes and cleanup --- src/entities/Physical.cpp | 51 ++++++++++++++++++++------------------- src/entities/Physical.h | 2 -- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp index 591fb501..32a3df3b 100644 --- a/src/entities/Physical.cpp +++ b/src/entities/Physical.cpp @@ -216,9 +216,9 @@ CPhysical::RemoveAndAdd(void) CRect CPhysical::GetBoundRect(void) { - CVUVECTOR center; + CVector center; float radius; - GetBoundCentre(center); + center = GetBoundCentre(); radius = GetBoundRadius(); return CRect(center.x-radius, center.y-radius, center.x+radius, center.y+radius); } @@ -1114,11 +1114,12 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists) skipShift = false; if(B->IsBuilding() || - B->IsObject() && B->bInfiniteMass) + B->IsObject() && B->bInfiniteMass || + A->IsPed() && B->IsObject() && B->GetIsStatic() && !Bobj->bHasBeenDamaged) canshift = true; else - canshift = A->IsPed() && - B->IsObject() && B->GetIsStatic() && !Bobj->bHasBeenDamaged; + canshift = false; + if(B == A || B->m_scanCode == CWorld::GetCurrentScanCode() || !B->bUsesCollision || @@ -1147,7 +1148,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists) Aobj->m_pCollidingEntity = nil; }else if(Aobj->m_pCollidingEntity != B){ CMatrix inv; - CVector size = CModelInfo::GetModelInfo(A->GetModelIndex())->GetColModel()->boundingBox.GetSize(); + CVector size = CModelInfo::GetColModel(A->GetModelIndex())->boundingBox.GetSize(); size = A->GetMatrix() * size; if(size.z < B->GetPosition().z || (Invert(B->GetMatrix(), inv) * size).z < 0.0f){ @@ -1165,7 +1166,7 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists) Bobj->m_pCollidingEntity = nil; }else if(Bobj->m_pCollidingEntity != A){ CMatrix inv; - CVector size = CModelInfo::GetModelInfo(B->GetModelIndex())->GetColModel()->boundingBox.GetSize(); + CVector size = CModelInfo::GetColModel(B->GetModelIndex())->boundingBox.GetSize(); size = B->GetMatrix() * size; if(size.z < A->GetPosition().z || (Invert(A->GetMatrix(), inv) * size).z < 0.0f) @@ -1177,9 +1178,10 @@ CPhysical::ProcessShiftSectorList(CPtrList *lists) else if(A->IsPed() && IsBodyPart(B->GetModelIndex())) skipShift = true; else if(A->IsPed() && ((CPed*)A)->m_pCollidingEntity == B || - B->IsPed() && ((CPed*)B)->m_pCollidingEntity == A || - A->GetModelIndex() == MI_RCBANDIT && B->IsVehicle() || - B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle())) + B->IsPed() && ((CPed*)B)->m_pCollidingEntity == A) + skipShift = true; + else if(A->GetModelIndex() == MI_RCBANDIT && B->IsVehicle() || + B->GetModelIndex() == MI_RCBANDIT && (A->IsPed() || A->IsVehicle())) skipShift = true; if(skipShift) @@ -1441,18 +1443,17 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists) bool isTouching = true; if(B == A || B->m_scanCode == CWorld::GetCurrentScanCode() || - !B->bUsesCollision || - !(isTouching = B->GetIsTouching(center, radius))){ - if(!isTouching){ - if(A->IsObject() && Aobj->m_pCollidingEntity == B) - Aobj->m_pCollidingEntity = nil; - else if(B->IsObject() && Bobj->m_pCollidingEntity == A) - Bobj->m_pCollidingEntity = nil; - else if(A->IsPed() && Aped->m_pCollidingEntity == B) - Aped->m_pCollidingEntity = nil; - else if(B->IsPed() && Bped->m_pCollidingEntity == A) - Bped->m_pCollidingEntity = nil; - } + !B->bUsesCollision) + continue; + if(!B->GetIsTouching(center, radius)){ + if(A->IsObject() && Aobj->m_pCollidingEntity == B) + Aobj->m_pCollidingEntity = nil; + else if(B->IsObject() && Bobj->m_pCollidingEntity == A) + Bobj->m_pCollidingEntity = nil; + else if(A->IsPed() && Aped->m_pCollidingEntity == B) + Aped->m_pCollidingEntity = nil; + else if(B->IsPed() && Bped->m_pCollidingEntity == A) + Bped->m_pCollidingEntity = nil; continue; } @@ -1484,7 +1485,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists) skipCollision = true; else{ CMatrix inv; - CVector size = CModelInfo::GetModelInfo(A->GetModelIndex())->GetColModel()->boundingBox.GetSize(); + CVector size = CModelInfo::GetColModel(A->GetModelIndex())->boundingBox.GetSize(); size = A->GetMatrix() * size; if(size.z < B->GetPosition().z || (Invert(B->GetMatrix(), inv) * size).z < 0.0f){ @@ -1503,7 +1504,7 @@ CPhysical::ProcessCollisionSectorList(CPtrList *lists) skipCollision = true; else{ CMatrix inv; - CVector size = CModelInfo::GetModelInfo(B->GetModelIndex())->GetColModel()->boundingBox.GetSize(); + CVector size = CModelInfo::GetColModel(B->GetModelIndex())->boundingBox.GetSize(); size = B->GetMatrix() * size; if(size.z < A->GetPosition().z || (Invert(A->GetMatrix(), inv) * size).z < 0.0f){ @@ -1849,7 +1850,7 @@ CPhysical::ProcessShift(void) } // x is the number of units (m) we would like to step -#define NUMSTEPS(x) ceil(Sqrt(distSq) * (1.0f/(x))) +#define NUMSTEPS(x) Ceil(Sqrt(distSq) * (1.0f/(x))) void CPhysical::ProcessCollision(void) diff --git a/src/entities/Physical.h b/src/entities/Physical.h index f8921a5c..a16bb211 100644 --- a/src/entities/Physical.h +++ b/src/entities/Physical.h @@ -15,8 +15,6 @@ class CTreadable; class CPhysical : public CEntity { public: - // The not properly indented fields haven't been checked properly yet - int32 m_audioEntityId; float m_phys_unused1; CTreadable *m_treadable[2]; // car and ped From 4f461bd7bee01bdfdbbdef2d999fd44fa7198415 Mon Sep 17 00:00:00 2001 From: aap Date: Wed, 4 Aug 2021 13:54:04 +0200 Subject: [PATCH 265/314] CVehicle fixes and cleanup --- src/vehicles/Vehicle.cpp | 16 ++++++++-------- src/vehicles/Vehicle.h | 5 ++--- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/vehicles/Vehicle.cpp b/src/vehicles/Vehicle.cpp index 4259f9d8..451f3a39 100644 --- a/src/vehicles/Vehicle.cpp +++ b/src/vehicles/Vehicle.cpp @@ -527,7 +527,8 @@ CVehicle::ProcessWheel(CVector &wheelFwd, CVector &wheelRight, CVector &wheelCon #ifdef FIX_BUGS // contactSpeedFwd is independent of framerate but fwd has timestep as a factor // so we probably have to fix this - fwd *= CTimer::GetTimeStepFix(); + // better get rid of it here too + //fwd *= CTimer::GetTimeStepFix(); #endif if(!bBraking){ @@ -860,12 +861,11 @@ CVehicle::ProcessDelayedExplosion(void) if(IsCar() && ((CAutomobile*)this)->m_bombType == CARBOMB_TIMEDACTIVE && (m_nBombTimer & 0xFE00) != (prev & 0xFE00)) DMAudio.PlayOneShot(m_audioEntityId, SOUND_CAR_BOMB_TICK, 0.0f); - if (m_nBombTimer != 0) - return; - - if(FindPlayerVehicle() != this && m_pBlowUpEntity == FindPlayerPed()) - CWorld::Players[CWorld::PlayerInFocus].AwardMoneyForExplosion(this); - BlowUpCar(m_pBlowUpEntity); + if (m_nBombTimer == 0){ + if(FindPlayerVehicle() != this && m_pBlowUpEntity == FindPlayerPed()) + CWorld::Players[CWorld::PlayerInFocus].AwardMoneyForExplosion(this); + BlowUpCar(m_pBlowUpEntity); + } } bool @@ -1207,7 +1207,7 @@ CVehicle::ProcessCarAlarm(void) { uint32 step; - if(!IsAlarmOn()) + if(m_nAlarmState == 0 || m_nAlarmState == -1) return; step = CTimer::GetTimeStepInMilliseconds(); diff --git a/src/vehicles/Vehicle.h b/src/vehicles/Vehicle.h index e7ad5c13..738cfc0f 100644 --- a/src/vehicles/Vehicle.h +++ b/src/vehicles/Vehicle.h @@ -25,8 +25,7 @@ enum eCarLock { CARLOCK_LOCKOUT_PLAYER_ONLY, CARLOCK_LOCKED_PLAYER_INSIDE, CARLOCK_LOCKED_INITIALLY, - CARLOCK_FORCE_SHUT_DOORS, - CARLOCK_SKIP_SHUT_DOORS + CARLOCK_FORCE_SHUT_DOORS }; enum eDoors @@ -187,7 +186,7 @@ public: uint8 m_bRainSamplesCounter; uint8 m_nCarHornTimer; uint8 m_nCarHornPattern; // last horn? - bool m_bSirenOrAlarm; + uint8 m_bSirenOrAlarm; int8 m_comedyControlState; CStoredCollPoly m_aCollPolys[2]; // poly which is under front/rear part of car float m_fSteerInput; From 15f770531c022a37494336e21302535ab08eb9b7 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 8 Aug 2021 15:42:44 +0300 Subject: [PATCH 266/314] fixed tab --- src/vehicles/Automobile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 7d942dcd..0e1a3e42 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -3063,7 +3063,7 @@ CAutomobile::DoDriveByShootings(void) lookingLeft = true; if(TheCamera.Cams[TheCamera.ActiveCam].LookingRight) lookingRight = true; - } + } if(lookingLeft || lookingRight){ if(lookingLeft){ From 63046894b099598c41096651a9816ee3adc032a4 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 8 Aug 2021 16:57:37 +0300 Subject: [PATCH 267/314] small refactoring --- src/control/Script.cpp | 54 ++++++++++++++++++--------------- src/control/Script.h | 27 ++++++++++++++--- src/control/Script5.cpp | 4 +-- src/control/Script6.cpp | 8 ++--- src/control/ScriptDebug.cpp | 4 +-- src/core/Frontend.cpp | 6 ++-- src/save/GenericGameStorage.cpp | 4 ++- src/save/GenericGameStorage.h | 8 +++++ 8 files changed, 73 insertions(+), 42 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 285b4cb7..bcfc6078 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -17,6 +17,9 @@ #include "FileMgr.h" #include "Frontend.h" #include "General.h" +#ifdef MISSION_REPLAY +#include "GenericGameStorage.h" +#endif #include "HandlingMgr.h" #include "Heli.h" #include "Hud.h" @@ -495,11 +498,12 @@ void CRunningScript::Init() } #ifdef USE_DEBUG_SCRIPT_LOADER -int scriptToLoad = 0; +int CTheScripts::ScriptToLoad = 0; -int open_script() +int CTheScripts::OpenScript() { - switch (scriptToLoad) { + CFileMgr::ChangeDir("\\"); + switch (ScriptToLoad) { case 0: return CFileMgr::OpenFile("data\\main.scm", "rb"); case 1: return CFileMgr::OpenFile("data\\main_freeroam.scm", "rb"); case 2: return CFileMgr::OpenFile("data\\main_d.scm", "rb"); @@ -523,11 +527,11 @@ void CTheScripts::Init() #ifdef USE_DEBUG_SCRIPT_LOADER // glfwGetKey doesn't work because of CGame::Initialise is blocking CPad::UpdatePads(); - if(CPad::GetPad(0)->GetChar('G')) scriptToLoad = 0; - if(CPad::GetPad(0)->GetChar('R')) scriptToLoad = 1; - if(CPad::GetPad(0)->GetChar('D')) scriptToLoad = 2; + if(CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0; + if(CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1; + if(CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2; - int mainf = open_script(); + int mainf = OpenScript(); #else CFileMgr::SetDir("data"); int mainf = CFileMgr::OpenFile("main.scm", "rb"); @@ -663,25 +667,25 @@ void CTheScripts::Process() #ifdef MISSION_REPLAY static uint32 TimeToWaitTill; switch (AllowMissionReplay) { - case 2: - AllowMissionReplay = 3; + case MISSION_RETRY_STAGE_START_PROCESSING: + AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_DELAY; TimeToWaitTill = CTimer::GetTimeInMilliseconds() + (AddExtraDeathDelay() > 1000 ? 4000 : 2500); break; - case 3: + case MISSION_RETRY_STAGE_WAIT_FOR_DELAY: if (TimeToWaitTill < CTimer::GetTimeInMilliseconds()) - AllowMissionReplay = 4; + AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_MENU; break; - case 4: - AllowMissionReplay = 5; + case MISSION_RETRY_STAGE_WAIT_FOR_MENU: + AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_USER; RetryMission(0, 0); break; - case 6: - AllowMissionReplay = 7; + case MISSION_RETRY_STAGE_START_RESTARTING: + AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART; TimeToWaitTill = CTimer::GetTimeInMilliseconds() + 500; break; - case 7: + case MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART: if (TimeToWaitTill < CTimer::GetTimeInMilliseconds()) { - AllowMissionReplay = 0; + AllowMissionReplay = MISSION_RETRY_STAGE_NORMAL; return; } break; @@ -1298,11 +1302,11 @@ int8 CRunningScript::ProcessCommands0To99(int32 command) CPlayerInfo* pPlayerInfo = &CWorld::Players[CWorld::PlayerInFocus]; #if 0 // makeing autosave is pointless and is a bit buggy if (pPlayerInfo->m_pPed->GetPedState() != PED_DEAD && pPlayerInfo->m_WBState == WBSTATE_PLAYING && !m_bDeatharrestExecuted) - SaveGameForPause(1); + SaveGameForPause(SAVE_TYPE_QUICKSAVE); #endif oldTargetX = oldTargetY = 0.0f; - if (AllowMissionReplay == 1) - AllowMissionReplay = 2; + if (AllowMissionReplay == MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE) + AllowMissionReplay = MISSION_RETRY_STAGE_START_PROCESSING; // I am fairly sure they forgot to set return value here } #endif @@ -2310,7 +2314,7 @@ int8 CRunningScript::ProcessCommands100To199(int32 command) wchar* key = TheText.Get((char*)&CTheScripts::ScriptSpace[m_nIp]); #ifdef MISSION_REPLAY if (strcmp((char*)&CTheScripts::ScriptSpace[m_nIp], "M_FAIL") == 0 && CanAllowMissionReplay()) - AllowMissionReplay = 1; + AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE; #endif m_nIp += KEY_LENGTH_IN_SCRIPT; CollectParameters(&m_nIp, 2); @@ -2973,7 +2977,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) bool CRunningScript::CanAllowMissionReplay() { - if (AllowMissionReplay) + if (AllowMissionReplay != MISSION_RETRY_STAGE_NORMAL) return false; if (CStats::LastMissionPassedName[0] == '\0') return false; @@ -2995,14 +2999,14 @@ uint32 AddExtraDeathDelay() void RetryMission(int type, int unk) { - if (type == 0) { + if (type == MISSION_RETRY_TYPE_SUGGEST_TO_PLAYER) { doingMissionRetry = true; FrontEndMenuManager.m_nCurrScreen = MENUPAGE_MISSION_RETRY; FrontEndMenuManager.RequestFrontEndStartUp(); } - else if (type == 2) { + else if (type == MISSION_RETRY_TYPE_BEGIN_RESTARTING) { doingMissionRetry = false; - AllowMissionReplay = 6; + AllowMissionReplay = MISSION_RETRY_STAGE_START_RESTARTING; CTheScripts::MissionCleanUp.Process(); } } diff --git a/src/control/Script.h b/src/control/Script.h index 470de444..7b0f9a2e 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -584,6 +584,11 @@ public: static void SwitchToMission(int32 mission); #endif +#ifdef USE_DEBUG_SCRIPT_LOADER + static int ScriptToLoad; + static int OpenScript(); +#endif + #ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT static void LogAfterScriptInitializing(); static void LogBeforeScriptProcessing(); @@ -601,9 +606,21 @@ extern bool doingMissionRetry; uint32 AddExtraDeathDelay(); void RetryMission(int, int); -#endif -#ifdef USE_DEBUG_SCRIPT_LOADER -int open_script(); -extern int scriptToLoad; -#endif \ No newline at end of file +enum { + MISSION_RETRY_TYPE_SUGGEST_TO_PLAYER = 0, + MISSION_RETRY_TYPE_1, + MISSION_RETRY_TYPE_BEGIN_RESTARTING +}; + +enum { + MISSION_RETRY_STAGE_NORMAL = 0, + MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE, + MISSION_RETRY_STAGE_START_PROCESSING, + MISSION_RETRY_STAGE_WAIT_FOR_DELAY, + MISSION_RETRY_STAGE_WAIT_FOR_MENU, + MISSION_RETRY_STAGE_WAIT_FOR_USER, + MISSION_RETRY_STAGE_START_RESTARTING, + MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART, +}; +#endif diff --git a/src/control/Script5.cpp b/src/control/Script5.cpp index 953a1f50..76aa2442 100644 --- a/src/control/Script5.cpp +++ b/src/control/Script5.cpp @@ -1239,10 +1239,10 @@ void CRunningScript::DoDeatharrestCheck() if (!pPlayer->IsRestartingAfterDeath() && !pPlayer->IsRestartingAfterArrest() && !CTheScripts::UpsideDownCars.AreAnyCarsUpsideDown()) return; #ifdef MISSION_REPLAY - if (AllowMissionReplay != 0) + if (AllowMissionReplay != MISSION_RETRY_STAGE_NORMAL) return; if (CanAllowMissionReplay()) - AllowMissionReplay = 1; + AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_SCRIPT_TO_TERMINATE; #endif script_assert(m_nStackPointer > 0); while (m_nStackPointer > 1) diff --git a/src/control/Script6.cpp b/src/control/Script6.cpp index c9b2b070..0a2248f8 100644 --- a/src/control/Script6.cpp +++ b/src/control/Script6.cpp @@ -82,8 +82,8 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command) { CollectParameters(&m_nIp, 1); #ifdef MISSION_REPLAY - AllowMissionReplay = 0; - SaveGameForPause(3); + AllowMissionReplay = MISSION_RETRY_STAGE_NORMAL; + SaveGameForPause(SAVE_TYPE_QUICKSAVE_FOR_MISSION_REPLAY); #endif CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]]; CPad::GetPad(ScriptParams[0])->SetDisablePlayerControls(PLAYERCONTROL_CUTSCENE); @@ -304,10 +304,10 @@ int8 CRunningScript::ProcessCommands1000To1099(int32 command) #endif CTimer::Suspend(); int offset = CTheScripts::MultiScriptArray[ScriptParams[0]]; - CFileMgr::ChangeDir("\\"); #ifdef USE_DEBUG_SCRIPT_LOADER - int handle = open_script(); + int handle = CTheScripts::OpenScript(); #else + CFileMgr::ChangeDir("\\"); int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); #endif CFileMgr::Seek(handle, offset, 0); diff --git a/src/control/ScriptDebug.cpp b/src/control/ScriptDebug.cpp index e9014088..63508217 100644 --- a/src/control/ScriptDebug.cpp +++ b/src/control/ScriptDebug.cpp @@ -1423,10 +1423,10 @@ CTheScripts::SwitchToMission(int32 mission) #endif CTimer::Suspend(); int offset = CTheScripts::MultiScriptArray[mission]; - CFileMgr::ChangeDir("\\"); #ifdef USE_DEBUG_SCRIPT_LOADER - int handle = open_script(); + int handle = OpenScript(); #else + CFileMgr::ChangeDir("\\"); int handle = CFileMgr::OpenFile("data\\main.scm", "rb"); #endif CFileMgr::Seek(handle, offset, 0); diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index ecb893b4..e7a15f66 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -4182,7 +4182,7 @@ CMenuManager::Process(void) #endif if (CheckSlotDataValid(m_nCurrSaveSlot)) { #ifdef USE_DEBUG_SCRIPT_LOADER - scriptToLoad = 0; + CTheScripts::ScriptToLoad = 0; #endif #ifdef PC_PLAYER_CONTROLS TheCamera.m_bUseMouse3rdPerson = m_ControlMethod == CONTROL_STANDARD; @@ -4312,12 +4312,12 @@ CMenuManager::ProcessButtonPresses(void) #ifdef USE_DEBUG_SCRIPT_LOADER if (m_nCurrScreen == MENUPAGE_START_MENU || m_nCurrScreen == MENUPAGE_NEW_GAME || m_nCurrScreen == MENUPAGE_NEW_GAME_RELOAD) { if (CPad::GetPad(0)->GetChar('R')) { - scriptToLoad = 1; + CTheScripts::ScriptToLoad = 1; DoSettingsBeforeStartingAGame(); return; } if (CPad::GetPad(0)->GetChar('D')) { - scriptToLoad = 2; + CTheScripts::ScriptToLoad = 2; DoSettingsBeforeStartingAGame(); return; } diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index f51f8233..798aeb7e 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -1153,7 +1153,9 @@ void DisplaySaveResult(int unk, char* name) bool SaveGameForPause(int type) { - if (AllowMissionReplay != 0 || type != 3 && WaitForSave > CTimer::GetTimeInMilliseconds()) + if (AllowMissionReplay != MISSION_RETRY_STAGE_NORMAL) + return false; + if (type != SAVE_TYPE_QUICKSAVE_FOR_MISSION_REPLAY && WaitForSave > CTimer::GetTimeInMilliseconds()) return false; WaitForSave = 0; if (gGameState != GS_PLAYING_GAME || CTheScripts::IsPlayerOnAMission() || CStats::LastMissionPassedName[0] == '\0') { diff --git a/src/save/GenericGameStorage.h b/src/save/GenericGameStorage.h index b291ddf9..6a5b04fa 100644 --- a/src/save/GenericGameStorage.h +++ b/src/save/GenericGameStorage.h @@ -52,4 +52,12 @@ const char TopLineEmptyFile[] = "THIS FILE IS NOT VALID YET"; extern int8 IsQuickSave; // originally int bool SaveGameForPause(int); + +enum { + SAVE_TYPE_NORMAL, + SAVE_TYPE_QUICKSAVE, + SAVE_TYPE_2, + SAVE_TYPE_QUICKSAVE_FOR_MISSION_REPLAY +}; + #endif From 947f67dfb770669bae81920a0a1525b0666bfe9c Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 8 Aug 2021 17:17:20 +0300 Subject: [PATCH 268/314] small fix --- src/control/Script.cpp | 2 +- src/control/Script.h | 2 +- src/core/Frontend.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index bcfc6078..4501c27f 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -677,7 +677,7 @@ void CTheScripts::Process() break; case MISSION_RETRY_STAGE_WAIT_FOR_MENU: AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_USER; - RetryMission(0, 0); + RetryMission(MISSION_RETRY_TYPE_SUGGEST_TO_PLAYER); break; case MISSION_RETRY_STAGE_START_RESTARTING: AllowMissionReplay = MISSION_RETRY_STAGE_WAIT_FOR_TIMER_AFTER_RESTART; diff --git a/src/control/Script.h b/src/control/Script.h index 7b0f9a2e..eedf17d4 100644 --- a/src/control/Script.h +++ b/src/control/Script.h @@ -605,7 +605,7 @@ extern int missionRetryScriptIndex; extern bool doingMissionRetry; uint32 AddExtraDeathDelay(); -void RetryMission(int, int); +void RetryMission(int, int unk = 0); enum { MISSION_RETRY_TYPE_SUGGEST_TO_PLAYER = 0, diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index e7a15f66..8358298f 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -4175,7 +4175,7 @@ CMenuManager::Process(void) if (m_nCurrScreen == MENUPAGE_LOADING_IN_PROGRESS) { #ifdef MISSION_REPLAY if (doingMissionRetry) { - RetryMission(2, 0); + RetryMission(MISSION_RETRY_TYPE_BEGIN_RESTARTING); m_nCurrSaveSlot = SLOT_COUNT; doingMissionRetry = false; } @@ -5186,7 +5186,7 @@ CMenuManager::ProcessButtonPresses(void) case MENUACTION_UNK114: doingMissionRetry = false; RequestFrontEndShutDown(); - RetryMission(2, 0); + RetryMission(MISSION_RETRY_TYPE_BEGIN_RESTARTING); return; #endif #ifdef CUSTOM_FRONTEND_OPTIONS From bd9658443381d91dd0bb1ded544617f2f0e3f1e0 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 8 Aug 2021 17:34:03 +0300 Subject: [PATCH 269/314] small fix --- src/control/Script.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 4501c27f..77d571d0 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -502,6 +502,11 @@ int CTheScripts::ScriptToLoad = 0; int CTheScripts::OpenScript() { + // glfwGetKey doesn't work because of CGame::Initialise is blocking + CPad::UpdatePads(); + if (CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0; + if (CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1; + if (CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2; CFileMgr::ChangeDir("\\"); switch (ScriptToLoad) { case 0: return CFileMgr::OpenFile("data\\main.scm", "rb"); @@ -525,12 +530,6 @@ void CTheScripts::Init() UpsideDownCars.Init(); StuckCars.Init(); #ifdef USE_DEBUG_SCRIPT_LOADER - // glfwGetKey doesn't work because of CGame::Initialise is blocking - CPad::UpdatePads(); - if(CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0; - if(CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1; - if(CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2; - int mainf = OpenScript(); #else CFileMgr::SetDir("data"); From 35dd465c19b2fa0f00bd49ca921d19ec8f2dcf19 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 8 Aug 2021 17:41:35 +0300 Subject: [PATCH 270/314] Revert "small fix" This reverts commit bd9658443381d91dd0bb1ded544617f2f0e3f1e0. --- src/control/Script.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 77d571d0..4501c27f 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -502,11 +502,6 @@ int CTheScripts::ScriptToLoad = 0; int CTheScripts::OpenScript() { - // glfwGetKey doesn't work because of CGame::Initialise is blocking - CPad::UpdatePads(); - if (CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0; - if (CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1; - if (CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2; CFileMgr::ChangeDir("\\"); switch (ScriptToLoad) { case 0: return CFileMgr::OpenFile("data\\main.scm", "rb"); @@ -530,6 +525,12 @@ void CTheScripts::Init() UpsideDownCars.Init(); StuckCars.Init(); #ifdef USE_DEBUG_SCRIPT_LOADER + // glfwGetKey doesn't work because of CGame::Initialise is blocking + CPad::UpdatePads(); + if(CPad::GetPad(0)->GetChar('G')) ScriptToLoad = 0; + if(CPad::GetPad(0)->GetChar('R')) ScriptToLoad = 1; + if(CPad::GetPad(0)->GetChar('D')) ScriptToLoad = 2; + int mainf = OpenScript(); #else CFileMgr::SetDir("data"); From 858f913facb8ffbb3b4d50a9d65074a07973c711 Mon Sep 17 00:00:00 2001 From: withmorten Date: Mon, 9 Aug 2021 16:34:05 +0200 Subject: [PATCH 271/314] small fix --- src/save/GenericGameStorage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/save/GenericGameStorage.cpp b/src/save/GenericGameStorage.cpp index 798aeb7e..e4ee4542 100644 --- a/src/save/GenericGameStorage.cpp +++ b/src/save/GenericGameStorage.cpp @@ -1030,6 +1030,7 @@ FixSave(int32 slot, uint8 save_type) totalSize = 0; CFileMgr::Read(file_in, (const char *)&size, sizeof(size)); + size = align4bytes(size); buf = work_buff; CFileMgr::Read(file_in, (const char *)work_buff, size); // simple vars + scripts From 8ea411e4c5c7191b0e67f0c569a32733b99a81bc Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 2 Aug 2021 14:45:37 +0300 Subject: [PATCH 272/314] Add sprite to the waypoint marker --- src/core/Radar.cpp | 59 +++++++++++++++++++++++++++++++++++++++++---- src/core/Radar.h | 4 +++ src/fakerw/fake.cpp | 4 +-- src/fakerw/rwcore.h | 8 ++++++ 4 files changed, 68 insertions(+), 7 deletions(-) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index cccf1d2e..011c8464 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -45,6 +45,9 @@ CSprite2d CRadar::SaveSprite; CSprite2d CRadar::SpraySprite; CSprite2d CRadar::TonySprite; CSprite2d CRadar::WeaponSprite; +#ifdef MENU_MAP +CSprite2d CRadar::WaypointSprite; +#endif CSprite2d *CRadar::RadarSprites[RADAR_SPRITE_COUNT] = { nil, @@ -67,7 +70,10 @@ CSprite2d *CRadar::RadarSprites[RADAR_SPRITE_COUNT] = { &SaveSprite, &SpraySprite, &TonySprite, - &WeaponSprite + &WeaponSprite, +#ifdef MENU_MAP + &WaypointSprite +#endif }; // Why this doesn't coincide with world coordinates i don't know @@ -917,6 +923,9 @@ void CRadar::DrawRadarSection(int32 x, int32 y) void CRadar::DrawRadarSprite(uint16 sprite, float x, float y, uint8 alpha) { +#ifdef MENU_MAP + if(sprite == RADAR_SPRITE_WAYPOINT) alpha = 255; +#endif RadarSprites[sprite]->Draw(CRect(x - SCREEN_SCALE_X(8.0f), y - SCREEN_SCALE_Y(8.0f), x + SCREEN_SCALE_X(8.0f), y + SCREEN_SCALE_Y(8.0f)), CRGBA(255, 255, 255, alpha)); } @@ -1094,6 +1103,43 @@ CRadar::LoadTextures() SpraySprite.SetTexture("radar_spray"); TonySprite.SetTexture("radar_tony"); WeaponSprite.SetTexture("radar_weapon"); +#ifdef MENU_MAP + WaypointSprite.SetTexture("radar_waypoint"); + if(!WaypointSprite.m_pTexture) { + // create the texture if it's missing in TXD +#define WAYPOINT_R (255) +#define WAYPOINT_G (72) +#define WAYPOINT_B (77) + + RwRaster *raster = RwRasterCreate(16, 16, 0, rwRASTERTYPETEXTURE | rwRASTERFORMAT8888); + + RwUInt32 *pixels = (RwUInt32 *)RwRasterLock(raster, 0, rwRASTERLOCKWRITE); + for(int x = 0; x < 16; x++) + for(int y = 0; y < 16; y++) + { + int x2 = x < 8 ? x : 7 - (x & 7); + int y2 = y < 8 ? y : 7 - (y & 7); + if ((y2 >= 4 && x2 >= 4) // square in the center is transparent + || (x2 < 2 && y2 == 0) // two pixels on each side of first/last line are transparent + || (x2 < 1 && y2 == 1)) // one pixel on each side of second to first/last line is transparent + pixels[x + y * 16] = 0; + else if((x2 == 2 && y2 >= 2)|| (y2 == 2 && x2 >= 2) )// colored square inside +#ifdef RW_GL3 + pixels[x + y * 16] = WAYPOINT_R | (WAYPOINT_G << 8) | (WAYPOINT_B << 16) | (255 << 24); +#else + pixels[x + y * 16] = WAYPOINT_B | (WAYPOINT_G << 8) | (WAYPOINT_R << 16) | (255 << 24); +#endif + else + pixels[x + y * 16] = 0xFF000000; // black + } + RwRasterUnlock(raster); + WaypointSprite.m_pTexture = RwTextureCreate(raster); + RwTextureSetFilterMode(WaypointSprite.m_pTexture, rwFILTERLINEAR); +#undef WAYPOINT_R +#undef WAYPOINT_G +#undef WAYPOINT_B + } +#endif CTxdStore::PopCurrentTxd(); } @@ -1293,6 +1339,9 @@ void CRadar::Shutdown() SpraySprite.Delete(); TonySprite.Delete(); WeaponSprite.Delete(); +#ifdef MENU_MAP + WaypointSprite.Delete(); +#endif RemoveRadarSections(); } @@ -1488,12 +1537,12 @@ CRadar::ToggleTargetMarker(float x, float y) { if (TargetMarkerId == -1) { int nextBlip; - for (nextBlip = 0; nextBlip < NUMRADARBLIPS; nextBlip++) { + for (nextBlip = NUMRADARBLIPS-1; nextBlip >= 0; nextBlip--) { if (!ms_RadarTrace[nextBlip].m_bInUse) break; } #ifdef FIX_BUGS - if (nextBlip == NUMRADARBLIPS) + if (nextBlip == 0) return; #endif ms_RadarTrace[nextBlip].m_eBlipType = BLIP_COORD; @@ -1501,14 +1550,14 @@ CRadar::ToggleTargetMarker(float x, float y) ms_RadarTrace[nextBlip].m_bDim = 0; ms_RadarTrace[nextBlip].m_bInUse = 1; ms_RadarTrace[nextBlip].m_Radius = 1.0f; - CVector pos(x, y, CWorld::FindGroundZForCoord(x,y)); + CVector pos(x, y, 0.0f/*CWorld::FindGroundZForCoord(x,y)*/); TargetMarkerPos = pos; ms_RadarTrace[nextBlip].m_vec2DPos = pos; ms_RadarTrace[nextBlip].m_vecPos = pos; ms_RadarTrace[nextBlip].m_nEntityHandle = 0; ms_RadarTrace[nextBlip].m_wScale = 5; ms_RadarTrace[nextBlip].m_eBlipDisplay = BLIP_DISPLAY_BLIP_ONLY; - ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_NONE; + ms_RadarTrace[nextBlip].m_eRadarSprite = RADAR_SPRITE_WAYPOINT; TargetMarkerId = CRadar::GetNewUniqueBlipIndex(nextBlip); } else { ClearBlip(TargetMarkerId); diff --git a/src/core/Radar.h b/src/core/Radar.h index 5b38d350..ae87d0fa 100644 --- a/src/core/Radar.h +++ b/src/core/Radar.h @@ -47,6 +47,9 @@ enum eRadarSprite RADAR_SPRITE_SPRAY, RADAR_SPRITE_TONY, RADAR_SPRITE_WEAPON, +#ifdef MENU_MAP + RADAR_SPRITE_WAYPOINT, +#endif RADAR_SPRITE_COUNT }; @@ -144,6 +147,7 @@ public: static float cachedCos; static float cachedSin; #ifdef MENU_MAP + static CSprite2d WaypointSprite; static int TargetMarkerId; static CVector TargetMarkerPos; diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp index 1d4c881f..6dfebb39 100644 --- a/src/fakerw/fake.cpp +++ b/src/fakerw/fake.cpp @@ -235,8 +235,8 @@ RwRaster *RwRasterGetCurrentContext(void) { return Raster::getCurrentContext( RwBool RwRasterClear(RwInt32 pixelValue); RwBool RwRasterClearRect(RwRect * rpRect, RwInt32 pixelValue); RwRaster *RwRasterShowRaster(RwRaster * raster, void *dev, RwUInt32 flags); -RwUInt8 *RwRasterLock(RwRaster * raster, RwUInt8 level, RwInt32 lockMode); -RwRaster *RwRasterUnlock(RwRaster * raster); +RwUInt8 *RwRasterLock(RwRaster * raster, RwUInt8 level, RwInt32 lockMode) { return raster->lock(level, lockMode); } +RwRaster *RwRasterUnlock(RwRaster * raster) { raster->unlock(0); return raster; } RwUInt8 *RwRasterLockPalette(RwRaster * raster, RwInt32 lockMode); RwRaster *RwRasterUnlockPalette(RwRaster * raster); RwInt32 RwRasterRegisterPlugin(RwInt32 size, RwUInt32 pluginID, RwPluginObjectConstructor constructCB, RwPluginObjectDestructor destructCB, RwPluginObjectCopy copyCB); diff --git a/src/fakerw/rwcore.h b/src/fakerw/rwcore.h index e5d21865..ab0a719f 100644 --- a/src/fakerw/rwcore.h +++ b/src/fakerw/rwcore.h @@ -104,6 +104,14 @@ enum RwRasterFormat rwRASTERFORMATMASK = 0xff00 }; +enum RwRasterLockMode +{ + rwRASTERLOCKWRITE = rw::Raster::LOCKWRITE, + rwRASTERLOCKREAD = rw::Raster::LOCKREAD, + rwRASTERLOCKNOFETCH = rw::Raster::LOCKNOFETCH, + rwRASTERLOCKRAW = rw::Raster::LOCKRAW, +}; + enum RwRasterFlipMode { rwRASTERFLIPDONTWAIT = 0, From 1f98f01dcb006783755bd58fa458bb515626b2dd Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 9 Aug 2021 18:14:19 +0300 Subject: [PATCH 273/314] Fix a bunch of CModelInfo::GetModelInfo->GetColModel calls --- src/collision/Collision.cpp | 2 +- src/control/CarCtrl.cpp | 2 +- src/control/Garages.cpp | 2 +- src/control/RoadBlocks.cpp | 6 +++--- src/control/Script.cpp | 2 +- src/core/Radar.cpp | 4 ++-- src/core/World.cpp | 8 ++++---- src/peds/Ped.cpp | 12 ++++++------ src/peds/Population.cpp | 2 +- src/renderer/Renderer.cpp | 4 ++-- src/vehicles/CarGen.cpp | 4 ++-- 11 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/collision/Collision.cpp b/src/collision/Collision.cpp index 9d656581..832d773e 100644 --- a/src/collision/Collision.cpp +++ b/src/collision/Collision.cpp @@ -130,7 +130,7 @@ GetCollisionInSectorList(CPtrList &list) for(node = list.first; node; node = node->next){ e = (CEntity*)node->item; - level = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel()->level; + level = CModelInfo::GetColModel(e->GetModelIndex())->level; if(level != LEVEL_GENERIC) return (eLevelName)level; } diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index 37312b89..ca83603f 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -354,7 +354,7 @@ CCarCtrl::GenerateOneRandomCar() pVehicle->m_bSirenOrAlarm = true; pVehicle->AutoPilot.m_nNextPathNodeInfo = connectionId; pVehicle->AutoPilot.m_nNextLane = pVehicle->AutoPilot.m_nCurrentLane = CGeneral::GetRandomNumber() % lanesOnCurrentRoad; - CColBox* boundingBox = &CModelInfo::GetModelInfo(pVehicle->GetModelIndex())->GetColModel()->boundingBox; + CColBox* boundingBox = &CModelInfo::GetColModel(pVehicle->GetModelIndex())->boundingBox; float carLength = 1.0f + (boundingBox->max.y - boundingBox->min.y) / 2; float distanceBetweenNodes = (pCurNode->GetPosition() - pNextNode->GetPosition()).Magnitude2D(); /* If car is so long that it doesn't fit between two car nodes, place it directly in the middle. */ diff --git a/src/control/Garages.cpp b/src/control/Garages.cpp index 245e961d..bb919eae 100644 --- a/src/control/Garages.cpp +++ b/src/control/Garages.cpp @@ -2023,7 +2023,7 @@ void CGarages::GivePlayerDetonator() float CGarages::FindDoorHeightForMI(int32 mi) { - return CModelInfo::GetModelInfo(mi)->GetColModel()->boundingBox.max.z - CModelInfo::GetModelInfo(mi)->GetColModel()->boundingBox.min.z - 0.1f; + return CModelInfo::GetColModel(mi)->boundingBox.max.z - CModelInfo::GetColModel(mi)->boundingBox.min.z - 0.1f; } void CGarage::TidyUpGarage() diff --git a/src/control/RoadBlocks.cpp b/src/control/RoadBlocks.cpp index c22bebaa..4c3307c5 100644 --- a/src/control/RoadBlocks.cpp +++ b/src/control/RoadBlocks.cpp @@ -51,7 +51,7 @@ CRoadBlocks::GenerateRoadBlockCopsForCar(CVehicle* pVehicle, int32 roadBlockType CEntity* pEntityToAttack = (CEntity*)FindPlayerVehicle(); if (!pEntityToAttack) pEntityToAttack = (CEntity*)FindPlayerPed(); - CColModel* pPoliceColModel = CModelInfo::GetModelInfo(MI_POLICE)->GetColModel(); + CColModel* pPoliceColModel = CModelInfo::GetColModel(MI_POLICE); float fRadius = pVehicle->GetBoundRadius() / pPoliceColModel->boundingSphere.radius; for (int32 i = 0; i < 2; i++) { const int32 roadBlockIndex = i + 2 * roadBlockType; @@ -130,7 +130,7 @@ CRoadBlocks::GenerateRoadBlocks(void) vehicleId = MI_ENFORCER; if (!CStreaming::HasModelLoaded(vehicleId)) vehicleId = MI_POLICE; - CColModel *pVehicleColModel = CModelInfo::GetModelInfo(vehicleId)->GetColModel(); + CColModel *pVehicleColModel = CModelInfo::GetColModel(vehicleId); float fModelRadius = 2.0f * pVehicleColModel->boundingSphere.radius + 0.25f; int16 radius = (int16)(fMapObjectRadius / fModelRadius); if (radius >= 6) @@ -152,7 +152,7 @@ CRoadBlocks::GenerateRoadBlocks(void) else offsetMatrix.GetPosition() = CVector(i * fModelRadius - fOffset, 0.0f, 0.6f); CMatrix vehicleMatrix = mapObject->GetMatrix() * offsetMatrix; - float fModelRadius = CModelInfo::GetModelInfo(vehicleId)->GetColModel()->boundingSphere.radius - 0.25f; + float fModelRadius = CModelInfo::GetColModel(vehicleId)->boundingSphere.radius - 0.25f; int16 colliding = 0; CWorld::FindObjectsKindaColliding(vehicleMatrix.GetPosition(), fModelRadius, 0, &colliding, 2, nil, false, true, true, false, false); if (!colliding) { diff --git a/src/control/Script.cpp b/src/control/Script.cpp index 4501c27f..f1c8b348 100644 --- a/src/control/Script.cpp +++ b/src/control/Script.cpp @@ -2814,7 +2814,7 @@ int8 CRunningScript::ProcessCommands200To299(int32 command) CTheScripts::ReadTextLabelFromScript(&m_nIp, label); int zoneToCheck = CTheZones::FindZoneByLabelAndReturnIndex(label); if (zoneToCheck != -1) - m_nIp += KEY_LENGTH_IN_SCRIPT; /* why only if zone != 1? */ + m_nIp += KEY_LENGTH_IN_SCRIPT; /* why only if zone != -1? */ CVector pos = pPlayer->GetPos(); CZone* pZone = CTheZones::GetZone(zoneToCheck); UpdateCompareFlag(CTheZones::PointLiesWithinZone(&pos, pZone)); diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index 011c8464..d74ce007 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -447,7 +447,7 @@ void CRadar::Draw3dMarkers() CEntity *entity = CPools::GetVehiclePool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { CVector pos = entity->GetPosition(); - pos.z += 1.2f * CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 2.5f; + pos.z += 1.2f * CModelInfo::GetColModel(entity->GetModelIndex())->boundingBox.max.z + 2.5f; C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 2.5f, 0, 128, 255, 255, 1024, 0.2f, 5); } break; @@ -471,7 +471,7 @@ void CRadar::Draw3dMarkers() CEntity *entity = CPools::GetObjectPool()->GetAt(ms_RadarTrace[i].m_nEntityHandle); if (ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_BOTH || ms_RadarTrace[i].m_eBlipDisplay == BLIP_DISPLAY_MARKER_ONLY) { CVector pos = entity->GetPosition(); - pos.z += CModelInfo::GetModelInfo(entity->GetModelIndex())->GetColModel()->boundingBox.max.z + 1.0f + 1.0f; + pos.z += CModelInfo::GetColModel(entity->GetModelIndex())->boundingBox.max.z + 1.0f + 1.0f; C3dMarkers::PlaceMarker(i | (ms_RadarTrace[i].m_BlipIndex << 16), MARKERTYPE_ARROW, pos, 1.0f, 0, 128, 255, 255, 1024, 0.2f, 5); } break; diff --git a/src/core/World.cpp b/src/core/World.cpp index 6e8314f4..1c34a633 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -358,7 +358,7 @@ CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColP } else colmodel = nil; } else if(e->bUsesCollision) - colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(); + colmodel = CModelInfo::GetColModel(e->GetModelIndex()); if(colmodel && CCollision::ProcessLineOfSight(line, e->GetMatrix(), *colmodel, point, mindist, ignoreSeeThrough)) @@ -444,7 +444,7 @@ CWorld::ProcessVerticalLineSectorList(CPtrList &list, const CColLine &line, CCol if(e->m_scanCode != GetCurrentScanCode() && e->bUsesCollision) { e->m_scanCode = GetCurrentScanCode(); - colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(); + colmodel = CModelInfo::GetColModel(e->GetModelIndex()); if(CCollision::ProcessVerticalLine(line, e->GetMatrix(), *colmodel, point, mindist, ignoreSeeThrough, poly)) entity = e; @@ -645,7 +645,7 @@ CWorld::GetIsLineOfSightSectorListClear(CPtrList &list, const CColLine &line, bo if(e != pIgnoreEntity && !(ignoreSomeObjects && CameraToIgnoreThisObject(e))) { - colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(); + colmodel = CModelInfo::GetColModel(e->GetModelIndex()); if(CCollision::TestLineOfSight(line, e->GetMatrix(), *colmodel, ignoreSeeThrough)) return false; @@ -955,7 +955,7 @@ CWorld::TestSphereAgainstSectorList(CPtrList &list, CVector spherePos, float rad float distance = diff.Magnitude(); if(e->GetBoundRadius() + radius > distance) { - CColModel *eCol = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(); + CColModel *eCol = CModelInfo::GetColModel(e->GetModelIndex()); int collidedSpheres = CCollision::ProcessColModels(sphereMat, OurColModel, e->GetMatrix(), *eCol, gaTempSphereColPoints, nil, nil); diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 3ccae5d0..96c1d094 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2308,7 +2308,7 @@ CPed::ProcessControl(void) } else { DMAudio.PlayOneShot(collidingVeh->m_audioEntityId, SOUND_CAR_PED_COLLISION, m_fDamageImpulse); if (IsPlayer()) { - CColModel *collidingCol = CModelInfo::GetModelInfo(collidingVeh->GetModelIndex())->GetColModel(); + CColModel *collidingCol = CModelInfo::GetColModel(collidingVeh->GetModelIndex()); CVector colMinVec = collidingCol->boundingBox.min; CVector colMaxVec = collidingCol->boundingBox.max; @@ -3061,8 +3061,8 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints) CColPoint intersectionPoint; CColLine ourLine; - CColModel *ourCol = CModelInfo::GetModelInfo(GetModelIndex())->GetColModel(); - CColModel *hisCol = CModelInfo::GetModelInfo(collidingEnt->GetModelIndex())->GetColModel(); + CColModel *ourCol = CModelInfo::GetColModel(GetModelIndex()); + CColModel *hisCol = CModelInfo::GetColModel(collidingEnt->GetModelIndex()); if (!bUsesCollision) return 0; @@ -3556,7 +3556,7 @@ void CPed::SetDirectionToWalkAroundObject(CEntity *obj) { float distLimitForTimer = 8.0f; - CColModel *objCol = CModelInfo::GetModelInfo(obj->GetModelIndex())->GetColModel(); + CColModel *objCol = CModelInfo::GetColModel(obj->GetModelIndex()); CVector objColMin = objCol->boundingBox.min; CVector objColMax = objCol->boundingBox.max; CVector objColCenter = (objColMin + objColMax) / 2.0f; @@ -4886,7 +4886,7 @@ CPed::PreRender(void) if (CWeather::Rain > 0.3f && TheCamera.SoundDistUp > 15.0f) { if ((TheCamera.GetPosition() - GetPosition()).Magnitude() < 25.0f) { bool doSplashUp = true; - CColModel *ourCol = CModelInfo::GetModelInfo(GetModelIndex())->GetColModel(); + CColModel *ourCol = CModelInfo::GetColModel(GetModelIndex()); CVector speed = FindPlayerSpeed(); if (Abs(speed.x) <= 0.05f && Abs(speed.y) <= 0.05f) { @@ -8044,7 +8044,7 @@ CPed::FinishLaunchCB(CAnimBlendAssociation *animAssoc, void *arg) return; CVector forward(0.15f * ped->GetForward() + ped->GetPosition()); - forward.z += CModelInfo::GetModelInfo(ped->GetModelIndex())->GetColModel()->spheres->center.z + 0.25f; + forward.z += CModelInfo::GetColModel(ped->GetModelIndex())->spheres->center.z + 0.25f; CEntity *obstacle = CWorld::TestSphereAgainstWorld(forward, 0.25f, nil, true, true, false, true, false, false); if (!obstacle) { diff --git a/src/peds/Population.cpp b/src/peds/Population.cpp index fcabff91..5c80702f 100644 --- a/src/peds/Population.cpp +++ b/src/peds/Population.cpp @@ -999,7 +999,7 @@ bool CPopulation::TestRoomForDummyObject(CObject *obj) { int16 collidingObjs; - CWorld::FindObjectsKindaColliding(obj->m_objectMatrix.GetPosition(), CModelInfo::GetModelInfo(obj->GetModelIndex())->GetColModel()->boundingSphere.radius, + CWorld::FindObjectsKindaColliding(obj->m_objectMatrix.GetPosition(), CModelInfo::GetColModel(obj->GetModelIndex())->boundingSphere.radius, false, &collidingObjs, 2, nil, false, true, true, false, false); return collidingObjs == 0; diff --git a/src/renderer/Renderer.cpp b/src/renderer/Renderer.cpp index 25effc81..334f3954 100644 --- a/src/renderer/Renderer.cpp +++ b/src/renderer/Renderer.cpp @@ -158,7 +158,7 @@ CRenderer::RenderOneRoad(CEntity *e) if(gbDontRenderBuildings) return; if(gbShowCollisionPolys) - CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(), e->GetModelIndex()); + CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetColModel(e->GetModelIndex()), e->GetModelIndex()); else #endif { @@ -191,7 +191,7 @@ CRenderer::RenderOneNonRoad(CEntity *e) #ifndef MASTER if(gbShowCollisionPolys){ if(!e->IsVehicle()){ - CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel(), e->GetModelIndex()); + CCollision::DrawColModel_Coloured(e->GetMatrix(), *CModelInfo::GetColModel(e->GetModelIndex()), e->GetModelIndex()); return; } }else if(e->IsBuilding()){ diff --git a/src/vehicles/CarGen.cpp b/src/vehicles/CarGen.cpp index 22b2fc60..ebb767dd 100644 --- a/src/vehicles/CarGen.cpp +++ b/src/vehicles/CarGen.cpp @@ -172,8 +172,8 @@ void CCarGenerator::Setup(float x, float y, float z, float angle, int32 mi, int1 m_nTimer = CTimer::GetTimeInMilliseconds() + 1; m_nUsesRemaining = 0; m_bIsBlocking = false; - m_vecInf = CModelInfo::GetModelInfo(m_nModelIndex)->GetColModel()->boundingBox.min; - m_vecSup = CModelInfo::GetModelInfo(m_nModelIndex)->GetColModel()->boundingBox.max; + m_vecInf = CModelInfo::GetColModel(m_nModelIndex)->boundingBox.min; + m_vecSup = CModelInfo::GetColModel(m_nModelIndex)->boundingBox.max; m_fSize = Max(m_vecInf.Magnitude(), m_vecSup.Magnitude()); } From f131f70761c0b2428eb73f79bdbd91bbf3d060e5 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 11 Aug 2021 12:10:48 +0300 Subject: [PATCH 274/314] Fix unset emitting volume for moan sound --- src/audio/AudioLogic.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 44664f8a..53d26ac1 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -7223,6 +7223,9 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_fSpeedMultiplier = 0.0f; +#ifdef FIX_BUGS + m_sQueueSample.m_nEmittingVolume = 90; +#endif RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; From 2eb0390dc934ba589b8c90360d02eef9fbba1b5e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 11 Aug 2021 13:35:50 +0300 Subject: [PATCH 275/314] Fix unset emitting volume for sawmill --- src/audio/AudioLogic.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 53d26ac1..d4d1ed96 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -7320,6 +7320,9 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; +#ifdef FIX_BUGS + m_sQueueSample.m_nEmittingVolume = 70; +#endif RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; From 6c2d179aadd9e54afc010c7f8b79d663017d168c Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 29 Jul 2021 10:16:51 +0300 Subject: [PATCH 276/314] Add define to enable/disable external 3d audio simulation --- src/audio/AudioLogic.cpp | 9 +++++ src/audio/AudioManager.cpp | 68 ++++++++++++++++++++++++++++++++++++- src/audio/sampman.h | 6 ++++ src/audio/sampman_miles.cpp | 42 ++++++++++++++++++++++- 4 files changed, 123 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index d4d1ed96..e9ce7777 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -1329,6 +1329,9 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * AddPlayerCarSample(vol, freq, (engineSoundType - CAR_SFX_BANKS_OFFSET + SFX_CAR_REV_1), SFX_BANK_0, 2, TRUE); } else { TranslateEntity(&m_sQueueSample.m_vecPos, &pos); +#ifndef EXTERNAL_3D_SOUND + m_sQueueSample.m_nOffset = ComputePan(m_sQueueSample.m_fDistance, &pos); +#endif if (bAccelSampleStopped) { if (CurrentPretendGear != 1 || currentGear != 2) { gearNr = currentGear - 1; @@ -1356,9 +1359,15 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * SampleManager.SetChannelLoopPoints(CHANNEL_PLAYER_VEHICLE_ENGINE, 0, -1); } +#ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, 85); SampleManager.SetChannel3DPosition(CHANNEL_PLAYER_VEHICLE_ENGINE, pos.x, pos.y, pos.z); SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.f, 12.5f); +#else + + SampleManager.SetChannelVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, ComputeVolume(85, 50.0f, m_sQueueSample.m_fDistance)); + SampleManager.SetChannelPan(CHANNEL_PLAYER_VEHICLE_ENGINE, m_sQueueSample.m_nOffset); +#endif freq = GearFreqAdj[CurrentPretendGear] + freqModifier + 22050; if (engineSoundType == SFX_BANK_TRUCK) freq /= 2; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 22415e76..b5836a6e 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -56,11 +56,16 @@ cAudioManager::Initialise() PreInitialiseGameSpecificSetup(); m_bIsInitialised = SampleManager.Initialise(); if (m_bIsInitialised) { +#ifdef EXTERNAL_3D_SOUND m_nActiveSamples = SampleManager.GetMaximumSupportedChannels(); if (m_nActiveSamples <= 1) { Terminate(); } else { --m_nActiveSamples; +#else + { + m_nActiveSamples = NUM_CHANNELS_GENERIC; +#endif PostInitialiseGameSpecificSetup(); InitialisePoliceRadioZones(); InitialisePoliceRadio(); @@ -375,9 +380,11 @@ cAudioManager::SetCurrent3DProvider(uint8 which) ClearActiveSamples(); int8 current = SampleManager.SetCurrent3DProvider(which); if (current > 0) { +#ifdef EXTERNAL_3D_SOUND m_nActiveSamples = SampleManager.GetMaximumSupportedChannels(); if (m_nActiveSamples > 1) --m_nActiveSamples; +#endif } return current; } @@ -786,10 +793,12 @@ cAudioManager::ProcessActiveQueues() uint32 v28; uint32 v29; +#ifdef EXTERNAL_3D_SOUND float x; float usedX; float usedY; float usedZ; +#endif uint8 vol; uint8 emittingVol; @@ -825,13 +834,26 @@ cAudioManager::ProcessActiveQueues() sample.m_nVolumeChange = -1; if (!sample.m_bReleasingSoundFlag) { if (sample.m_bIs2D) { +#ifdef EXTERNAL_3D_SOUND if (field_4) { emittingVol = 2 * Min(63, sample.m_nEmittingVolume); } else { emittingVol = sample.m_nEmittingVolume; } +#else + if (field_4) { + emittingVol = 2 * Min(63, sample.m_nVolume); + } else { + emittingVol = sample.m_nVolume; + } +#endif SampleManager.SetChannelFrequency(j, sample.m_nFrequency); +#ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(j, emittingVol); +#else + SampleManager.SetChannelPan(j, sample.m_nOffset); + SampleManager.SetChannelVolume(j, sample.m_nVolume); +#endif } else { m_asActiveSamples[j].m_fDistance = sample.m_fDistance; position2 = sample.m_fDistance; @@ -852,6 +874,7 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelFrequency(j, freq); } +#ifdef EXTERNAL_3D_SOUND if (sample.m_nEmittingVolume != m_asActiveSamples[j].m_nEmittingVolume) { if (sample.m_nEmittingVolume <= m_asActiveSamples[j].m_nEmittingVolume) { vol = Max(m_asActiveSamples[j].m_nEmittingVolume - 10, sample.m_nEmittingVolume); @@ -868,9 +891,32 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelEmittingVolume(j, emittingVol); m_asActiveSamples[j].m_nEmittingVolume = vol; } +#else + if (sample.m_nVolume != m_asActiveSamples[j].m_nVolume) { + if (sample.m_nVolume <= m_asActiveSamples[j].m_nVolume) { + vol = Max(m_asActiveSamples[j].m_nVolume - 10, sample.m_nVolume); + } else { + vol = Min(m_asActiveSamples[j].m_nVolume + 10, sample.m_nVolume); + } + m_asActiveSamples[j].m_nVolume = vol; + + uint8 emittingVol; + if (field_4) { + emittingVol = 2 * Min(63, vol); + } else { + emittingVol = vol; + } + SampleManager.SetChannelVolume(j, emittingVol); + } +#endif TranslateEntity(&sample.m_vecPos, &position); +#ifdef EXTERNAL_3D_SOUND SampleManager.SetChannel3DPosition(j, position.x, position.y, position.z); SampleManager.SetChannel3DDistances(j, sample.m_fSoundIntensity, 0.25f * sample.m_fSoundIntensity); +#else + sample.m_nOffset = ComputePan(sample.m_fDistance, &position); + SampleManager.SetChannelPan(j, sample.m_nOffset); +#endif } SampleManager.SetChannelReverbFlag(j, sample.m_bReverbFlag); break; @@ -905,19 +951,38 @@ cAudioManager::ProcessActiveQueues() sample.m_nReleasingVolumeDivider = v29 / v28 + 1; } memcpy(&m_asActiveSamples[j], &sample, sizeof(tSound)); - if (!m_asActiveSamples[j].m_bIs2D) + if (!m_asActiveSamples[j].m_bIs2D) { TranslateEntity(&m_asActiveSamples[j].m_vecPos, &position); +#ifndef EXTERNAL_3D_SOUND + m_asActiveSamples[j].m_nOffset = ComputePan(m_asActiveSamples[j].m_fDistance, &position); +#endif + + } +#ifdef EXTERNAL_3D_SOUND if (field_4) { emittingVol = 2 * Min(63, m_asActiveSamples[j].m_nEmittingVolume); } else { emittingVol = m_asActiveSamples[j].m_nEmittingVolume; } +#else + if (field_4) { + emittingVol = 2 * Min(63, m_asActiveSamples[j].m_nVolume); + } else { + emittingVol = m_asActiveSamples[j].m_nVolume; + } +#endif if (SampleManager.InitialiseChannel(j, m_asActiveSamples[j].m_nSampleIndex, m_asActiveSamples[j].m_nBankIndex)) { SampleManager.SetChannelFrequency(j, m_asActiveSamples[j].m_nFrequency); +#ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(j, emittingVol); +#else + SampleManager.SetChannelVolume(j, m_asActiveSamples[j].m_nVolume); + SampleManager.SetChannelPan(j, m_asActiveSamples[j].m_nOffset); +#endif SampleManager.SetChannelLoopPoints(j, m_asActiveSamples[j].m_nLoopStart, m_asActiveSamples[j].m_nLoopEnd); SampleManager.SetChannelLoopCount(j, m_asActiveSamples[j].m_nLoopCount); SampleManager.SetChannelReverbFlag(j, m_asActiveSamples[j].m_bReverbFlag); +#ifdef EXTERNAL_3D_SOUND if (m_asActiveSamples[j].m_bIs2D) { uint8 offset = m_asActiveSamples[j].m_nOffset; if (offset == 63) { @@ -938,6 +1003,7 @@ cAudioManager::ProcessActiveQueues() } SampleManager.SetChannel3DPosition(j, usedX, usedY, usedZ); SampleManager.SetChannel3DDistances(j, m_asActiveSamples[j].m_fSoundIntensity, 0.25f * m_asActiveSamples[j].m_fSoundIntensity); +#endif SampleManager.StartChannel(j); } m_asActiveSamples[j].m_bIsProcessed = TRUE; diff --git a/src/audio/sampman.h b/src/audio/sampman.h index dc95622b..2c64fdef 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -100,9 +100,15 @@ enum #define MAXPROVIDERS 64 +#ifdef EXTERNAL_3D_SOUND #define MAXCHANNELS (NUM_CHANNELS_GENERIC+1) #define MAXCHANNELS_SURROUND (MAXCHANNELS-4) #define MAX2DCHANNELS 1 +#else +#define MAXCHANNELS 0 +#define MAXCHANNELS_SURROUND 0 +#define MAX2DCHANNELS NUM_CHANNELS +#endif #define MAX_STREAMS 2 diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 7c40d15d..d0c7992c 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -92,7 +92,7 @@ S32 curprovider=-1; S32 usingEAX=0; S32 usingEAX3=0; HPROVIDER opened_provider=0; -H3DSAMPLE opened_samples[MAXCHANNELS] = {0}; +H3DSAMPLE opened_samples[MAXCHANNELS ? MAXCHANNELS : 1] = {0}; HSAMPLE opened_2dsamples[MAX2DCHANNELS] = {0}; HDIGDRIVER DIG; S32 speaker_type=0; @@ -1709,7 +1709,11 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -1738,7 +1742,11 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -1838,7 +1846,11 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { nChannelVolume[nChannel] = vol; @@ -1866,7 +1878,11 @@ cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) { switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { #ifndef FIX_BUGS if ( opened_samples[nChannel - MAXCHANNELS] ) // BUG @@ -1887,7 +1903,11 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -1913,7 +1933,11 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -1939,7 +1963,11 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -1965,7 +1993,11 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -1996,7 +2028,11 @@ cSampleManager::StartChannel(uint32 nChannel) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; @@ -2022,7 +2058,11 @@ cSampleManager::StopChannel(uint32 nChannel) switch ( nChannel ) { +#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: +#else + default: +#endif { b2d = TRUE; break; From ce78081a7f61fed79281fa252da6f29d9f1030dc Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 11 Aug 2021 15:33:50 +0300 Subject: [PATCH 277/314] Put more things under ifdef --- src/audio/AudioCollision.cpp | 4 +- src/audio/AudioLogic.cpp | 163 +++++++++++++++++---------------- src/audio/AudioManager.cpp | 22 ++++- src/audio/AudioManager.h | 9 +- src/audio/PolRadio.cpp | 2 +- src/audio/sampman.h | 6 +- src/audio/sampman_miles.cpp | 125 ++++++++++++++----------- src/core/Frontend.cpp | 2 +- src/core/MenuScreens.cpp | 2 + src/core/MenuScreensCustom.cpp | 2 + src/core/config.h | 10 ++ src/core/re3.cpp | 4 + 12 files changed, 213 insertions(+), 138 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index bc470c49..0cfa4103 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -263,7 +263,7 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 11; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; @@ -292,7 +292,7 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index e9ce7777..cf54ce53 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -228,6 +228,7 @@ cAudioManager::ResetAudioLogicTimers(uint32 timer) void cAudioManager::ProcessReverb() { +#ifdef EXTERNAL_3D_SOUND if (SampleManager.UpdateReverb() && m_bDynamicAcousticModelingStatus) { #ifndef GTA_PS2 for (uint32 i = 0; i < @@ -243,6 +244,10 @@ cAudioManager::ProcessReverb() } #endif } +#else + // TODO: PS2 code + SampleManager.UpdateReverb(); +#endif } float @@ -681,7 +686,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 9; m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 4000 + 28000; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nEmittingVolume = (uint8)emittingVol; + SET_EMITTING_VOLUME((uint8)emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = rainOnVehicleIntensity; @@ -733,7 +738,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = (6000.f * modificator) + 7000; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; @@ -783,7 +788,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = (11025.f * velocityChange / params.m_pTransmission->fMaxVelocity + 11025.f); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -835,7 +840,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) } m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -886,7 +891,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) freq = SampleManager.GetSampleBaseFrequency(SFX_ROAD_NOISE); m_sQueueSample.m_nFrequency = freq + freq * multiplier; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1032,7 +1037,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) m_sQueueSample.m_nFrequency /= 2; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1092,7 +1097,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 samp } else { m_sQueueSample.m_nLoopCount = 1; } - m_sQueueSample.m_nEmittingVolume = emittingVolume; + SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; @@ -1135,7 +1140,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nFrequency = 12500; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 8; - m_sQueueSample.m_nEmittingVolume = 80; + SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 200.0f; @@ -1155,7 +1160,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nFrequency = 25000; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_nEmittingVolume = 80; + SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; m_sQueueSample.m_fSoundIntensity = 90.0f; @@ -1480,7 +1485,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 8; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1570,7 +1575,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nHornFrequency; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 80; + SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 5.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1651,7 +1656,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 80; + SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 7.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1694,7 +1699,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = (100 * m_sQueueSample.m_nEntityIndex & 1023) + SampleManager.GetSampleBaseFrequency(SFX_REVERSE_WARNING); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 60; + SET_EMITTING_VOLUME(60); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1739,7 +1744,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 1.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -1783,7 +1788,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 10; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nEmittingVolume = rand; + SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = 30.0f; @@ -1836,7 +1841,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVolume; + SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; @@ -1869,7 +1874,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 60; + SET_EMITTING_VOLUME(60); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 40.0f; @@ -2307,7 +2312,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = TRUE; } SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bIs2D = FALSE; AddSampleToRequestedQueue(); @@ -2343,7 +2348,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2365,7 +2370,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2409,7 +2414,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 80; + SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; @@ -2448,7 +2453,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; @@ -2503,7 +2508,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; @@ -2545,7 +2550,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = vol; + SET_EMITTING_VOLUME(vol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 50.0f; @@ -2600,7 +2605,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nFrequency = 1200 * heli->m_nHeliId + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; @@ -2774,7 +2779,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = GetJumboTaxiFreq(); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2805,7 +2810,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2835,7 +2840,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2865,7 +2870,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2895,7 +2900,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -2975,7 +2980,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_HEADPHONES); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = 7.0f; @@ -3085,7 +3090,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 20.0f; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -3112,7 +3117,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_fSoundIntensity = 30.0f; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -3176,7 +3181,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[3] % 26 + 100; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -3194,7 +3199,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 20 + 100; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) @@ -3219,7 +3224,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[1] % 10 + 90; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) @@ -3241,7 +3246,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[3] % 15 + 70; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; @@ -3259,7 +3264,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 10 + 100; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) @@ -3281,7 +3286,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[1] % 15 + 70; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; @@ -3299,7 +3304,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 15 + 70; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; @@ -3317,7 +3322,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 10 + 110; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) @@ -3339,7 +3344,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[0] % 20 + 80; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) @@ -3359,7 +3364,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 0; SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_nEmittingVolume = 90; + SET_EMITTING_VOLUME(90); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 6; @@ -3418,7 +3423,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS - m_sQueueSample.m_nEmittingVolume = 75; + SET_EMITTING_VOLUME(75); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -3439,7 +3444,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 10 + 40; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; if (m_bDynamicAcousticModelingStatus) @@ -3460,7 +3465,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = 70; - m_sQueueSample.m_nEmittingVolume = 70; + SET_EMITTING_VOLUME(70); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; @@ -3478,7 +3483,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[0] % 20 + 90; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; break; @@ -3495,7 +3500,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 30 + 70; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -6052,7 +6057,9 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_nLoopStart = 0; AudioManager.m_sQueueSample.m_nLoopEnd = -1; #endif // !GTA_PS2 +#ifdef EXTERNAL_3D_SOUND AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; +#endif // !EXTERNAL_3D_SOUND AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f; switch (sampleIndex) { case SFX_POLICE_HELI_1: @@ -6170,7 +6177,7 @@ cAudioManager::ProcessExplosions(int32 explosion) m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; + SET_EMITTING_VOLUME(MAX_VOLUME); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -6238,7 +6245,7 @@ cAudioManager::ProcessFires(int32) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -6281,7 +6288,7 @@ cAudioManager::ProcessWaterCannon(int32) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nEmittingVolume = 50; + SET_EMITTING_VOLUME(50); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -6531,7 +6538,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nEmittingVolume = emittingVolume; + SET_EMITTING_VOLUME(emittingVolume); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; AddSampleToRequestedQueue(); @@ -7138,7 +7145,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_nEmittingVolume = emittingVolume; + SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7210,7 +7217,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; + SET_EMITTING_VOLUME(MAX_VOLUME); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7233,7 +7240,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_fSpeedMultiplier = 0.0f; #ifdef FIX_BUGS - m_sQueueSample.m_nEmittingVolume = 90; + SET_EMITTING_VOLUME(90); #endif RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; @@ -7272,7 +7279,7 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 30; + SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7310,7 +7317,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 30; + SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7330,7 +7337,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; #ifdef FIX_BUGS - m_sQueueSample.m_nEmittingVolume = 70; + SET_EMITTING_VOLUME(70); #endif RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; @@ -7367,7 +7374,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 45; + SET_EMITTING_VOLUME(45); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7384,7 +7391,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 110; + SET_EMITTING_VOLUME(110); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7422,7 +7429,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 30; + SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7442,7 +7449,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 70; + SET_EMITTING_VOLUME(70); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7484,7 +7491,7 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = 110; + SET_EMITTING_VOLUME(110); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7530,7 +7537,7 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = rand; + SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7578,7 +7585,7 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nEmittingVolume = rand; + SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7625,7 +7632,7 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_nEmittingVolume = rand; + SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -7676,7 +7683,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7721,7 +7728,7 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; + SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -7740,7 +7747,7 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 30; m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; + SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -7914,7 +7921,7 @@ cAudioManager::ProcessFrontEnd() m_sQueueSample.m_nBankIndex = frontendBank ? SFX_BANK_FRONT_END_MENU : SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_bIs2D = TRUE; - m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; + SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); RESET_LOOP_OFFSETS if (stereo) m_sQueueSample.m_nOffset = m_anRandomTable[0] & 31; @@ -7956,7 +7963,7 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_nFrequency = 6000; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 100; + SET_EMITTING_VOLUME(100); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; m_sQueueSample.m_fSoundIntensity = intensity; @@ -8023,7 +8030,7 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = emittingVol; + SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; @@ -8103,7 +8110,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nEmittingVolume = 90; + SET_EMITTING_VOLUME(90); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; @@ -8134,7 +8141,7 @@ cAudioManager::ProcessGarages() } m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 4; - m_sQueueSample.m_nEmittingVolume = 60; + SET_EMITTING_VOLUME(60); m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReverbFlag = TRUE; @@ -8177,7 +8184,7 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_nReleasingVolumeModificator = 4; m_sQueueSample.m_nFrequency = 15591; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 40; + SET_EMITTING_VOLUME(40); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = intensity; @@ -8236,7 +8243,7 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = 100; + SET_EMITTING_VOLUME(100); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = 450.0f; @@ -8262,7 +8269,7 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = 5500; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; + SET_EMITTING_VOLUME(MAX_VOLUME); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; @@ -8296,7 +8303,7 @@ cAudioManager::ProcessBridgeOneShots() m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; + SET_EMITTING_VOLUME(MAX_VOLUME); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_fSoundIntensity = bridgeIntensity; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index b5836a6e..7345ceb1 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -335,14 +335,19 @@ cAudioManager::DestroyAllGameCreatedEntities() uint8 cAudioManager::GetNum3DProvidersAvailable() { +#ifdef EXTERNAL_3D_SOUND if (m_bIsInitialised) return SampleManager.GetNum3DProvidersAvailable(); +#endif return 0; } char * cAudioManager::Get3DProviderName(uint8 id) { +#ifndef EXTERNAL_3D_SOUND + return nil; +#else if (!m_bIsInitialised) return nil; #ifdef AUDIO_OAL @@ -353,13 +358,16 @@ cAudioManager::Get3DProviderName(uint8 id) return nil; #endif return SampleManager.Get3DProviderName(id); +#endif } int8 cAudioManager::GetCurrent3DProviderIndex() { +#ifdef EXTERNAL_3D_SOUND if (m_bIsInitialised) return SampleManager.GetCurrent3DProviderIndex(); +#endif return -1; } @@ -367,6 +375,9 @@ cAudioManager::GetCurrent3DProviderIndex() int8 cAudioManager::SetCurrent3DProvider(uint8 which) { +#ifndef EXTERNAL_3D_SOUND + return -1; +#else if (!m_bIsInitialised) return -1; for (uint8 i = 0; i < m_nActiveSamples + 1; ++i) @@ -387,12 +398,15 @@ cAudioManager::SetCurrent3DProvider(uint8 which) #endif } return current; +#endif } void cAudioManager::SetSpeakerConfig(int32 conf) { +#ifdef EXTERNAL_3D_SOUND SampleManager.SetSpeakerConfig(conf); +#endif } bool8 @@ -482,7 +496,7 @@ cAudioManager::ServiceSoundEffects() ServiceCollisions(); AddReleasingSounds(); ProcessMissionAudio(); -#ifdef GTA_PC +#ifdef EXTERNAL_3D_SOUND AdjustSamplesVolume(); #endif ProcessActiveQueues(); @@ -660,7 +674,7 @@ cAudioManager::AddReflectionsToRequestedQueue() m_sQueueSample.m_nLoopsRemaining = (reflectionDistance * 500.f / 1029.f); if (m_sQueueSample.m_nLoopsRemaining > 5) { m_sQueueSample.m_fDistance = m_afReflectionsDistances[i]; - m_sQueueSample.m_nEmittingVolume = emittingVolume; + SET_EMITTING_VOLUME(emittingVolume); m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > emittingVolume / 16) { m_sQueueSample.m_nCounter += (i + 1) * 256; @@ -1038,7 +1052,9 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_nReleasingVolumeModificator = 5; m_asActiveSamples[i].m_nFrequency = 0; m_asActiveSamples[i].m_nVolume = 0; +#ifdef EXTERNAL_3D_SOUND m_asActiveSamples[i].m_nEmittingVolume = 0; +#endif m_asActiveSamples[i].m_fDistance = 0.0f; m_asActiveSamples[i].m_bIsProcessed = FALSE; m_asActiveSamples[i].m_bLoopEnded = FALSE; @@ -1076,7 +1092,7 @@ cAudioManager::GenerateIntegerRandomNumberTable() } } -#ifdef GTA_PC +#ifdef EXTERNAL_3D_SOUND void cAudioManager::AdjustSamplesVolume() { diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 187a71a8..d217c87a 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -20,6 +20,8 @@ public: #ifndef GTA_PS2 int32 m_nLoopStart; int32 m_nLoopEnd; +#endif +#ifdef EXTERNAL_3D_SOUND uint8 m_nEmittingVolume; #endif float m_fSpeedMultiplier; @@ -285,7 +287,7 @@ public: void GenerateIntegerRandomNumberTable(); // inlined on PS2 void LoadBankIfNecessary(uint8 bank); // this is used only on PS2 but technically not a platform code -#ifdef GTA_PC +#ifdef EXTERNAL_3D_SOUND // actually must have been && AUDIO_MSS as well void AdjustSamplesVolume(); uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist); #endif @@ -525,6 +527,11 @@ public: #define RESET_LOOP_OFFSETS #define SET_LOOP_OFFSETS(sample) #endif +#ifdef EXTERNAL_3D_SOUND +#define SET_EMITTING_VOLUME(vol) m_sQueueSample.m_nEmittingVolume = vol +#else +#define SET_EMITTING_VOLUME(vol) +#endif #if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS) static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index d6079191..742e5ea5 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -133,7 +133,7 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_nVolume = m_anRandomTable[2] % 20 + 15; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nEmittingVolume = m_sQueueSample.m_nVolume; + SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); SET_LOOP_OFFSETS(SFX_POLICE_RADIO_CRACKLE) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = FALSE; diff --git a/src/audio/sampman.h b/src/audio/sampman.h index 2c64fdef..16e1a1bb 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -144,7 +144,8 @@ public: cSampleManager(void); ~cSampleManager(void); - + +#ifdef EXTERNAL_3D_SOUND void SetSpeakerConfig(int32 nConfig); uint32 GetMaximumSupportedChannels(void); @@ -156,6 +157,7 @@ public: int8 GetCurrent3DProviderIndex(void); int8 SetCurrent3DProvider(uint8 which); +#endif bool8 IsMP3RadioChannelAvailable(void); @@ -195,9 +197,11 @@ public: void SetChannelReverbFlag (uint32 nChannel, bool8 nReverbFlag); bool8 InitialiseChannel (uint32 nChannel, uint32 nSfx, uint8 nBank); +#ifdef EXTERNAL_3D_SOUND void SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume); void SetChannel3DPosition (uint32 nChannel, float fX, float fY, float fZ); void SetChannel3DDistances (uint32 nChannel, float fMax, float fMin); +#endif void SetChannelVolume (uint32 nChannel, uint32 nVolume); void SetChannelPan (uint32 nChannel, uint32 nPan); void SetChannelFrequency (uint32 nChannel, uint32 nFreq); diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index d0c7992c..0ba6b544 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -73,7 +73,7 @@ char _aHDDPath[MAX_PATH]; bool8 _bSampmanInitialised = FALSE; - +#ifdef EXTERNAL_3D_SOUND // // Miscellaneous globals / defines @@ -92,11 +92,12 @@ S32 curprovider=-1; S32 usingEAX=0; S32 usingEAX3=0; HPROVIDER opened_provider=0; -H3DSAMPLE opened_samples[MAXCHANNELS ? MAXCHANNELS : 1] = {0}; +H3DSAMPLE opened_samples[MAXCHANNELS] = {0}; +#endif HSAMPLE opened_2dsamples[MAX2DCHANNELS] = {0}; HDIGDRIVER DIG; +#ifdef EXTERNAL_3D_SOUND S32 speaker_type=0; - U32 _maxSamples; float _fPrevEaxRatioDestination; bool8 _usingMilesFast2D; @@ -263,6 +264,7 @@ set_new_provider(S32 index) return FALSE; } +#endif cSampleManager::cSampleManager(void) : m_nNumberOfProviders(0) @@ -275,6 +277,7 @@ cSampleManager::~cSampleManager(void) } +#ifdef EXTERNAL_3D_SOUND void cSampleManager::SetSpeakerConfig(int32 which) { @@ -353,6 +356,7 @@ cSampleManager::SetCurrent3DProvider(uint8 nProvider) else return curprovider; } +#endif static bool8 _ResolveLink(char const *path, char *out) @@ -823,9 +827,11 @@ cSampleManager::ReleaseDigitalHandle(void) { if ( DIG ) { +#ifdef EXTERNAL_3D_SOUND prevprovider = curprovider; release_existing(); curprovider = -1; +#endif AIL_digital_handle_release(DIG); } } @@ -836,8 +842,10 @@ cSampleManager::ReacquireDigitalHandle(void) if ( DIG ) { AIL_digital_handle_reacquire(DIG); +#ifdef EXTERNAL_3D_SOUND if ( prevprovider != -1 ) set_new_provider(prevprovider); +#endif } } @@ -866,7 +874,8 @@ cSampleManager::Initialise(void) m_nMonoMode = 0; } - + +#ifdef EXTERNAL_3D_SOUND // miles TRACE("MILES"); { @@ -887,6 +896,7 @@ cSampleManager::Initialise(void) for ( int32 i = 0; i < MAXCHANNELS; i++ ) opened_samples[i] = NULL; } +#endif // banks TRACE("banks"); @@ -939,8 +949,10 @@ cSampleManager::Initialise(void) Terminate(); return FALSE; } - + +#ifdef EXTERNAL_3D_SOUND add_providers(); +#endif if ( !InitialiseSampleBanks() ) { @@ -1188,7 +1200,8 @@ cSampleManager::Initialise(void) TRACE("providerset"); { _bSampmanInitialised = TRUE; - + +#ifdef EXTERNAL_3D_SOUND U32 n = 0; while ( n < m_nNumberOfProviders ) @@ -1206,6 +1219,7 @@ cSampleManager::Initialise(void) Terminate(); return FALSE; } +#endif } TRACE("bank"); @@ -1300,8 +1314,10 @@ cSampleManager::Terminate(void) opened_2dsamples[i] = NULL; } } - + +#ifdef EXTERNAL_3D_SOUND release_existing(); +#endif _DeleteMP3Entries(); @@ -1411,6 +1427,7 @@ cSampleManager::UpdateEffectsVolume(void) //[Y], cSampleManager::UpdateSoundBuff { for ( int32 i = 0; i < MAXCHANNELS+MAX2DCHANNELS; i++ ) { +#ifdef EXTERNAL_3D_SOUND if ( i < MAXCHANNELS ) { if ( opened_samples[i] && GetChannelUsedFlag(i) ) @@ -1423,6 +1440,7 @@ cSampleManager::UpdateEffectsVolume(void) //[Y], cSampleManager::UpdateSoundBuff } } else +#endif { if ( opened_2dsamples[i - MAXCHANNELS] ) { @@ -1628,6 +1646,7 @@ cSampleManager::GetSampleLength(uint32 nSample) bool8 cSampleManager::UpdateReverb(void) { +#ifdef EXTERNAL_3D_SOUND if ( !usingEAX ) return FALSE; @@ -1700,20 +1719,19 @@ cSampleManager::UpdateReverb(void) _fPrevEaxRatioDestination = fRatio; return TRUE; +#endif + return FALSE; } void cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -1733,25 +1751,24 @@ cSampleManager::SetChannelReverbFlag(uint32 nChannel, bool8 nReverbFlag) AIL_set_3D_sample_effects_level(opened_samples[nChannel], 0.0f); } } +#endif } bool8 cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; } } +#endif int32 addr; @@ -1771,9 +1788,11 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) addr = nPedSlotSfxAddr[slot]; } - + +#ifdef EXTERNAL_3D_SOUND if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) { AIL_set_sample_address(opened_2dsamples[nChannel - MAXCHANNELS], (void *)addr, m_aSamples[nSfx].nSize); @@ -1781,6 +1800,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) } else return FALSE; +#ifdef EXTERNAL_3D_SOUND } else { @@ -1801,8 +1821,10 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) return TRUE; } +#endif } +#ifdef EXTERNAL_3D_SOUND void cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) { @@ -1837,21 +1859,20 @@ cSampleManager::SetChannel3DDistances(uint32 nChannel, float fMax, float fMin) if ( opened_samples[nChannel] ) AIL_set_3D_sample_distances(opened_samples[nChannel], fMax, fMin); } +#endif void cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) { uint32 vol = nVolume; if ( vol > MAX_VOLUME ) vol = MAX_VOLUME; - + +#ifdef EXTERNAL_3D_SOUND switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { +#endif nChannelVolume[nChannel] = vol; // increase the volume for JB.MP3 and S4_BDBD.MP3 @@ -1867,47 +1888,46 @@ cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) AIL_set_sample_volume(opened_2dsamples[nChannel - MAXCHANNELS], m_nEffectsFadeVolume*vol*m_nEffectsVolume >> 14); } - + +#ifdef EXTERNAL_3D_SOUND break; } } +#endif } void cSampleManager::SetChannelPan(uint32 nChannel, uint32 nPan) { +#ifdef EXTERNAL_3D_SOUND switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { -#ifndef FIX_BUGS +#endif +#if !defined(FIX_BUGS) && defined(EXTERNAL_3D_SOUND) if ( opened_samples[nChannel - MAXCHANNELS] ) // BUG #else if ( opened_2dsamples[nChannel - MAXCHANNELS] ) #endif AIL_set_sample_pan(opened_2dsamples[nChannel - MAXCHANNELS], nPan); +#ifdef EXTERNAL_3D_SOUND break; } } +#endif } void cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -1916,28 +1936,28 @@ cSampleManager::SetChannelFrequency(uint32 nChannel, uint32 nFreq) if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) AIL_set_sample_playback_rate(opened_2dsamples[nChannel - MAXCHANNELS], nFreq); +#ifdef EXTERNAL_3D_SOUND } else { if ( opened_samples[nChannel] ) AIL_set_3D_sample_playback_rate(opened_samples[nChannel], nFreq); } +#endif } void cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -1946,28 +1966,28 @@ cSampleManager::SetChannelLoopPoints(uint32 nChannel, uint32 nLoopStart, int32 n if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) AIL_set_sample_loop_block(opened_2dsamples[nChannel - MAXCHANNELS], nLoopStart, nLoopEnd); +#ifdef EXTERNAL_3D_SOUND } else { if ( opened_samples[nChannel] ) AIL_set_3D_sample_loop_block(opened_samples[nChannel], nLoopStart, nLoopEnd); } +#endif } void cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -1976,28 +1996,28 @@ cSampleManager::SetChannelLoopCount(uint32 nChannel, uint32 nLoopCount) if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) AIL_set_sample_loop_count(opened_2dsamples[nChannel - MAXCHANNELS], nLoopCount); +#ifdef EXTERNAL_3D_SOUND } else { if ( opened_samples[nChannel] ) AIL_set_3D_sample_loop_count(opened_samples[nChannel], nLoopCount); } +#endif } bool8 cSampleManager::GetChannelUsedFlag(uint32 nChannel) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -2006,10 +2026,12 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) return AIL_sample_status(opened_2dsamples[nChannel - MAXCHANNELS]) == SMP_PLAYING; else return FALSE; +#ifdef EXTERNAL_3D_SOUND } else { @@ -2018,21 +2040,19 @@ cSampleManager::GetChannelUsedFlag(uint32 nChannel) else return FALSE; } +#endif } void cSampleManager::StartChannel(uint32 nChannel) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -2041,28 +2061,28 @@ cSampleManager::StartChannel(uint32 nChannel) if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) AIL_start_sample(opened_2dsamples[nChannel - MAXCHANNELS]); +#ifdef EXTERNAL_3D_SOUND } else { if ( opened_samples[nChannel] ) AIL_start_3D_sample(opened_samples[nChannel]); } +#endif } void cSampleManager::StopChannel(uint32 nChannel) { +#ifdef EXTERNAL_3D_SOUND bool8 b2d = FALSE; switch ( nChannel ) { -#ifdef EXTERNAL_3D_SOUND case CHANNEL_POLICE_RADIO: -#else - default: -#endif { b2d = TRUE; break; @@ -2071,8 +2091,10 @@ cSampleManager::StopChannel(uint32 nChannel) if ( b2d ) { +#endif if ( opened_2dsamples[nChannel - MAXCHANNELS] ) AIL_end_sample(opened_2dsamples[nChannel - MAXCHANNELS]); +#ifdef EXTERNAL_3D_SOUND } else { @@ -2082,6 +2104,7 @@ cSampleManager::StopChannel(uint32 nChannel) AIL_end_3D_sample(opened_samples[nChannel]); } } +#endif } void diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 8358298f..62c16cd9 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -447,7 +447,7 @@ CMenuManager::ThingsToDoBeforeGoingBack() if ((m_nCurrScreen == MENUPAGE_SKIN_SELECT) && strcmp(m_aSkinName, m_PrefsSkinFile) != 0) { CWorld::Players[0].SetPlayerSkin(m_PrefsSkinFile); #ifdef CUSTOM_FRONTEND_OPTIONS - } else if (ScreenHasOption(m_nCurrScreen, "FEA_3DH")) { + } else if (ScreenHasOption(m_nCurrScreen, "FEA_RSS")) { #else } else if (m_nCurrScreen == MENUPAGE_SOUND_SETTINGS) { #endif diff --git a/src/core/MenuScreens.cpp b/src/core/MenuScreens.cpp index 3bd9adf4..0a149f27 100644 --- a/src/core/MenuScreens.cpp +++ b/src/core/MenuScreens.cpp @@ -40,8 +40,10 @@ CMenuScreen aScreens[MENUPAGES] = { { "FET_AUD", 1, MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, 1, 1, MENUACTION_MUSICVOLUME, "FEA_MUS", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_SFXVOLUME, "FEA_SFX", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, +#ifdef EXTERNAL_3D_SOUND MENUACTION_AUDIOHW, "FEA_3DH", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_SPEAKERCONF, "FEA_SPK", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, +#endif MENUACTION_DYNAMICACOUSTIC, "FET_DAM", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_RADIO, "FEA_RSS", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 033ed9b9..c22b2e3a 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -435,8 +435,10 @@ CMenuScreenCustom aScreens[MENUPAGES] = { { "FET_AUD", MENUPAGE_OPTIONS, MENUPAGE_OPTIONS, nil, nil, MENUACTION_MUSICVOLUME, "FEA_MUS", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_SFXVOLUME, "FEA_SFX", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, +#ifdef EXTERNAL_3D_SOUND MENUACTION_AUDIOHW, "FEA_3DH", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_SPEAKERCONF, "FEA_SPK", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, +#endif MENUACTION_DYNAMICACOUSTIC, "FET_DAM", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_RADIO, "FEA_RSS", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_RESTOREDEF, "FET_DEF", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, diff --git a/src/core/config.h b/src/core/config.h index 21a8b738..782ad99f 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -166,6 +166,7 @@ enum Config { # define ANIM_COMPRESSION # define PS2_MENU #elif defined GTA_PC +# define EXTERNAL_3D_SOUND # define PC_PLAYER_CONTROLS // mouse player/cam mode # define GTA_REPLAY # define GTA_SCENE_EDIT @@ -420,6 +421,8 @@ enum Config { #define FREE_CAM // Rotating cam // Audio +#define EXTERNAL_3D_SOUND // use external engine to simulate 3d audio spatialization. OpenAL would not work without it (because it works in a 3d space + // originally and making it work in 2d only requires more resource). Will not work on PS2 #define RADIO_SCROLL_TO_PREV_STATION #define AUDIO_CACHE #define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 44 (PC has 28 originally) @@ -466,3 +469,10 @@ enum Config { #endif #endif // VANILLA_DEFINES + +#if defined(AUDIO_OAL) && !defined(EXTERNAL_3D_SOUND) +static_assert(false, "AUDIO_OAL cannot work without EXTERNAL_3D_SOUND"); +#endif +#if defined(GTA_PS2) && defined(EXTERNAL_3D_SOUND) +static_assert(false, "EXTERNAL_3D_SOUND cannot work on PS2"); +#endif diff --git a/src/core/re3.cpp b/src/core/re3.cpp index b7d89363..4914cd9c 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -493,8 +493,10 @@ bool LoadINISettings() ReadIniIfExists("Audio", "SfxVolume", &FrontEndMenuManager.m_PrefsSfxVolume); ReadIniIfExists("Audio", "MusicVolume", &FrontEndMenuManager.m_PrefsMusicVolume); ReadIniIfExists("Audio", "Radio", &FrontEndMenuManager.m_PrefsRadioStation); +#ifdef EXTERNAL_3D_SOUND ReadIniIfExists("Audio", "SpeakerType", &FrontEndMenuManager.m_PrefsSpeakers); ReadIniIfExists("Audio", "Provider", &FrontEndMenuManager.m_nPrefsAudio3DProviderIndex); +#endif ReadIniIfExists("Audio", "DynamicAcoustics", &FrontEndMenuManager.m_PrefsDMA); ReadIniIfExists("Display", "Brightness", &FrontEndMenuManager.m_PrefsBrightness); ReadIniIfExists("Display", "DrawDistance", &FrontEndMenuManager.m_PrefsLOD); @@ -593,8 +595,10 @@ void SaveINISettings() StoreIni("Audio", "SfxVolume", FrontEndMenuManager.m_PrefsSfxVolume); StoreIni("Audio", "MusicVolume", FrontEndMenuManager.m_PrefsMusicVolume); StoreIni("Audio", "Radio", FrontEndMenuManager.m_PrefsRadioStation); +#ifdef EXTERNAL_3D_SOUND StoreIni("Audio", "SpeakerType", FrontEndMenuManager.m_PrefsSpeakers); StoreIni("Audio", "Provider", FrontEndMenuManager.m_nPrefsAudio3DProviderIndex); +#endif StoreIni("Audio", "DynamicAcoustics", FrontEndMenuManager.m_PrefsDMA); StoreIni("Display", "Brightness", FrontEndMenuManager.m_PrefsBrightness); StoreIni("Display", "DrawDistance", FrontEndMenuManager.m_PrefsLOD); From 2ef43e8d1a8df218c32663c7b23f0baef8051651 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 12 Aug 2021 10:41:22 +0300 Subject: [PATCH 278/314] Fix sampman_null --- src/audio/sampman_null.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/audio/sampman_null.cpp b/src/audio/sampman_null.cpp index df912a9a..6d16e286 100644 --- a/src/audio/sampman_null.cpp +++ b/src/audio/sampman_null.cpp @@ -19,6 +19,7 @@ cSampleManager::~cSampleManager(void) } +#ifdef EXTERNAL_3D_SOUND void cSampleManager::SetSpeakerConfig(int32 nConfig) { @@ -59,6 +60,7 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider) { return 0; } +#endif bool8 cSampleManager::IsMP3RadioChannelAvailable(void) @@ -223,6 +225,7 @@ cSampleManager::InitialiseChannel(uint32 nChannel, uint32 nSfx, uint8 nBank) return FALSE; } +#ifdef EXTERNAL_3D_SOUND void cSampleManager::SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume) { @@ -243,6 +246,7 @@ cSampleManager::SetChannel3DDistances(uint32 nChannel, float fMax, float fMin) ASSERT( nChannel < MAXCHANNELS ); ASSERT( nChannel < MAXCHANNELS+MAX2DCHANNELS ); } +#endif void cSampleManager::SetChannelVolume(uint32 nChannel, uint32 nVolume) From 4f8993e19bda2011eb323705db1e91c7540854af Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 12 Aug 2021 11:35:07 +0300 Subject: [PATCH 279/314] Replace static_assert with #error --- src/core/config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/config.h b/src/core/config.h index 782ad99f..063745b8 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -471,8 +471,8 @@ enum Config { #endif // VANILLA_DEFINES #if defined(AUDIO_OAL) && !defined(EXTERNAL_3D_SOUND) -static_assert(false, "AUDIO_OAL cannot work without EXTERNAL_3D_SOUND"); +#error AUDIO_OAL cannot work without EXTERNAL_3D_SOUND #endif #if defined(GTA_PS2) && defined(EXTERNAL_3D_SOUND) -static_assert(false, "EXTERNAL_3D_SOUND cannot work on PS2"); +#error EXTERNAL_3D_SOUND cannot work on PS2 #endif From f1545daeae2cbd37732e317609c3a407e9be53be Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 12 Aug 2021 11:46:10 +0300 Subject: [PATCH 280/314] Rename unused audio member --- src/audio/AudioManager.cpp | 14 +++++++------- src/audio/AudioManager.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 7345ceb1..8412f98c 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -29,7 +29,7 @@ cAudioManager::cAudioManager() ClearRequestedQueue(); ClearActiveSamples(); GenerateIntegerRandomNumberTable(); - field_4 = 0; + m_bDoubleVolume = FALSE; m_bDynamicAcousticModelingStatus = TRUE; for (int i = 0; i < NUM_AUDIOENTITIES; i++) { @@ -849,13 +849,13 @@ cAudioManager::ProcessActiveQueues() if (!sample.m_bReleasingSoundFlag) { if (sample.m_bIs2D) { #ifdef EXTERNAL_3D_SOUND - if (field_4) { + if (m_bDoubleVolume) { emittingVol = 2 * Min(63, sample.m_nEmittingVolume); } else { emittingVol = sample.m_nEmittingVolume; } #else - if (field_4) { + if (m_bDoubleVolume) { emittingVol = 2 * Min(63, sample.m_nVolume); } else { emittingVol = sample.m_nVolume; @@ -897,7 +897,7 @@ cAudioManager::ProcessActiveQueues() } uint8 emittingVol; - if (field_4) { + if (m_bDoubleVolume) { emittingVol = 2 * Min(63, vol); } else { emittingVol = vol; @@ -915,7 +915,7 @@ cAudioManager::ProcessActiveQueues() m_asActiveSamples[j].m_nVolume = vol; uint8 emittingVol; - if (field_4) { + if (m_bDoubleVolume) { emittingVol = 2 * Min(63, vol); } else { emittingVol = vol; @@ -973,13 +973,13 @@ cAudioManager::ProcessActiveQueues() } #ifdef EXTERNAL_3D_SOUND - if (field_4) { + if (m_bDoubleVolume) { emittingVol = 2 * Min(63, m_asActiveSamples[j].m_nEmittingVolume); } else { emittingVol = m_asActiveSamples[j].m_nEmittingVolume; } #else - if (field_4) { + if (m_bDoubleVolume) { emittingVol = 2 * Min(63, m_asActiveSamples[j].m_nVolume); } else { emittingVol = m_asActiveSamples[j].m_nVolume; diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index d217c87a..74092c51 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -195,7 +195,7 @@ public: bool8 m_bReverb; // unused bool8 m_bFifthFrameFlag; uint8 m_nActiveSamples; - uint8 field_4; // unused + uint8 m_bDoubleVolume; // unused bool8 m_bDynamicAcousticModelingStatus; float m_fSpeedOfSound; bool8 m_bTimerJustReset; From 033d89a9ab6660f15798344af15cdabef8e872b8 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 12 Aug 2021 13:01:07 +0300 Subject: [PATCH 281/314] Refactor cAudioManager::ProcessActiveQueues, fix doppler effect --- src/audio/AudioManager.cpp | 106 ++++++++++--------------------------- src/core/common.h | 2 + 2 files changed, 29 insertions(+), 79 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 8412f98c..8063cfd6 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -539,10 +539,11 @@ cAudioManager::TranslateEntity(Const CVector *in, CVector *out) int32 cAudioManager::ComputePan(float dist, CVector *vec) { - const uint8 PanTable[64] = {0, 3, 8, 12, 16, 19, 22, 24, 26, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 49, 50, 51, 52, 53, 53, - 54, 55, 55, 56, 56, 57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63}; + Const static uint8 PanTable[64] = {0, 3, 8, 12, 16, 19, 22, 24, 26, 28, 30, 31, 33, 34, 36, 37, 39, 40, 41, 42, 44, 45, 46, 47, 48, 49, 49, 50, 51, 52, 53, 53, + 54, 55, 55, 56, 56, 57, 57, 58, 58, 58, 59, 59, 59, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63}; - int32 index = Min(63, Abs(vec->x / (dist / 64.f))); + int32 index = vec->x / (dist / 64.f); + index = Min(63, ABS(index)); if (vec->x > 0.f) return Max(20, 63 - PanTable[index]); @@ -558,11 +559,7 @@ cAudioManager::ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, if (dist != 0.0f) { float speedOfSource = (dist / m_nTimeSpent) * speedMultiplier; if (m_fSpeedOfSound > Abs(speedOfSource)) { - if (speedOfSource < 0.0f) { - speedOfSource = Max(speedOfSource, -1.5f); - } else { - speedOfSource = Min(speedOfSource, 1.5f); - } + speedOfSource = Clamp2(speedOfSource, 0.0f, 1.5f); newFreq = (oldFreq * m_fSpeedOfSound) / (speedOfSource + m_fSpeedOfSound); } } @@ -804,8 +801,8 @@ cAudioManager::ProcessActiveQueues() float position2; float position1; - uint32 v28; - uint32 v29; + uint32 samplesPerFrame; + uint32 samplesToPlay; #ifdef EXTERNAL_3D_SOUND float x; @@ -830,11 +827,11 @@ cAudioManager::ProcessActiveQueues() if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && sample.m_nCounter == m_asActiveSamples[j].m_nCounter && sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { if (sample.m_nLoopCount) { - if (m_FrameCounter & 1) { + if (m_FrameCounter & 1) flag = !!(j & 1); - } else { + else flag = !(j & 1); - } + if (flag && !SampleManager.GetChannelUsedFlag(j)) { sample.m_bLoopEnded = TRUE; m_asActiveSamples[j].m_bLoopEnded = TRUE; @@ -849,17 +846,9 @@ cAudioManager::ProcessActiveQueues() if (!sample.m_bReleasingSoundFlag) { if (sample.m_bIs2D) { #ifdef EXTERNAL_3D_SOUND - if (m_bDoubleVolume) { - emittingVol = 2 * Min(63, sample.m_nEmittingVolume); - } else { - emittingVol = sample.m_nEmittingVolume; - } + emittingVol = m_bDoubleVolume ? 2 * Min(63, sample.m_nEmittingVolume) : sample.m_nEmittingVolume; #else - if (m_bDoubleVolume) { - emittingVol = 2 * Min(63, sample.m_nVolume); - } else { - emittingVol = sample.m_nVolume; - } + emittingVol = m_bDoubleVolume ? 2 * Min(63, sample.m_nVolume) : sample.m_nVolume; #endif SampleManager.SetChannelFrequency(j, sample.m_nFrequency); #ifdef EXTERNAL_3D_SOUND @@ -869,58 +858,27 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelVolume(j, sample.m_nVolume); #endif } else { - m_asActiveSamples[j].m_fDistance = sample.m_fDistance; position2 = sample.m_fDistance; position1 = m_asActiveSamples[j].m_fDistance; + m_asActiveSamples[j].m_fDistance = sample.m_fDistance; sample.m_nFrequency = ComputeDopplerEffectedFrequency(sample.m_nFrequency, position1, position2, sample.m_fSpeedMultiplier); if (sample.m_nFrequency != m_asActiveSamples[j].m_nFrequency) { - int32 freq; - if (sample.m_nFrequency <= m_asActiveSamples[j].m_nFrequency) { -#ifdef FIX_BUGS - freq = Max((int32)sample.m_nFrequency, (int32)m_asActiveSamples[j].m_nFrequency - 6000); -#else - freq = Max((int32)sample.m_nFrequency, int32(m_asActiveSamples[j].m_nFrequency - 6000)); -#endif - } else { - freq = Min(sample.m_nFrequency, m_asActiveSamples[j].m_nFrequency + 6000); - } + uint32 freq = Clamp2((int32)sample.m_nFrequency, (int32)m_asActiveSamples[j].m_nFrequency, 6000); m_asActiveSamples[j].m_nFrequency = freq; SampleManager.SetChannelFrequency(j, freq); } #ifdef EXTERNAL_3D_SOUND if (sample.m_nEmittingVolume != m_asActiveSamples[j].m_nEmittingVolume) { - if (sample.m_nEmittingVolume <= m_asActiveSamples[j].m_nEmittingVolume) { - vol = Max(m_asActiveSamples[j].m_nEmittingVolume - 10, sample.m_nEmittingVolume); - } else { - vol = Min(m_asActiveSamples[j].m_nEmittingVolume + 10, sample.m_nEmittingVolume); - } - - uint8 emittingVol; - if (m_bDoubleVolume) { - emittingVol = 2 * Min(63, vol); - } else { - emittingVol = vol; - } - SampleManager.SetChannelEmittingVolume(j, emittingVol); + vol = Clamp2((int8)sample.m_nEmittingVolume, (int8)m_asActiveSamples[j].m_nEmittingVolume, 10); + SampleManager.SetChannelEmittingVolume(j, m_bDoubleVolume ? 2 * Min(63, vol) : vol); m_asActiveSamples[j].m_nEmittingVolume = vol; } #else if (sample.m_nVolume != m_asActiveSamples[j].m_nVolume) { - if (sample.m_nVolume <= m_asActiveSamples[j].m_nVolume) { - vol = Max(m_asActiveSamples[j].m_nVolume - 10, sample.m_nVolume); - } else { - vol = Min(m_asActiveSamples[j].m_nVolume + 10, sample.m_nVolume); - } + vol = Clamp2((int8)sample.m_nVolume, (int8)m_asActiveSamples[j].m_nVolume, 10); m_asActiveSamples[j].m_nVolume = vol; - - uint8 emittingVol; - if (m_bDoubleVolume) { - emittingVol = 2 * Min(63, vol); - } else { - emittingVol = vol; - } - SampleManager.SetChannelVolume(j, emittingVol); + SampleManager.SetChannelVolume(j, m_bDoubleVolume ? 2 * Min(63, vol) : vol); } #endif TranslateEntity(&sample.m_vecPos, &position); @@ -958,11 +916,11 @@ cAudioManager::ProcessActiveQueues() for (uint8 j = 0; j < m_nActiveSamples; ++j) { if (!m_asActiveSamples[j].m_bIsProcessed) { if (sample.m_nLoopCount) { - v28 = sample.m_nFrequency / m_nTimeSpent; - v29 = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); - if (v28 == 0) + samplesPerFrame = sample.m_nFrequency / m_nTimeSpent; + samplesToPlay = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); + if (samplesPerFrame == 0) continue; - sample.m_nReleasingVolumeDivider = v29 / v28 + 1; + sample.m_nReleasingVolumeDivider = samplesToPlay / samplesPerFrame + 1; } memcpy(&m_asActiveSamples[j], &sample, sizeof(tSound)); if (!m_asActiveSamples[j].m_bIs2D) { @@ -970,20 +928,11 @@ cAudioManager::ProcessActiveQueues() #ifndef EXTERNAL_3D_SOUND m_asActiveSamples[j].m_nOffset = ComputePan(m_asActiveSamples[j].m_fDistance, &position); #endif - } #ifdef EXTERNAL_3D_SOUND - if (m_bDoubleVolume) { - emittingVol = 2 * Min(63, m_asActiveSamples[j].m_nEmittingVolume); - } else { - emittingVol = m_asActiveSamples[j].m_nEmittingVolume; - } + emittingVol = m_bDoubleVolume ? 2 * Min(63, m_asActiveSamples[j].m_nEmittingVolume) : m_asActiveSamples[j].m_nEmittingVolume; #else - if (m_bDoubleVolume) { - emittingVol = 2 * Min(63, m_asActiveSamples[j].m_nVolume); - } else { - emittingVol = m_asActiveSamples[j].m_nVolume; - } + emittingVol = m_bDoubleVolume ? 2 * Min(63, m_asActiveSamples[j].m_nVolume) : m_asActiveSamples[j].m_nVolume; #endif if (SampleManager.InitialiseChannel(j, m_asActiveSamples[j].m_nSampleIndex, m_asActiveSamples[j].m_nBankIndex)) { SampleManager.SetChannelFrequency(j, m_asActiveSamples[j].m_nFrequency); @@ -999,13 +948,12 @@ cAudioManager::ProcessActiveQueues() #ifdef EXTERNAL_3D_SOUND if (m_asActiveSamples[j].m_bIs2D) { uint8 offset = m_asActiveSamples[j].m_nOffset; - if (offset == 63) { + if (offset == 63) x = 0.f; - } else if (offset >= 63) { + else if (offset >= 63) x = (offset - 63) * 1000.f / 63; - } else { + else x = -(63 - offset) * 1000.f / 63; - } usedX = x; usedY = 0.f; usedZ = 0.f; diff --git a/src/core/common.h b/src/core/common.h index da162762..3f69a394 100644 --- a/src/core/common.h +++ b/src/core/common.h @@ -292,6 +292,8 @@ extern wchar *AllocUnicode(const char*src); #define Clamp(v, low, high) ((v)<(low) ? (low) : (v)>(high) ? (high) : (v)) +#define Clamp2(v, center, radius) ((v) > (center) ? Min(v, center + radius) : Max(v, center - radius)) + inline float sq(float x) { return x*x; } #define SQR(x) ((x) * (x)) From 8759c2edf0f4bbd850b1837d1e571f5326792a2a Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 12 Aug 2021 15:01:58 +0300 Subject: [PATCH 282/314] Sync fixes from miami --- src/audio/AudioLogic.cpp | 2 +- src/audio/AudioManager.cpp | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index cf54ce53..043b3941 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -1367,7 +1367,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * #ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, 85); SampleManager.SetChannel3DPosition(CHANNEL_PLAYER_VEHICLE_ENGINE, pos.x, pos.y, pos.z); - SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.f, 12.5f); + SampleManager.SetChannel3DDistances(CHANNEL_PLAYER_VEHICLE_ENGINE, 50.0f, 50.0f * 0.25f); #else SampleManager.SetChannelVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, ComputeVolume(85, 50.0f, m_sQueueSample.m_fDistance)); diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 8063cfd6..6bd51fa6 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -546,7 +546,7 @@ cAudioManager::ComputePan(float dist, CVector *vec) index = Min(63, ABS(index)); if (vec->x > 0.f) - return Max(20, 63 - PanTable[index]); + return Max(20, 63 - (int8)PanTable[index]); return Min(107, PanTable[index] + 63); } @@ -820,10 +820,10 @@ cAudioManager::ProcessActiveQueues() m_asActiveSamples[i].m_bIsProcessed = FALSE; } - for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; ++i) { + for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) { tSound &sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; if (sample.m_nSampleIndex != NO_SAMPLE) { - for (int32 j = 0; j < m_nActiveSamples; ++j) { + for (int32 j = 0; j < m_nActiveSamples; j++) { if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && sample.m_nCounter == m_asActiveSamples[j].m_nCounter && sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { if (sample.m_nLoopCount) { @@ -906,16 +906,16 @@ cAudioManager::ProcessActiveQueues() m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE; } } - for (uint8 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; ++i) { + for (uint8 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) { tSound &sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { - if (sample.m_nCounter > 255 && sample.m_nLoopCount && sample.m_nLoopsRemaining) { - --sample.m_nLoopsRemaining; + if (sample.m_nCounter > 255 && sample.m_nLoopCount != 0 && sample.m_nLoopsRemaining != 0) { + sample.m_nLoopsRemaining--; sample.m_nReleasingVolumeDivider = 1; } else { - for (uint8 j = 0; j < m_nActiveSamples; ++j) { + for (uint8 j = 0; j < m_nActiveSamples; j++) { if (!m_asActiveSamples[j].m_bIsProcessed) { - if (sample.m_nLoopCount) { + if (sample.m_nLoopCount != 0) { samplesPerFrame = sample.m_nFrequency / m_nTimeSpent; samplesToPlay = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); if (samplesPerFrame == 0) @@ -939,7 +939,7 @@ cAudioManager::ProcessActiveQueues() #ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(j, emittingVol); #else - SampleManager.SetChannelVolume(j, m_asActiveSamples[j].m_nVolume); + SampleManager.SetChannelVolume(j, emittingVol); SampleManager.SetChannelPan(j, m_asActiveSamples[j].m_nOffset); #endif SampleManager.SetChannelLoopPoints(j, m_asActiveSamples[j].m_nLoopStart, m_asActiveSamples[j].m_nLoopEnd); @@ -951,12 +951,12 @@ cAudioManager::ProcessActiveQueues() if (offset == 63) x = 0.f; else if (offset >= 63) - x = (offset - 63) * 1000.f / 63; + x = (offset - 63) * 1000.0f / 63; else - x = -(63 - offset) * 1000.f / 63; + x = -(63 - offset) * 1000.0f / 63; usedX = x; - usedY = 0.f; - usedZ = 0.f; + usedY = 0.0f; + usedZ = 0.0f; m_asActiveSamples[j].m_fSoundIntensity = 100000.0f; } else { usedX = position.x; @@ -991,7 +991,7 @@ cAudioManager::ClearRequestedQueue() void cAudioManager::ClearActiveSamples() { - for (int32 i = 0; i < m_nActiveSamples; i++) { + for (uint8 i = 0; i < m_nActiveSamples; i++) { m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE; m_asActiveSamples[i].m_nCounter = 0; m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; From b7c7c883d7414ef270db10f5ff7cc224a8ac41a4 Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 12 Aug 2021 23:07:54 +0200 Subject: [PATCH 283/314] map memory usage high default --- src/core/Frontend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 62c16cd9..71be5475 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -138,7 +138,7 @@ int8 CMenuManager::m_nDisplayMSAALevel = 0; #endif #ifdef NO_ISLAND_LOADING -int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW; +int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_HIGH; #endif #ifdef GAMEPAD_MENU From df89e5091e7addaa87b8815dda00309b0de49a06 Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 13 Aug 2021 00:16:16 +0300 Subject: [PATCH 284/314] Revert "map memory usage high default" This reverts commit b7c7c883d7414ef270db10f5ff7cc224a8ac41a4. --- src/core/Frontend.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 71be5475..62c16cd9 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -138,7 +138,7 @@ int8 CMenuManager::m_nDisplayMSAALevel = 0; #endif #ifdef NO_ISLAND_LOADING -int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_HIGH; +int8 CMenuManager::m_PrefsIslandLoading = ISLAND_LOADING_LOW; #endif #ifdef GAMEPAD_MENU From 747ae0427950b0f0883b46db4f85ca34a684536f Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 15 Aug 2021 03:29:49 +0300 Subject: [PATCH 285/314] Fix premature .ini saving leading to missing bindings --- src/core/Frontend.cpp | 3 --- src/skel/glfw/glfw.cpp | 10 ++++++---- src/skel/win/win.cpp | 10 ++++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 62c16cd9..b5d12d58 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -3812,9 +3812,6 @@ CMenuManager::LoadSettings() if (LoadINISettings()) { LoadINIControllerSettings(); } - // if no re3.ini, create it, or update it with new values - SaveINISettings(); - SaveINIControllerSettings(); #endif m_PrefsVsync = m_PrefsVsyncDisp; diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 8d3fc7d7..44f0c83a 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1935,10 +1935,12 @@ main(int argc, char *argv[]) #ifdef LOAD_INI_SETTINGS LoadINIControllerSettings(); - if (connectedPadButtons != 0) { - ControlsManager.InitDefaultControlConfigJoyPad(connectedPadButtons); - SaveINIControllerSettings(); - } + if (connectedPadButtons != 0) + ControlsManager.InitDefaultControlConfigJoyPad(connectedPadButtons); // add (connected-saved) amount of new button assignments on top of ours + + // these have 2 purposes: creating .ini at the start, and adding newly introduced settings to old .ini at the start + SaveINISettings(); + SaveINIControllerSettings(); #endif } diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index 01e56701..95ac28aa 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -2181,10 +2181,12 @@ WinMain(HINSTANCE instance, #ifdef LOAD_INI_SETTINGS LoadINIControllerSettings(); - if (connectedPadButtons != 0) { - ControlsManager.InitDefaultControlConfigJoyPad(connectedPadButtons); - SaveINIControllerSettings(); - } + if (connectedPadButtons != 0) + ControlsManager.InitDefaultControlConfigJoyPad(connectedPadButtons); // add (connected-saved) amount of new button assignments on top of ours + + // these have 2 purposes: creating .ini at the start, and adding newly introduced settings to old .ini at the start + SaveINISettings(); + SaveINIControllerSettings(); #endif } From 886650a887e6bfdd1929d654a21efbfe52b47591 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 15 Aug 2021 13:12:10 +0300 Subject: [PATCH 286/314] Fix CW build --- codewarrior/re3.mcp.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/codewarrior/re3.mcp.xml b/codewarrior/re3.mcp.xml index ca20ec2a..9a41471b 100644 --- a/codewarrior/re3.mcp.xml +++ b/codewarrior/re3.mcp.xml @@ -1569,6 +1569,13 @@ Text + + Name + ScriptDebug.cpp + Windows + Text + Debug + Name Script.cpp @@ -4533,6 +4540,11 @@ SceneEdit.h Windows + + Name + ScriptDebug.cpp + Windows + Name Script.cpp @@ -7806,6 +7818,13 @@ Text + + Name + ScriptDebug.cpp + Windows + Text + Debug + Name Script.cpp @@ -10770,6 +10789,11 @@ SceneEdit.h Windows + + Name + ScriptDebug.cpp + Windows + Name Script.cpp @@ -13192,6 +13216,12 @@ SceneEdit.h Windows + + Debug + Name + ScriptDebug.cpp + Windows + Debug Name From 5ddd0649e30178964c4acaca3938c446655f0cb9 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 15 Aug 2021 13:14:16 +0300 Subject: [PATCH 287/314] Fix cAudioManager::ProcessVehicleEngine return type, document PS2 changes, rename Sound Intensity --- src/audio/AudioCollision.cpp | 4 +- src/audio/AudioLogic.cpp | 464 ++++++++++++++++++----------------- src/audio/AudioManager.cpp | 23 +- src/audio/AudioManager.h | 19 +- 4 files changed, 266 insertions(+), 244 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 0cfa4103..1b72764e 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -266,7 +266,7 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; + m_sQueueSample.m_SoundIntensity = CollisionSoundIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -295,7 +295,7 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = CollisionSoundIntensity; + m_sQueueSample.m_SoundIntensity = CollisionSoundIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 043b3941..2a683409 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -689,7 +689,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) SET_EMITTING_VOLUME((uint8)emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = rainOnVehicleIntensity; + m_sQueueSample.m_SoundIntensity = rainOnVehicleIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -741,7 +741,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_fSoundIntensity = reverseGearIntensity; + m_sQueueSample.m_SoundIntensity = reverseGearIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; @@ -791,7 +791,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -843,7 +843,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; @@ -894,7 +894,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; @@ -907,7 +907,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) return TRUE; } -void +bool8 cAudioManager::ProcessVehicleEngine(cVehicleParams& params) { const float SOUND_INTENSITY = 50.0f; @@ -930,18 +930,18 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) veh = params.m_pVehicle; if (playerVeh == veh && veh->GetStatus() == STATUS_WRECKED) { SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); - return; + return TRUE; } if (veh->bEngineOn) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); automobile = (CAutomobile *)params.m_pVehicle; if (params.m_nIndex == DODO) { ProcessCesna(params); - return; + return TRUE; } if (FindPlayerVehicle() == veh) { ProcessPlayersVehicleEngine(params, automobile); - return; + return TRUE; } transmission = params.m_pTransmission; if (transmission != nil) { @@ -1040,7 +1040,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1048,7 +1048,9 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) AddSampleToRequestedQueue(); } } + return TRUE; } + return FALSE; } void @@ -1100,7 +1102,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 samp SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -1143,7 +1145,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; - m_sQueueSample.m_fSoundIntensity = 200.0f; + m_sQueueSample.m_SoundIntensity = 200.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -1163,7 +1165,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; - m_sQueueSample.m_fSoundIntensity = 90.0f; + m_sQueueSample.m_SoundIntensity = 90.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -1488,7 +1490,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1578,7 +1580,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 5.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1659,7 +1661,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 7.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1702,7 +1704,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) SET_EMITTING_VOLUME(60); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1747,7 +1749,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 1.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = TRUE; @@ -1791,7 +1793,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; + m_sQueueSample.m_SoundIntensity = 30.0f; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; @@ -1844,7 +1846,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = engineDamageIntensity; + m_sQueueSample.m_SoundIntensity = engineDamageIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1877,7 +1879,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) SET_EMITTING_VOLUME(60); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = 40.0f; + m_sQueueSample.m_SoundIntensity = 40.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -1903,8 +1905,8 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) static uint8 iWheelIndex = 82; static uint8 CrunchOffset = 0; - for (int i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { - noReflections = 0; + for (uint16 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { + noReflections = FALSE; m_sQueueSample.m_bRequireReflection = FALSE; event = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; switch (event) { @@ -1944,7 +1946,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bRequireReflection = TRUE; break; } @@ -1982,7 +1984,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bRequireReflection = TRUE; break; } @@ -1996,7 +1998,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK); m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; } break; case SOUND_CAR_JUMP: { const float SOUND_INTENSITY = 35.0f; @@ -2015,7 +2017,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) } m_sQueueSample.m_nReleasingVolumeModificator = 6; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; break; } case SOUND_CAR_ENGINE_START: { @@ -2028,7 +2030,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_STARTER); m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bRequireReflection = TRUE; break; } @@ -2041,7 +2043,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 10 + 30; break; @@ -2059,7 +2061,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[0] % 15 + 55; break; @@ -2072,7 +2074,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SUSPENSION_SLOW_MOVE_LOOP); m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_nReleasingVolumeDivider = 7; noReflections = TRUE; maxDist = SQR(SOUND_INTENSITY); @@ -2088,7 +2090,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[1] % 15 + 55; break; @@ -2109,7 +2111,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = (7000.f * relVol) + 6000; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; emittingVol = (55.f * relVol); maxDist = SQR(SOUND_INTENSITY); break; @@ -2122,7 +2124,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BOAT_THUMB_OFF) + RandomDisplacement(600); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; emittingVol = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i]; maxDist = SQR(SOUND_INTENSITY); break; @@ -2136,7 +2138,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 11025; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 5.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[1] % 20 + 70; break; @@ -2153,7 +2155,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; emittingVol = (37.f * vol * 2500.0f / 96.0f) + 90; maxDist = SQR(SOUND_INTENSITY); noReflections = TRUE; @@ -2167,7 +2169,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BOMB_BEEP); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); m_sQueueSample.m_bRequireReflection = TRUE; emittingVol = 60; @@ -2181,7 +2183,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_LAND_WHEELS); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 25 + 75; break; @@ -2200,7 +2202,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; break; } case SOUND_WEAPON_HIT_VEHICLE: { @@ -2212,7 +2214,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[3] % 20 + 90; break; @@ -2228,7 +2230,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ARM_BOMB); m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bRequireReflection = TRUE; emittingVol = 50; maxDist = SQR(SOUND_INTENSITY); @@ -2258,7 +2260,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 16000; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); m_sQueueSample.m_bRequireReflection = TRUE; emittingVol = m_anRandomTable[4] % 20 + 90; @@ -2272,7 +2274,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PED_CRUNCH_1) + RandomDisplacement(600); m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 40.0f; + m_sQueueSample.m_SoundIntensity = 40.0f; ++CrunchOffset; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 20 + 55; @@ -2293,7 +2295,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) / 2; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); break; } @@ -2302,7 +2304,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) } if (params.m_fDistance < maxDist) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { if (noReflections) { m_sQueueSample.m_nLoopCount = 0; @@ -2351,7 +2353,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2373,7 +2375,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2417,7 +2419,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = intensity; + m_sQueueSample.m_SoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2456,7 +2458,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = intensity; + m_sQueueSample.m_SoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2511,7 +2513,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = intensity; + m_sQueueSample.m_SoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2553,7 +2555,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) SET_EMITTING_VOLUME(vol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2608,7 +2610,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_fSoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; + m_sQueueSample.m_SoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2782,7 +2784,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2813,7 +2815,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2843,7 +2845,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2873,7 +2875,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; @@ -2903,7 +2905,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 12; m_sQueueSample.m_nOffset = 0; @@ -2983,7 +2985,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = 7.0f; + m_sQueueSample.m_SoundIntensity = 7.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; @@ -3087,7 +3089,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) } m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS SET_EMITTING_VOLUME(emittingVol); @@ -3114,7 +3116,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 17); m_sQueueSample.m_nReleasingVolumeModificator = 2; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; + m_sQueueSample.m_SoundIntensity = 30.0f; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS SET_EMITTING_VOLUME(emittingVol); @@ -3176,7 +3178,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) ++iSound; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; + m_sQueueSample.m_SoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3194,7 +3196,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 22000; m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; + m_sQueueSample.m_SoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3219,7 +3221,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; maxDist = SQR(50); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3241,7 +3243,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 80.0f; + m_sQueueSample.m_SoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3259,7 +3261,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3281,7 +3283,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 80.0f; + m_sQueueSample.m_SoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3299,7 +3301,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 80.0f; + m_sQueueSample.m_SoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3317,7 +3319,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3339,7 +3341,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 90.0f; + m_sQueueSample.m_SoundIntensity = 90.0f; maxDist = SQR(90); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3360,7 +3362,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency = (10 * m_sQueueSample.m_nEntityIndex & 2047) + SampleManager.GetSampleBaseFrequency(SFX_FLAMETHROWER_LEFT); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 0; SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) @@ -3419,7 +3421,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; + m_sQueueSample.m_SoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3439,7 +3441,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 80.0f; + m_sQueueSample.m_SoundIntensity = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3460,7 +3462,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3478,7 +3480,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); m_sQueueSample.m_nReleasingVolumeModificator = 7; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 30.0f; + m_sQueueSample.m_SoundIntensity = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3495,7 +3497,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nFrequency = RandomDisplacement(1400) + 20000; m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = 40.0f; + m_sQueueSample.m_SoundIntensity = 40.0f; maxDist = SQR(40); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS @@ -3514,10 +3516,10 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) iSound = 21; if (params.m_fDistance < maxDist) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { if (stereo) { - if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_fSoundIntensity) { + if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_SoundIntensity) { m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nOffset = 0; } else { @@ -6065,10 +6067,10 @@ cPedComments::Process() case SFX_POLICE_HELI_1: case SFX_POLICE_HELI_2: case SFX_POLICE_HELI_3: - AudioManager.m_sQueueSample.m_fSoundIntensity = 400.0f; + AudioManager.m_sQueueSample.m_SoundIntensity = 400.0f; break; default: - AudioManager.m_sQueueSample.m_fSoundIntensity = 50.0f; + AudioManager.m_sQueueSample.m_SoundIntensity = 50.0f; break; } AudioManager.m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -6133,14 +6135,14 @@ cAudioManager::ProcessExplosions(int32 explosion) case EXPLOSION_ROCKET: case EXPLOSION_BARREL: case EXPLOSION_TANK_GRENADE: - m_sQueueSample.m_fSoundIntensity = 400.0f; + m_sQueueSample.m_SoundIntensity = 400.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_2; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; break; case EXPLOSION_MOLOTOV: - m_sQueueSample.m_fSoundIntensity = 200.0f; + m_sQueueSample.m_SoundIntensity = 200.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_3; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 19000; m_sQueueSample.m_nReleasingVolumeModificator = 0; @@ -6148,14 +6150,14 @@ cAudioManager::ProcessExplosions(int32 explosion) break; case EXPLOSION_MINE: case EXPLOSION_HELI_BOMB: - m_sQueueSample.m_fSoundIntensity = 300.0f; + m_sQueueSample.m_SoundIntensity = 300.0f; m_sQueueSample.m_nSampleIndex = SFX_ROCKET_LEFT; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 12347; m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; break; default: - m_sQueueSample.m_fSoundIntensity = 400.0f; + m_sQueueSample.m_SoundIntensity = 400.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_1; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; if (type == EXPLOSION_HELI) @@ -6167,9 +6169,9 @@ cAudioManager::ProcessExplosions(int32 explosion) pos = CExplosion::GetExplosionPosition(i); m_sQueueSample.m_vecPos = *pos; distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -6201,7 +6203,7 @@ cAudioManager::ProcessFires(int32) if (entity) { switch (entity->GetType()) { case ENTITY_TYPE_BUILDING: - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; emittingVol = 100; m_sQueueSample.m_nFrequency = 8 * SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE) / 10; @@ -6209,7 +6211,7 @@ cAudioManager::ProcessFires(int32) m_sQueueSample.m_nReleasingVolumeModificator = 6; break; case ENTITY_TYPE_PED: - m_sQueueSample.m_fSoundIntensity = 25.0f; + m_sQueueSample.m_SoundIntensity = 25.0f; m_sQueueSample.m_nSampleIndex = SFX_PED_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE); emittingVol = 60; @@ -6217,7 +6219,7 @@ cAudioManager::ProcessFires(int32) m_sQueueSample.m_nReleasingVolumeModificator = 10; break; default: - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); m_sQueueSample.m_nFrequency += i * (m_sQueueSample.m_nFrequency / 64); @@ -6225,7 +6227,7 @@ cAudioManager::ProcessFires(int32) m_sQueueSample.m_nReleasingVolumeModificator = 8; } } else { - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); m_sQueueSample.m_nFrequency += i * (m_sQueueSample.m_nFrequency / 64); @@ -6234,9 +6236,9 @@ cAudioManager::ProcessFires(int32) } m_sQueueSample.m_vecPos = gFireManager.m_aFires[i].m_vecPos; distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -6270,13 +6272,13 @@ cAudioManager::ProcessWaterCannon(int32) #ifdef FIX_BUGS m_sQueueSample.m_nVolume = ComputeVolume(50, SOUND_INTENSITY, m_sQueueSample.m_fDistance); #else - m_sQueueSample.m_nVolume = ComputeVolume(50, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(50, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); #endif if (m_sQueueSample.m_nVolume != 0) { #ifdef FIX_BUGS - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; #else - m_sQueueSample.m_fSoundIntensity = SQR(SOUND_INTENSITY); + m_sQueueSample.m_SoundIntensity = SQR(SOUND_INTENSITY); #endif m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -6344,7 +6346,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) } case SCRIPT_SOUND_GATE_START_CLUNK: case SCRIPT_SOUND_GATE_STOP_CLUNK: - m_sQueueSample.m_fSoundIntensity = 40.0f; + m_sQueueSample.m_SoundIntensity = 40.0f; m_sQueueSample.m_nSampleIndex = SFX_COL_GATE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; if (sound == SCRIPT_SOUND_GATE_START_CLUNK) @@ -6360,7 +6362,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SCRIPT_SOUND_BULLET_HIT_GROUND_1: case SCRIPT_SOUND_BULLET_HIT_GROUND_2: case SCRIPT_SOUND_BULLET_HIT_GROUND_3: - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = m_anRandomTable[iSound % 5] % 3 + SFX_BULLET_WALL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -6374,7 +6376,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_2: if (!SampleManager.IsSampleBankLoaded(SFX_BANK_TRAIN)) return; - m_sQueueSample.m_fSoundIntensity = 80.0f; + m_sQueueSample.m_SoundIntensity = 80.0f; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_STATION_ANNOUNCE; m_sQueueSample.m_nBankIndex = SFX_BANK_TRAIN; emittingVolume = MAX_VOLUME; @@ -6384,7 +6386,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_PAYPHONE_RINGING: - m_sQueueSample.m_fSoundIntensity = 80.0f; + m_sQueueSample.m_SoundIntensity = 80.0f; m_sQueueSample.m_nSampleIndex = SFX_PHONE_RING; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 80; @@ -6395,7 +6397,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bRequireReflection = FALSE; break; case SCRIPT_SOUND_GLASS_BREAK_L: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_GLASS_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 70; @@ -6405,7 +6407,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_GLASS_BREAK_S: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_GLASS_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 60; @@ -6415,7 +6417,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_GLASS_CRACK: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_GLASS_CRACK; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 70; @@ -6426,7 +6428,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_bRequireReflection = TRUE; break; case SCRIPT_SOUND_GLASS_LIGHT_BREAK: - m_sQueueSample.m_fSoundIntensity = 55.0f; + m_sQueueSample.m_SoundIntensity = 55.0f; m_sQueueSample.m_nSampleIndex = (m_anRandomTable[4] & 3) + SFX_GLASS_SHARD_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 19000; @@ -6436,7 +6438,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) emittingVolume = RandomDisplacement(11) + 25; break; case SCRIPT_SOUND_BOX_DESTROYED_1: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_WOODEN_BOX_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; @@ -6447,7 +6449,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_BOX_DESTROYED_2: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_CARDBOARD_BOX_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; @@ -6458,7 +6460,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_METAL_COLLISION: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = m_anRandomTable[3] % 5 + SFX_COL_CAR_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -6470,7 +6472,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) emittingVolume = m_anRandomTable[2] % 30 + 70; break; case SCRIPT_SOUND_TIRE_COLLISION: - m_sQueueSample.m_fSoundIntensity = 60.0f; + m_sQueueSample.m_SoundIntensity = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_TYRE_BUMP; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -6510,7 +6512,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nFrequency = RandomDisplacement(750) + 18000; m_sQueueSample.m_nReleasingVolumeModificator = 15; } - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; @@ -6520,7 +6522,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_2; m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 11000; m_sQueueSample.m_nReleasingVolumeModificator = 18; - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; @@ -6531,9 +6533,9 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; @@ -6554,7 +6556,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_PARTY_1_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_1; emittingVolume = MAX_VOLUME; @@ -6564,7 +6566,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_1_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_1; emittingVolume = MAX_VOLUME; @@ -6574,7 +6576,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_2_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_2; emittingVolume = MAX_VOLUME; @@ -6584,7 +6586,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_2_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_2; emittingVolume = MAX_VOLUME; @@ -6594,7 +6596,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_3_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_3; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_3; emittingVolume = MAX_VOLUME; @@ -6604,7 +6606,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_3_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_3; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_3; emittingVolume = MAX_VOLUME; @@ -6614,7 +6616,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_4_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_4; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_4; emittingVolume = MAX_VOLUME; @@ -6624,7 +6626,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_4_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_4; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_4; emittingVolume = MAX_VOLUME; @@ -6634,7 +6636,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_5_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_5; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_5; emittingVolume = MAX_VOLUME; @@ -6644,7 +6646,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_5_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_5; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_5; emittingVolume = MAX_VOLUME; @@ -6654,7 +6656,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_6_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_6; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_6; emittingVolume = MAX_VOLUME; @@ -6664,7 +6666,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_6_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_6; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_6; emittingVolume = MAX_VOLUME; @@ -6674,7 +6676,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_7_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_7; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_7; emittingVolume = MAX_VOLUME; @@ -6684,7 +6686,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_7_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_7; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_7; emittingVolume = MAX_VOLUME; @@ -6694,7 +6696,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_8_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_8; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_8; emittingVolume = MAX_VOLUME; @@ -6704,7 +6706,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_8_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_8; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_8; emittingVolume = MAX_VOLUME; @@ -6714,7 +6716,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_9_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_9; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_9; emittingVolume = MAX_VOLUME; @@ -6724,7 +6726,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_9_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_9; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_9; emittingVolume = MAX_VOLUME; @@ -6734,7 +6736,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_10_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_10; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_10; emittingVolume = MAX_VOLUME; @@ -6744,7 +6746,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_10_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_10; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_10; emittingVolume = MAX_VOLUME; @@ -6754,7 +6756,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_11_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_11; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_11; emittingVolume = MAX_VOLUME; @@ -6764,7 +6766,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_11_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_11; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_11; emittingVolume = MAX_VOLUME; @@ -6774,7 +6776,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_12_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_12; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_12; emittingVolume = MAX_VOLUME; @@ -6784,7 +6786,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_12_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_12; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_12; emittingVolume = MAX_VOLUME; @@ -6794,7 +6796,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_13_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_RAGGA; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_RAGGA; emittingVolume = MAX_VOLUME; @@ -6804,7 +6806,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_13_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_RAGGA; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_RAGGA; emittingVolume = MAX_VOLUME; @@ -6814,7 +6816,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_1_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_1; emittingVolume = MAX_VOLUME; @@ -6824,7 +6826,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_1_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_1; emittingVolume = MAX_VOLUME; @@ -6834,7 +6836,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_2_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_2; emittingVolume = MAX_VOLUME; @@ -6844,7 +6846,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_2_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_2; emittingVolume = MAX_VOLUME; @@ -6862,7 +6864,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessSawMillScriptObject(sound); return; case SCRIPT_SOUND_38: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_DOG_FOOD_FACTORY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOG_FOOD_FACTORY; emittingVolume = 110; @@ -6872,7 +6874,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_39: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_DOG_FOOD_FACTORY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOG_FOOD_FACTORY; emittingVolume = 110; @@ -6886,7 +6888,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessLaunderetteScriptObject(sound); return; case SCRIPT_SOUND_CHINATOWN_RESTAURANT_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_CHINATOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_CHINATOWN; emittingVolume = 110; @@ -6896,7 +6898,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CHINATOWN_RESTAURANT_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_CHINATOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_CHINATOWN; emittingVolume = 110; @@ -6906,7 +6908,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CIPRIANI_RESAURANT_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_ITALY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_ITALY; emittingVolume = 110; @@ -6916,7 +6918,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CIPRIANI_RESAURANT_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_ITALY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_ITALY; emittingVolume = 110; @@ -6926,7 +6928,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_46_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_1; emittingVolume = 110; @@ -6936,7 +6938,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_47_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_1; emittingVolume = 110; @@ -6946,7 +6948,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_MARCO_BISTRO_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_2; emittingVolume = 110; @@ -6956,7 +6958,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_MARCO_BISTRO_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_2; emittingVolume = 110; @@ -6986,7 +6988,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessHomeScriptObject(sound); return; case SCRIPT_SOUND_FRANKIE_PIANO: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_PIANO_BAR_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PIANO_BAR; emittingVolume = MAX_VOLUME; @@ -6996,7 +6998,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_1_LOOP: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_1; emittingVolume = MAX_VOLUME; @@ -7016,7 +7018,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessPornCinema(sound); return; case SCRIPT_SOUND_BANK_ALARM_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_BANK_ALARM_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_BANK_ALARM; emittingVolume = 90; @@ -7026,7 +7028,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_BANK_ALARM_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_BANK_ALARM_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_BANK_ALARM; emittingVolume = 90; @@ -7036,7 +7038,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_BALL_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BALL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_POLICE_BALL; emittingVolume = MAX_VOLUME; @@ -7046,7 +7048,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_BALL_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BALL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_POLICE_BALL; emittingVolume = MAX_VOLUME; @@ -7056,7 +7058,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_LOOP_INDUSTRIAL_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RAVE_INDUSTRIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_INDUSTRIAL; emittingVolume = MAX_VOLUME; @@ -7066,7 +7068,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_LOOP_INDUSTRIAL_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RAVE_INDUSTRIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_INDUSTRIAL; emittingVolume = MAX_VOLUME; @@ -7081,7 +7083,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) return; case SCRIPT_SOUND_RAVE_1_LOOP_S: case SCRIPT_SOUND_RAVE_2_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RAVE_COMMERCIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_COMMERCIAL; emittingVolume = MAX_VOLUME; @@ -7092,7 +7094,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) break; case SCRIPT_SOUND_RAVE_1_LOOP_L: case SCRIPT_SOUND_RAVE_2_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RAVE_COMMERCIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_COMMERCIAL; emittingVolume = MAX_VOLUME; @@ -7102,7 +7104,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_3_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RAVE_SUBURBAN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_SUBURBAN; emittingVolume = MAX_VOLUME; @@ -7112,7 +7114,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_3_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RAVE_SUBURBAN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_SUBURBAN; emittingVolume = MAX_VOLUME; @@ -7122,7 +7124,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PRETEND_FIRE_LOOP: - m_sQueueSample.m_fSoundIntensity = 50.0f; + m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 80; @@ -7136,9 +7138,9 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; @@ -7168,47 +7170,47 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_PORN_1_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_1; sample = SFX_PORN_1_GROAN_1; - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; break; case SCRIPT_SOUND_PORN_CINEMA_1_L: case SCRIPT_SOUND_MISTY_SEX_L: m_sQueueSample.m_nSampleIndex = SFX_PORN_1_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_1; sample = SFX_PORN_1_GROAN_1; - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; case SCRIPT_SOUND_PORN_CINEMA_2_S: m_sQueueSample.m_nSampleIndex = SFX_PORN_2_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_2; sample = SFX_PORN_2_GROAN_1; - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; break; case SCRIPT_SOUND_PORN_CINEMA_2_L: m_sQueueSample.m_nSampleIndex = SFX_PORN_2_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_2; sample = SFX_PORN_2_GROAN_1; - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; case SCRIPT_SOUND_PORN_CINEMA_3_S: m_sQueueSample.m_nSampleIndex = SFX_PORN_3_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_3; - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; sample = SFX_PORN_3_GROAN_1; break; case SCRIPT_SOUND_PORN_CINEMA_3_L: m_sQueueSample.m_nSampleIndex = SFX_PORN_3_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_3; - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; sample = SFX_PORN_3_GROAN_1; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); if (sound != SCRIPT_SOUND_MISTY_SEX_S && sound != SCRIPT_SOUND_MISTY_SEX_L) { - m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 0; @@ -7227,7 +7229,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) time = CTimer::GetTimeInMilliseconds(); if (time > gPornNextTime) { - m_sQueueSample.m_nVolume = ComputeVolume(90, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(90, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + sample; @@ -7260,15 +7262,15 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_WORK_SHOP_LOOP_S: case SCRIPT_SOUND_WORK_SHOP_LOOP_L: - m_sQueueSample.m_fSoundIntensity = 20.0f; + m_sQueueSample.m_SoundIntensity = 20.0f; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_WORKSHOP_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_WORKSHOP; @@ -7298,15 +7300,15 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_SAWMILL_LOOP_S: case SCRIPT_SOUND_SAWMILL_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; @@ -7325,7 +7327,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) } time = CTimer::GetTimeInMilliseconds(); if (time > gSawMillNextTime) { - m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_CUT_WOOD; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; @@ -7355,15 +7357,15 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_LAUNDERETTE_LOOP_S: case SCRIPT_SOUND_LAUNDERETTE_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; default: return; } float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(45, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(45, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; @@ -7380,7 +7382,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_SONG_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; @@ -7410,15 +7412,15 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_SHOP_LOOP_S: case SCRIPT_SOUND_SHOP_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_SHOP_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SHOP; @@ -7437,7 +7439,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) } time = CTimer::GetTimeInMilliseconds(); if (time > gShopNextTime) { - m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + SFX_SHOP_TILL_1; @@ -7469,18 +7471,18 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) if (time > gAirportNextTime) { switch (sound) { case SCRIPT_SOUND_AIRPORT_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_AIRPORT_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_AIRPORT_ANNOUNCEMENT_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_AIRPORT; @@ -7513,19 +7515,19 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) if (time > gCinemaNextTime) { switch (sound) { case SCRIPT_SOUND_CINEMA_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_CINEMA_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 90 + 30; - m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = iSound % 3 + SFX_CINEMA_BASS_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CINEMA; @@ -7561,19 +7563,19 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) if (time > gDocksNextTime) { switch (sound) { case SCRIPT_SOUND_DOCKS_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_DOCKS_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 60 + 40; - m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = SFX_DOCKS_FOGHORN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOCKS; @@ -7608,19 +7610,19 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) if (time > gHomeNextTime) { switch (sound) { case SCRIPT_SOUND_HOME_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_HOME_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } dist = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (dist < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (dist < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(dist); rand = m_anRandomTable[0] % 30 + 40; - m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nSampleIndex = m_anRandomTable[0] % 5 + SFX_HOME_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_HOME; @@ -7655,16 +7657,16 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) if (time > gCellNextTime) { switch (sound) { case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_S: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_L: - m_sQueueSample.m_fSoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); if (m_FrameCounter & 1) sampleIndex = (m_anRandomTable[1] & 3) + SFX_FIGHT_1; @@ -7672,7 +7674,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) sampleIndex = (m_anRandomTable[3] & 1) + SFX_BAT_HIT_LEFT; m_sQueueSample.m_nSampleIndex = sampleIndex; emittingVol = m_anRandomTable[0] % 50 + 55; - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7705,21 +7707,23 @@ cAudioManager::ProcessWeather(int32 id) uint8 vol; static uint8 iSound = 0; - if (m_asAudioEntities[id].m_AudioEvents && m_asAudioEntities[id].m_awAudioEvent[0] == SOUND_LIGHTNING) { - if (m_asAudioEntities[id].m_afVolume[0] >= 10.f) { - m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_1; - m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA; - m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 4000; - vol = (m_asAudioEntities[id].m_afVolume[0] - 10.f) + 40; - } else { + if (m_asAudioEntities[id].m_AudioEvents > 0 && m_asAudioEntities[id].m_awAudioEvent[0] == SOUND_LIGHTNING) { + if (m_asAudioEntities[id].m_afVolume[0] < 10.f) { m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_2; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 4000; - vol = (m_asAudioEntities[id].m_afVolume[0]) + 35; + vol = (m_asAudioEntities[id].m_afVolume[0] * 10.0f * 0.1f); + vol += 35; + } else { + m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_1; + m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA; + m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 4000; + vol = ((m_asAudioEntities[id].m_afVolume[0] - 10.0f) * 10.0f * 0.1f); + vol += 40; } m_sQueueSample.m_nVolume = vol; if (TheCamera.SoundDistUp < 20.f) - m_sQueueSample.m_nVolume /= 2; + m_sQueueSample.m_nVolume <<= 1; if (iSound == 4) iSound = 0; m_sQueueSample.m_nCounter = iSound++; @@ -7966,14 +7970,14 @@ cAudioManager::ProcessCrane() SET_EMITTING_VOLUME(100); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_fSoundIntensity = intensity; + m_sQueueSample.m_SoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); } - if (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents) { + if (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents > 0) { m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2); @@ -8002,7 +8006,7 @@ cAudioManager::ProcessProjectiles() switch (CProjectileInfo::GetProjectileInfo(i)->m_eWeaponType) { case WEAPONTYPE_ROCKETLAUNCHER: emittingVol = MAX_VOLUME; - m_sQueueSample.m_fSoundIntensity = rocketLauncherIntensity; + m_sQueueSample.m_SoundIntensity = rocketLauncherIntensity; m_sQueueSample.m_nSampleIndex = SFX_ROCKET_FLY; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_FLY); @@ -8010,7 +8014,7 @@ cAudioManager::ProcessProjectiles() break; case WEAPONTYPE_MOLOTOV: emittingVol = molotovVolume; - m_sQueueSample.m_fSoundIntensity = molotovIntensity; + m_sQueueSample.m_SoundIntensity = molotovIntensity; m_sQueueSample.m_nSampleIndex = SFX_PED_ON_FIRE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = 32 * SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE) / 25; @@ -8023,9 +8027,9 @@ cAudioManager::ProcessProjectiles() m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_vecPos = CProjectileInfo::ms_apProjectile[i]->GetPosition(); float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_fSoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume != 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bIs2D = FALSE; @@ -8113,7 +8117,7 @@ cAudioManager::ProcessGarages() SET_EMITTING_VOLUME(90); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bRequireReflection = FALSE; AddSampleToRequestedQueue(); @@ -8143,7 +8147,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nReleasingVolumeModificator = 4; SET_EMITTING_VOLUME(60); m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_fSoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReverbFlag = TRUE; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -8187,7 +8191,7 @@ cAudioManager::ProcessFireHydrant() SET_EMITTING_VOLUME(40); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = intensity; + m_sQueueSample.m_SoundIntensity = intensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; @@ -8246,7 +8250,7 @@ cAudioManager::ProcessBridgeWarning() SET_EMITTING_VOLUME(100); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = 450.0f; + m_sQueueSample.m_SoundIntensity = 450.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = FALSE; @@ -8272,7 +8276,7 @@ cAudioManager::ProcessBridgeMotor() SET_EMITTING_VOLUME(MAX_VOLUME); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = bridgeIntensity; + m_sQueueSample.m_SoundIntensity = bridgeIntensity; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = FALSE; @@ -8306,7 +8310,7 @@ cAudioManager::ProcessBridgeOneShots() SET_EMITTING_VOLUME(MAX_VOLUME); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_fSoundIntensity = bridgeIntensity; + m_sQueueSample.m_SoundIntensity = bridgeIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_bRequireReflection = FALSE; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 6bd51fa6..14769c10 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -114,7 +114,7 @@ cAudioManager::Service() if (m_bIsInitialised) { m_nPreviousUserPause = m_nUserPause; m_nUserPause = CTimer::GetIsUserPaused(); -#ifdef GTA_PC +#if GTA_VERSION >= GTA3_PC_10 UpdateReflections(); #endif ServiceSoundEffects(); @@ -657,7 +657,7 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] = sample; } -#ifdef GTA_PC +#if GTA_VERSION >= GTA3_PC_10 void cAudioManager::AddReflectionsToRequestedQueue() { @@ -667,12 +667,12 @@ cAudioManager::AddReflectionsToRequestedQueue() for (uint32 i = 0; i < ARRAY_SIZE(m_afReflectionsDistances); i++) { reflectionDistance = m_afReflectionsDistances[i]; - if (reflectionDistance > 0.0f && reflectionDistance < 100.f && reflectionDistance < m_sQueueSample.m_fSoundIntensity) { + if (reflectionDistance > 0.0f && reflectionDistance < 100.f && reflectionDistance < m_sQueueSample.m_SoundIntensity) { m_sQueueSample.m_nLoopsRemaining = (reflectionDistance * 500.f / 1029.f); if (m_sQueueSample.m_nLoopsRemaining > 5) { m_sQueueSample.m_fDistance = m_afReflectionsDistances[i]; SET_EMITTING_VOLUME(emittingVolume); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_fSoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > emittingVolume / 16) { m_sQueueSample.m_nCounter += (i + 1) * 256; if (m_sQueueSample.m_nLoopCount) { @@ -884,7 +884,7 @@ cAudioManager::ProcessActiveQueues() TranslateEntity(&sample.m_vecPos, &position); #ifdef EXTERNAL_3D_SOUND SampleManager.SetChannel3DPosition(j, position.x, position.y, position.z); - SampleManager.SetChannel3DDistances(j, sample.m_fSoundIntensity, 0.25f * sample.m_fSoundIntensity); + SampleManager.SetChannel3DDistances(j, sample.m_SoundIntensity, 0.25f * sample.m_SoundIntensity); #else sample.m_nOffset = ComputePan(sample.m_fDistance, &position); SampleManager.SetChannelPan(j, sample.m_nOffset); @@ -957,14 +957,14 @@ cAudioManager::ProcessActiveQueues() usedX = x; usedY = 0.0f; usedZ = 0.0f; - m_asActiveSamples[j].m_fSoundIntensity = 100000.0f; + m_asActiveSamples[j].m_SoundIntensity = 100000.0f; } else { usedX = position.x; usedY = position.y; usedZ = position.z; } SampleManager.SetChannel3DPosition(j, usedX, usedY, usedZ); - SampleManager.SetChannel3DDistances(j, m_asActiveSamples[j].m_fSoundIntensity, 0.25f * m_asActiveSamples[j].m_fSoundIntensity); + SampleManager.SetChannel3DDistances(j, m_asActiveSamples[j].m_SoundIntensity, 0.25f * m_asActiveSamples[j].m_SoundIntensity); #endif SampleManager.StartChannel(j); } @@ -1012,16 +1012,21 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_nLoopEnd = -1; #endif m_asActiveSamples[i].m_fSpeedMultiplier = 0.0f; - m_asActiveSamples[i].m_fSoundIntensity = 200.0f; + m_asActiveSamples[i].m_SoundIntensity = 200.0f; m_asActiveSamples[i].m_nOffset = 63; m_asActiveSamples[i].m_bReleasingSoundFlag = FALSE; +#if GTA_VERSION < GTA3_PC_10 + m_asActiveSamples[i].unk = -3; +#endif m_asActiveSamples[i].m_nCalculatedVolume = 0; m_asActiveSamples[i].m_nReleasingVolumeDivider = 0; m_asActiveSamples[i].m_nVolumeChange = -1; m_asActiveSamples[i].m_vecPos = CVector(0.0f, 0.0f, 0.0f); m_asActiveSamples[i].m_bReverbFlag = FALSE; +#if GTA_VERSION >= GTA3_PC_10 m_asActiveSamples[i].m_nLoopsRemaining = 0; m_asActiveSamples[i].m_bRequireReflection = FALSE; +#endif } } @@ -1048,7 +1053,7 @@ cAudioManager::AdjustSamplesVolume() tSound *pSample = &m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; if (!pSample->m_bIs2D) - pSample->m_nEmittingVolume = ComputeEmittingVolume(pSample->m_nEmittingVolume, pSample->m_fSoundIntensity, pSample->m_fDistance); + pSample->m_nEmittingVolume = ComputeEmittingVolume(pSample->m_nEmittingVolume, pSample->m_SoundIntensity, pSample->m_fDistance); } } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 74092c51..79eb08d6 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -8,7 +8,11 @@ class tSound { public: int32 m_nEntityIndex; +#if GTA_VERSION >= GTA3_PC_10 int32 m_nCounter; +#else + uint8 m_nCounter; +#endif int32 m_nSampleIndex; uint8 m_nBankIndex; bool8 m_bIs2D; @@ -25,16 +29,25 @@ public: uint8 m_nEmittingVolume; #endif float m_fSpeedMultiplier; - float m_fSoundIntensity; +#if GTA_VERSION >= GTA3_PC_10 + float m_SoundIntensity; +#else + uint32 m_SoundIntensity; +#endif bool8 m_bReleasingSoundFlag; CVector m_vecPos; bool8 m_bReverbFlag; +#if GTA_VERSION >= GTA3_PC_10 uint8 m_nLoopsRemaining; bool8 m_bRequireReflection; // Used for oneshots +#endif uint8 m_nOffset; int32 m_nReleasingVolumeDivider; bool8 m_bIsProcessed; bool8 m_bLoopEnded; +#if GTA_VERSION < GTA3_PC_10 + int32 unk; // only on PS2, seems unused +#endif int32 m_nCalculatedVolume; int8 m_nVolumeChange; }; @@ -276,7 +289,7 @@ public: void InterrogateAudioEntities(); // inlined on PS2 void AddSampleToRequestedQueue(); void AddDetailsToRequestedOrderList(uint8 sample); // inlined on PS2 -#ifdef GTA_PC +#if GTA_VERSION >= GTA3_PC_10 void AddReflectionsToRequestedQueue(); void UpdateReflections(); #endif @@ -312,7 +325,7 @@ public: void ProcessModelCarEngine(cVehicleParams ¶ms); bool8 ProcessVehicleRoadNoise(cVehicleParams ¶ms); bool8 ProcessWetRoadNoise(cVehicleParams ¶ms); - void ProcessVehicleEngine(cVehicleParams ¶ms); + bool8 ProcessVehicleEngine(cVehicleParams ¶ms); void UpdateGasPedalAudio(CAutomobile *automobile); // inlined on PS2 void PlayerJustGotInCar(); void PlayerJustLeftCar(); From 854ee12d9d6af1fb7390cbfbec59630d2c397673 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sun, 15 Aug 2021 14:11:20 +0300 Subject: [PATCH 288/314] Fix ifdef for audio reflection members --- src/audio/AudioManager.cpp | 2 +- src/audio/AudioManager.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 14769c10..78b56550 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -735,7 +735,7 @@ cAudioManager::UpdateReflections() m_afReflectionsDistances[4] = 50.0f; } } -#endif // GTA_PC +#endif // GTA_VERSION >= GTA3_PC_10 void cAudioManager::AddReleasingSounds() diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 79eb08d6..d5f66fd0 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -222,7 +222,7 @@ public: tAudioEntity m_asAudioEntities[NUM_AUDIOENTITIES]; int32 m_anAudioEntityIndices[NUM_AUDIOENTITIES]; int32 m_nAudioEntitiesTotal; -#ifdef GTA_PC +#if GTA_VERSION >= GTA3_PC_10 CVector m_avecReflectionsPos[NUM_AUDIO_REFLECTIONS]; float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; #endif From 5fe04940be9419f87a624de917b0fae319761e1f Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 15 Aug 2021 18:27:30 +0300 Subject: [PATCH 289/314] lil fix --- src/control/CarAI.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/control/CarAI.cpp b/src/control/CarAI.cpp index d2a82121..a894731b 100644 --- a/src/control/CarAI.cpp +++ b/src/control/CarAI.cpp @@ -510,8 +510,11 @@ void CCarAI::TellOccupantsToLeaveCar(CVehicle* pVehicle) { if (pVehicle->pDriver){ pVehicle->pDriver->SetObjective(OBJECTIVE_LEAVE_CAR, pVehicle); - if (pVehicle->GetModelIndex() == MI_AMBULAN) + switch (pVehicle->GetModelIndex()) { + case MI_AMBULAN: pVehicle->pDriver->Say(SOUND_PED_LEAVE_VEHICLE); + break; + } } int timer = 100; for (int i = 0; i < pVehicle->m_nNumMaxPassengers; i++){ From c48f6e9bda41490cdb433a39c12b76e99dcbc65a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 15 Aug 2021 18:35:47 +0300 Subject: [PATCH 290/314] actual fix --- src/control/CarAI.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/control/CarAI.cpp b/src/control/CarAI.cpp index a894731b..7c883691 100644 --- a/src/control/CarAI.cpp +++ b/src/control/CarAI.cpp @@ -511,6 +511,13 @@ void CCarAI::TellOccupantsToLeaveCar(CVehicle* pVehicle) if (pVehicle->pDriver){ pVehicle->pDriver->SetObjective(OBJECTIVE_LEAVE_CAR, pVehicle); switch (pVehicle->GetModelIndex()) { + case MI_FIRETRUCK: + case MI_FBICAR: + case MI_ENFORCER: + case MI_CHOPPER: + case MI_RHINO: + case MI_POLICE: + break; case MI_AMBULAN: pVehicle->pDriver->Say(SOUND_PED_LEAVE_VEHICLE); break; From 4b4aefe339e5d90230ea86e85b6c35bc51fed050 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Sun, 15 Aug 2021 18:40:38 +0300 Subject: [PATCH 291/314] bruh --- src/control/CarAI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/control/CarAI.cpp b/src/control/CarAI.cpp index 7c883691..ffde7aba 100644 --- a/src/control/CarAI.cpp +++ b/src/control/CarAI.cpp @@ -514,7 +514,7 @@ void CCarAI::TellOccupantsToLeaveCar(CVehicle* pVehicle) case MI_FIRETRUCK: case MI_FBICAR: case MI_ENFORCER: - case MI_CHOPPER: + case MI_BARRACKS: case MI_RHINO: case MI_POLICE: break; From 97aeb85d84734ee768795756455e9e86903486bd Mon Sep 17 00:00:00 2001 From: aap Date: Mon, 16 Aug 2021 00:25:47 +0200 Subject: [PATCH 292/314] some CAutomobile fixes --- src/vehicles/Automobile.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 0e1a3e42..7b3a8921 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -995,19 +995,19 @@ CAutomobile::ProcessControl(void) }else{ if(GetModelIndex() == MI_MRWHOOP){ if(Pads[0].bHornHistory[Pads[0].iCurrHornHistory] && - !Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+4) % 5]){ + !Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+CPad::HORNHISTORY_SIZE-1) % CPad::HORNHISTORY_SIZE]){ m_bSirenOrAlarm = !m_bSirenOrAlarm; printf("m_bSirenOrAlarm toggled to %d\n", m_bSirenOrAlarm); } }else if(UsesSiren(GetModelIndex())){ if(Pads[0].bHornHistory[Pads[0].iCurrHornHistory]){ - if(Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+4) % 5] && - Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+3) % 5]) + if(Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+CPad::HORNHISTORY_SIZE-1) % CPad::HORNHISTORY_SIZE] && + Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+CPad::HORNHISTORY_SIZE-2) % CPad::HORNHISTORY_SIZE]) m_nCarHornTimer = 1; else m_nCarHornTimer = 0; - }else if(Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+4) % 5] && - !Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+1) % 5]){ + }else if(Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+CPad::HORNHISTORY_SIZE-1) % CPad::HORNHISTORY_SIZE] && + !Pads[0].bHornHistory[(Pads[0].iCurrHornHistory+1) % CPad::HORNHISTORY_SIZE]){ m_nCarHornTimer = 0; m_bSirenOrAlarm = !m_bSirenOrAlarm; }else @@ -3496,9 +3496,9 @@ CAutomobile::dmgDrawCarCollidingParticles(const CVector &pos, float amount) nil, CGeneral::GetRandomNumberInRange(0.02f, 0.08f), CVehicleModelInfo::ms_vehicleColourTable[m_currentColour1], - CGeneral::GetRandomNumberInRange(-40.0f, 40.0f), + CGeneral::GetRandomNumberInRange(-40, 40), 0, - CGeneral::GetRandomNumberInRange(0.0f, 4.0f)); + CGeneral::GetRandomNumberInRange(0, 4)); } void @@ -3955,7 +3955,9 @@ CAutomobile::SetUpWheelColModel(CColModel *colModel) return true; } -// this probably isn't used in III yet +float fBurstForceMult = 0.03f; + +// this isn't used in III yet void CAutomobile::BurstTyre(uint8 wheel) { @@ -3975,8 +3977,8 @@ CAutomobile::BurstTyre(uint8 wheel) CCarCtrl::SwitchVehicleToRealPhysics(this); } - ApplyMoveForce(GetRight() * m_fMass * CGeneral::GetRandomNumberInRange(-0.03f, 0.03f)); - ApplyTurnForce(GetRight() * m_fTurnMass * CGeneral::GetRandomNumberInRange(-0.03f, 0.03f), GetForward()); + ApplyMoveForce(GetRight() * m_fMass * CGeneral::GetRandomNumberInRange(-fBurstForceMult, fBurstForceMult)); + ApplyTurnForce(GetRight() * m_fTurnMass * CGeneral::GetRandomNumberInRange(-fBurstForceMult, fBurstForceMult), GetForward()); } } From ab03fbb6c83ad7f9afeb287e0898fd05805ec565 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 16 Aug 2021 09:59:08 +0300 Subject: [PATCH 293/314] Make UpdateReflections a bit more binary exact + small code changes to sync with miami --- src/audio/AudioLogic.cpp | 4 ++-- src/audio/AudioManager.cpp | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 2a683409..9e36f709 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -7722,7 +7722,7 @@ cAudioManager::ProcessWeather(int32 id) vol += 40; } m_sQueueSample.m_nVolume = vol; - if (TheCamera.SoundDistUp < 20.f) + if (TheCamera.SoundDistUp < 20.0f) m_sQueueSample.m_nVolume <<= 1; if (iSound == 4) iSound = 0; @@ -7741,7 +7741,7 @@ cAudioManager::ProcessWeather(int32 id) if (CWeather::Rain > 0.0f && (!CCullZones::CamNoRain() || !CCullZones::PlayerNoRain())) { m_sQueueSample.m_nSampleIndex = SFX_RAIN; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAIN); - m_sQueueSample.m_nVolume = (int32)(25.f * CWeather::Rain); + m_sQueueSample.m_nVolume = (uint8)(25.0f * CWeather::Rain); m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nReleasingVolumeModificator = 0; diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 78b56550..9b1337c9 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -694,18 +694,20 @@ cAudioManager::AddReflectionsToRequestedQueue() void cAudioManager::UpdateReflections() { - const CVector &camPos = TheCamera.GetPosition(); + CVector camPos; CColPoint colpoint; CEntity *ent; if (m_FrameCounter % 8 == 0) { + camPos = TheCamera.GetPosition(); m_avecReflectionsPos[0] = camPos; - m_avecReflectionsPos[0].y += 50.f; + m_avecReflectionsPos[0].y += 50.0f; if (CWorld::ProcessLineOfSight(camPos, m_avecReflectionsPos[0], colpoint, ent, true, false, false, true, false, true, true)) m_afReflectionsDistances[0] = Distance(camPos, colpoint.point); else m_afReflectionsDistances[0] = 50.0f; } else if ((m_FrameCounter + 1) % 8 == 0) { + camPos = TheCamera.GetPosition(); m_avecReflectionsPos[1] = camPos; m_avecReflectionsPos[1].y -= 50.0f; if (CWorld::ProcessLineOfSight(camPos, m_avecReflectionsPos[1], colpoint, ent, true, false, false, true, false, true, true)) @@ -713,6 +715,7 @@ cAudioManager::UpdateReflections() else m_afReflectionsDistances[1] = 50.0f; } else if ((m_FrameCounter + 2) % 8 == 0) { + camPos = TheCamera.GetPosition(); m_avecReflectionsPos[2] = camPos; m_avecReflectionsPos[2].x -= 50.0f; if (CWorld::ProcessLineOfSight(camPos, m_avecReflectionsPos[2], colpoint, ent, true, false, false, true, false, true, true)) @@ -720,6 +723,7 @@ cAudioManager::UpdateReflections() else m_afReflectionsDistances[2] = 50.0f; } else if ((m_FrameCounter + 3) % 8 == 0) { + camPos = TheCamera.GetPosition(); m_avecReflectionsPos[3] = camPos; m_avecReflectionsPos[3].x += 50.0f; if (CWorld::ProcessLineOfSight(camPos, m_avecReflectionsPos[3], colpoint, ent, true, false, false, true, false, true, true)) @@ -727,6 +731,7 @@ cAudioManager::UpdateReflections() else m_afReflectionsDistances[3] = 50.0f; } else if ((m_FrameCounter + 4) % 8 == 0) { + camPos = TheCamera.GetPosition(); m_avecReflectionsPos[4] = camPos; m_avecReflectionsPos[4].z += 50.0f; if (CWorld::ProcessVerticalLine(camPos, m_avecReflectionsPos[4].z, colpoint, ent, true, false, false, false, true, false, nil)) @@ -763,7 +768,7 @@ cAudioManager::AddReleasingSounds() } } if (!toProcess[i]) { - if (sample.m_nCounter <= 255 || !sample.m_nLoopsRemaining) { + if (sample.m_nCounter <= 255 || sample.m_nLoopsRemaining == 0) { if (sample.m_nReleasingVolumeDivider == 0) continue; if (sample.m_nLoopCount == 0) { From bcb5b4f94d57d4b2ca65c4972f1d09b11a421b49 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 16 Aug 2021 10:29:44 +0300 Subject: [PATCH 294/314] Remove not needed entry from config --- src/audio/AudioManager.h | 4 ++-- src/core/config.h | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index d5f66fd0..20b7d0c9 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -223,8 +223,8 @@ public: int32 m_anAudioEntityIndices[NUM_AUDIOENTITIES]; int32 m_nAudioEntitiesTotal; #if GTA_VERSION >= GTA3_PC_10 - CVector m_avecReflectionsPos[NUM_AUDIO_REFLECTIONS]; - float m_afReflectionsDistances[NUM_AUDIO_REFLECTIONS]; + CVector m_avecReflectionsPos[MAX_REFLECTIONS]; + float m_afReflectionsDistances[MAX_REFLECTIONS]; #endif cAudioScriptObjectManager m_sAudioScriptObjectManager; cPedComments m_sPedComments; diff --git a/src/core/config.h b/src/core/config.h index 063745b8..1e9bf6d2 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -132,7 +132,6 @@ enum Config { NUM_SOUNDS_SAMPLES_BANKS = 2, NUM_AUDIOENTITIES = 200, - NUM_AUDIO_REFLECTIONS = 5, NUM_SCRIPT_MAX_ENTITIES = 40, NUM_GARAGE_STORED_CARS = 6, From 076b3245397d32e478199ecf81b7550cf83c8980 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Mon, 16 Aug 2021 14:21:51 +0300 Subject: [PATCH 295/314] Fix ped comments playing at full volume behind the wall --- src/audio/AudioLogic.cpp | 17 ++++++++++++----- src/audio/AudioManager.h | 5 ++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 9e36f709..d3f38345 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -3622,7 +3622,10 @@ cAudioManager::SetupPedComments(cPedParams ¶ms, uint16 sound) pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_vecPos = m_sQueueSample.m_vecPos; pedComment.m_fDistance = m_sQueueSample.m_fDistance; - pedComment.m_bVolume = m_sQueueSample.m_nVolume; + pedComment.m_nVolume = m_sQueueSample.m_nVolume; +#if defined(EXTERNAL_3D_SOUND) && defined(FIX_BUGS) + pedComment.m_nEmittingVolume = emittingVol; +#endif m_sPedComments.Add(&pedComment); } } @@ -6010,7 +6013,7 @@ cPedComments::Add(tPedComment *com) if (m_nCommentsInBank[m_nActiveBank] >= NUM_PED_COMMENTS_SLOTS) { index = m_nIndexMap[m_nActiveBank][NUM_PED_COMMENTS_SLOTS - 1]; - if (m_asPedComments[m_nActiveBank][index].m_bVolume > com->m_bVolume) + if (m_asPedComments[m_nActiveBank][index].m_nVolume > com->m_nVolume) return; } else { index = m_nCommentsInBank[m_nActiveBank]++; @@ -6021,7 +6024,7 @@ cPedComments::Add(tPedComment *com) uint32 i = 0; if (index != 0) { for (i = 0; i < index; i++) { - if (m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][i]].m_bVolume < m_asPedComments[m_nActiveBank][index].m_bVolume) { + if (m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][i]].m_nVolume < m_asPedComments[m_nActiveBank][index].m_nVolume) { break; } } @@ -6052,7 +6055,7 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_nBankIndex = SFX_BANK_PED_COMMENTS; AudioManager.m_sQueueSample.m_nReleasingVolumeModificator = 3; - AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_bVolume; + AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nVolume; AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; AudioManager.m_sQueueSample.m_nLoopCount = 1; #ifndef GTA_PS2 @@ -6060,8 +6063,12 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_nLoopEnd = -1; #endif // !GTA_PS2 #ifdef EXTERNAL_3D_SOUND + #ifdef FIX_BUGS + AudioManager.m_sQueueSample.m_nEmittingVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nEmittingVolume; + #else AudioManager.m_sQueueSample.m_nEmittingVolume = MAX_VOLUME; -#endif // !EXTERNAL_3D_SOUND + #endif // FIX_BUGS +#endif // EXTERNAL_3D_SOUND AudioManager.m_sQueueSample.m_fSpeedMultiplier = 3.0f; switch (sampleIndex) { case SFX_POLICE_HELI_1: diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 20b7d0c9..7934996e 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -78,8 +78,11 @@ public: int32 m_nEntityIndex; CVector m_vecPos; float m_fDistance; - uint8 m_bVolume; + uint8 m_nVolume; int8 m_nProcess; +#if defined(EXTERNAL_3D_SOUND) && defined(FIX_BUGS) + uint8 m_nEmittingVolume; +#endif }; VALIDATE_SIZE(tPedComment, 28); From 79856dac2567d0950679d6961c0e540797d132db Mon Sep 17 00:00:00 2001 From: erorcun Date: Mon, 16 Aug 2021 21:06:06 +0300 Subject: [PATCH 296/314] Fix impossible bullets & turn speed on heavy guns --- src/peds/Ped.cpp | 8 +++-- src/peds/PedFight.cpp | 14 +++++++++ src/peds/PlayerPed.cpp | 41 +++++++++++++++++++------ src/peds/PlayerPed.h | 6 ++++ src/weapons/Weapon.cpp | 70 +++++++++++++++++++++++++++++++++++------- 5 files changed, 116 insertions(+), 23 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 96c1d094..6b28dcb0 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -1120,8 +1120,12 @@ CPed::ClearAimFlag(void) #endif } - if (IsPlayer()) + if (IsPlayer()) { ((CPlayerPed*)this)->m_fFPSMoveHeading = 0.0f; +#ifdef FREE_CAM + ((CPlayerPed*)this)->m_bFreeAimActive = false; +#endif + } } void @@ -1361,7 +1365,7 @@ CPed::CalculateNewVelocity(void) } #ifdef FREE_CAM - if (!TheCamera.Cams[0].Using3rdPersonMouseCam()) + if (!CCamera::bFreeCam || !TheCamera.Cams[0].Using3rdPersonMouseCam()) #endif if (IsPlayer() && m_nPedState == PED_ATTACK) headAmount /= 4.0f; diff --git a/src/peds/PedFight.cpp b/src/peds/PedFight.cpp index 13d3930c..03d5c755 100644 --- a/src/peds/PedFight.cpp +++ b/src/peds/PedFight.cpp @@ -311,9 +311,14 @@ CPed::SetAttack(CEntity *victim) m_pLookTarget->RegisterReference((CEntity **) &m_pLookTarget); m_pSeekTarget->RegisterReference((CEntity **) &m_pSeekTarget); } + if (m_pLookTarget) { SetAimFlag(m_pLookTarget); +#ifdef FREE_CAM + } else if (this != FindPlayerPed() || !((CPlayerPed*)this)->m_bFreeAimActive) { +#else } else { +#endif SetAimFlag(m_fRotationCur); if (FindPlayerPed() == this && TheCamera.Cams[0].Using3rdPersonMouseCam()) @@ -736,6 +741,15 @@ CPed::Attack(void) weaponAnimAssoc->SetCurrentTime(ourWeapon->m_fAnimLoopEnd); weaponAnimAssoc->flags &= ~ASSOC_RUNNING; SetPointGunAt(m_pPointGunAt); +#endif +#ifdef FREE_CAM + } else if (IsPlayer() && ((CPlayerPed*)this)->m_bFreeAimActive && GetWeapon()->m_eWeaponState != WEAPONSTATE_RELOADING) { + float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation); + SetLookFlag(limitedCam, true); + SetAimFlag(limitedCam); + SetLookTimer(INT32_MAX); + SetPointGunAt(nil); + ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); #endif } else { ClearAimFlag(); diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index 416fb949..deb409b5 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -504,7 +504,7 @@ CPlayerPed::DoWeaponSmoothSpray(void) if (m_nPedState == PED_ATTACK && !m_pPointGunAt) { eWeaponType weapon = GetWeapon()->m_eWeaponType; #ifdef FREE_CAM - if(TheCamera.Cams[0].Using3rdPersonMouseCam() && (weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI)) + if(CCamera::bFreeCam && TheCamera.Cams[0].Using3rdPersonMouseCam() && (weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI)) return false; #endif if (weapon == WEAPONTYPE_FLAMETHROWER || weapon == WEAPONTYPE_COLT45 || weapon == WEAPONTYPE_UZI || weapon == WEAPONTYPE_SHOTGUN || @@ -1060,7 +1060,9 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) #ifdef FREE_CAM static int8 changedHeadingRate = 0; + static int8 pointedGun = 0; if (changedHeadingRate == 2) changedHeadingRate = 1; + if (pointedGun == 2) pointedGun = 1; // Rotate player/arm when shooting. We don't have auto-rotation anymore if (CCamera::m_bUseMouse3rdPerson && CCamera::bFreeCam && @@ -1071,22 +1073,28 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) if ((padUsed->GetTarget() && weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM)) || padUsed->GetWeapon()) { float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation); + m_cachedCamSource = TheCamera.Cams[TheCamera.ActiveCam].Source; + m_cachedCamFront = TheCamera.Cams[TheCamera.ActiveCam].Front; + m_cachedCamUp = TheCamera.Cams[TheCamera.ActiveCam].Up; + // On this one we can rotate arm. if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM)) { - if (!padUsed->GetWeapon()) { // making this State != ATTACK still stops it after attack. Re-start it immediately! - SetPointGunAt(nil); - bIsPointingGunAt = false; // to not stop after attack - } - + pointedGun = 2; + m_bFreeAimActive = true; SetLookFlag(limitedCam, true); SetAimFlag(limitedCam); #ifdef VC_PED_PORTS SetLookTimer(INT32_MAX); // removing this makes head move for real, but I experinced some bugs. #endif + ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); + if (m_nPedState != PED_ATTACK && m_nPedState != PED_AIM_GUN) { + // This is a seperate ped state just for pointing gun. Used for target button + SetPointGunAt(nil); + } } else { m_fRotationDest = limitedCam; changedHeadingRate = 2; - m_headingRate = 50.0f; + m_headingRate = 12.5f; // Anim. fix for shotgun, ak47 and m16 (we must finish rot. it quickly) if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM) && padUsed->WeaponJustDown()) { @@ -1102,14 +1110,27 @@ CPlayerPed::ProcessPlayerWeapon(CPad *padUsed) m_fRotationCur += (limitedRotDest - m_fRotationCur) / 2; } } - } else if (weaponInfo->IsFlagSet(WEAPONFLAG_CANAIM_WITHARM) && m_nPedState != PED_ATTACK) - ClearPointGunAt(); + } } } if (changedHeadingRate == 1) { changedHeadingRate = 0; RestoreHeadingRate(); } + if (pointedGun == 1) { + if (m_nPedState == PED_ATTACK) { + if (!padUsed->GetWeapon() && (m_pedIK.m_flags & CPedIK::GUN_POINTED_SUCCESSFULLY) == 0) { + float limitedCam = CGeneral::LimitRadianAngle(-TheCamera.Orientation); + + SetAimFlag(limitedCam); + ((CPlayerPed*)this)->m_fFPSMoveHeading = TheCamera.Find3rdPersonQuickAimPitch(); + m_bFreeAimActive = true; + } + } else { + pointedGun = 0; + ClearPointGunAt(); + } + } #endif if (padUsed->GetTarget() && m_nSelectedWepSlot == m_currentWeapon && m_nMoveState != PEDMOVE_SPRINT) { @@ -1188,7 +1209,7 @@ CPlayerPed::PlayerControlZelda(CPad *padUsed) } #ifdef FREE_CAM - if(TheCamera.Cams[0].Using3rdPersonMouseCam() && doSmoothSpray) { + if(CCamera::bFreeCam && TheCamera.Cams[0].Using3rdPersonMouseCam() && doSmoothSpray) { padMoveInGameUnit = 0.0f; smoothSprayWithoutMove = false; } diff --git a/src/peds/PlayerPed.h b/src/peds/PlayerPed.h index e8173c8c..796a6ca0 100644 --- a/src/peds/PlayerPed.h +++ b/src/peds/PlayerPed.h @@ -34,6 +34,12 @@ public: CPed *m_pPedAtSafePos[6]; float m_fWalkAngle; float m_fFPSMoveHeading; +#ifdef FREE_CAM + bool m_bFreeAimActive; + CVector m_cachedCamSource; + CVector m_cachedCamFront; + CVector m_cachedCamUp; +#endif CPlayerPed(); ~CPlayerPed(); diff --git a/src/weapons/Weapon.cpp b/src/weapons/Weapon.cpp index 6eab1a65..d6af8202 100644 --- a/src/weapons/Weapon.cpp +++ b/src/weapons/Weapon.cpp @@ -50,6 +50,29 @@ uint16 gReloadSampleTime[WEAPONTYPE_LAST_WEAPONTYPE] = 0 // HELICANNON }; +#ifdef FREE_CAM +static bool +Find3rdPersonCamTargetVectorFromCachedVectors(float dist, CVector pos, CVector& source, CVector& target, CVector camSource, CVector camFront, CVector camUp) +{ + if (CPad::GetPad(0)->GetLookBehindForPed()) { + source = pos; + target = dist * FindPlayerPed()->GetForward() + source; + return false; + } else { + float angleX = DEGTORAD((TheCamera.m_f3rdPersonCHairMultX - 0.5f) * 1.8f * 0.5f * TheCamera.Cams[TheCamera.ActiveCam].FOV * CDraw::GetAspectRatio()); + float angleY = DEGTORAD((0.5f - TheCamera.m_f3rdPersonCHairMultY) * 1.8f * 0.5f * TheCamera.Cams[TheCamera.ActiveCam].FOV); + source = camSource; + target = camFront; + target += camUp * Tan(angleY); + target += CrossProduct(camFront, camUp) * Tan(angleX); + target.Normalise(); + source += DotProduct(pos - source, target) * target; + target = dist * target + source; + return true; + } +} +#endif + CWeaponInfo * CWeapon::GetInfo() { @@ -591,17 +614,22 @@ CWeapon::FireInstantHit(CEntity *shooter, CVector *fireSource) else if ( shooter == FindPlayerPed() && TheCamera.Cams[0].Using3rdPersonMouseCam() ) { CVector src, trgt; - TheCamera.Find3rdPersonCamTargetVector(info->m_fRange, *fireSource, src, trgt); #ifdef FREE_CAM - CPed *shooterPed = (CPed *)shooter; - if((shooterPed->m_pedIK.m_flags & CPedIK::GUN_POINTED_SUCCESSFULLY) == 0) { - trgt.x = info->m_fRange; - trgt.y = 0.0f; - trgt.z = 0.0f; + if (CCamera::bFreeCam) { + CPlayerPed *shooterPed = (CPlayerPed*)shooter; + Find3rdPersonCamTargetVectorFromCachedVectors(info->m_fRange, *fireSource, src, trgt, shooterPed->m_cachedCamSource, shooterPed->m_cachedCamFront, shooterPed->m_cachedCamUp); + if ((shooterPed->m_pedIK.m_flags & CPedIK::GUN_POINTED_SUCCESSFULLY) == 0) { + trgt.x = info->m_fRange; + trgt.y = 0.0f; + trgt.z = 0.0f; - shooterPed->TransformToNode(trgt, PED_HANDR); - } + shooterPed->TransformToNode(trgt, PED_HANDR); + } + } else #endif + { + TheCamera.Find3rdPersonCamTargetVector(info->m_fRange, *fireSource, src, trgt); + } #ifdef FIX_BUGS // fix muzzleflash rotation @@ -1209,8 +1237,19 @@ CWeapon::FireShotgun(CEntity *shooter, CVector *fireSource) if ( shooter == FindPlayerPed() && TheCamera.Cams[0].Using3rdPersonMouseCam() ) { - TheCamera.Find3rdPersonCamTargetVector(1.0f, *fireSource, source, target); - CVector Left = CrossProduct(TheCamera.Cams[TheCamera.ActiveCam].Front, TheCamera.Cams[TheCamera.ActiveCam].Up); + CVector Left; +#ifdef FREE_CAM + if (CCamera::bFreeCam) { + CPlayerPed* shooterPed = (CPlayerPed*)shooter; + Find3rdPersonCamTargetVectorFromCachedVectors(1.0f, *fireSource, source, target, shooterPed->m_cachedCamSource, shooterPed->m_cachedCamFront, shooterPed->m_cachedCamUp); + Left = CrossProduct(shooterPed->m_cachedCamFront, shooterPed->m_cachedCamUp); + } + else +#endif + { + TheCamera.Find3rdPersonCamTargetVector(1.0f, *fireSource, source, target); + Left = CrossProduct(TheCamera.Cams[TheCamera.ActiveCam].Front, TheCamera.Cams[TheCamera.ActiveCam].Up); + } float f = float(i - 2) * (DEGTORAD(7.5f) / 2); target = f * Left + target - source; @@ -1525,7 +1564,16 @@ CWeapon::FireAreaEffect(CEntity *shooter, CVector *fireSource) if ( shooter == FindPlayerPed() && TheCamera.Cams[0].Using3rdPersonMouseCam() ) { - TheCamera.Find3rdPersonCamTargetVector(info->m_fRange, *fireSource, source, target); +#ifdef FREE_CAM + if (CCamera::bFreeCam) { + CPlayerPed *shooterPed = (CPlayerPed*)shooter; + Find3rdPersonCamTargetVectorFromCachedVectors(info->m_fRange, *fireSource, source, target, shooterPed->m_cachedCamSource, shooterPed->m_cachedCamFront, shooterPed->m_cachedCamUp); + } + else +#endif + { + TheCamera.Find3rdPersonCamTargetVector(info->m_fRange, *fireSource, source, target); + } float norm = (1.0f / info->m_fRange); dir = (target - source) * norm; } From e0ecbeee39e605cf2ee06e3632f4931d03606ce7 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sun, 15 Aug 2021 21:24:20 +0300 Subject: [PATCH 297/314] Auto-detect X11 dependency --- autoconf/LICENSE.txt | 27 ++++ autoconf/api.lua | 305 +++++++++++++++++++++++++++++++++++++++++ autoconf/autoconf.lua | 18 +++ autoconf/clang.lua | 27 ++++ autoconf/gcc.lua | 27 ++++ autoconf/msc.lua | 62 +++++++++ premake5.lua | 21 ++- src/CMakeLists.txt | 16 +++ src/skel/glfw/glfw.cpp | 6 +- 9 files changed, 501 insertions(+), 8 deletions(-) create mode 100644 autoconf/LICENSE.txt create mode 100644 autoconf/api.lua create mode 100644 autoconf/autoconf.lua create mode 100644 autoconf/clang.lua create mode 100644 autoconf/gcc.lua create mode 100644 autoconf/msc.lua diff --git a/autoconf/LICENSE.txt b/autoconf/LICENSE.txt new file mode 100644 index 00000000..eb1b1720 --- /dev/null +++ b/autoconf/LICENSE.txt @@ -0,0 +1,27 @@ +Copyright (c) 2016 Blizzard Entertainment and individual contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of Premake nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/autoconf/api.lua b/autoconf/api.lua new file mode 100644 index 00000000..064ea795 --- /dev/null +++ b/autoconf/api.lua @@ -0,0 +1,305 @@ +--- +-- Autoconfiguration. +-- Copyright (c) 2016 Blizzard Entertainment +-- Enhanced by re3 +--- +local p = premake +local autoconf = p.modules.autoconf +autoconf.cache = {} +autoconf.parameters = "" + + +--- +-- register autoconfigure api. +--- +p.api.register { + name = "autoconfigure", + scope = "config", + kind = "table" +} + +--- +-- Check for a particular include file. +-- +-- @cfg : Current config. +-- @variable : The variable to store the result, such as 'HAVE_STDINT_H'. +-- @filename : The header file to check for. +--- +function check_include(cfg, variable, filename) + local res = autoconf.cache_compile(cfg, variable, function () + p.outln('#include <' .. filename .. '>') + p.outln('int main(void) { return 0; }') + end) + + if res.value then + autoconf.set_value(cfg, variable, 1) + end +end + + +--- +-- Check for size of a particular type. +-- +-- @cfg : Current config. +-- @variable : The variable to use, such as 'SIZEOF_SIZE_T', this method will also add "'HAVE_' .. variable". +-- @type : The type to check. +-- @headers : An optional array of header files to include. +-- @defines : An optional array of defines to define. +--- +function check_type_size(cfg, variable, type, headers, defines) + check_include(cfg, 'HAVE_SYS_TYPES_H', 'sys/types.h') + check_include(cfg, 'HAVE_STDINT_H', 'stdint.h') + check_include(cfg, 'HAVE_STDDEF_H', 'stddef.h') + + local res = autoconf.cache_compile(cfg, variable .. cfg.platform, + function () + if cfg.autoconf['HAVE_SYS_TYPES_H'] then + p.outln('#include ') + end + + if cfg.autoconf['HAVE_STDINT_H'] then + p.outln('#include ') + end + + if cfg.autoconf['HAVE_STDDEF_H'] then + p.outln('#include ') + end + + autoconf.include_defines(defines) + autoconf.include_headers(headers) + p.outln("") + p.outln("#define SIZE (sizeof(" .. type .. "))") + p.outln("char info_size[] = {'I', 'N', 'F', 'O', ':', 's','i','z','e','[',") + p.outln(" ('0' + ((SIZE / 10000)%10)),") + p.outln(" ('0' + ((SIZE / 1000)%10)),") + p.outln(" ('0' + ((SIZE / 100)%10)),") + p.outln(" ('0' + ((SIZE / 10)%10)),") + p.outln(" ('0' + (SIZE %10)),") + p.outln(" ']', '\\0'};") + p.outln("") + p.outln("int main(int argc, char *argv[]) {") + p.outln(" int require = 0;") + p.outln(" require += info_size[argc];") + p.outln(" (void)argv;") + p.outln(" return require;") + p.outln("}") + end, + function (e) + -- if the compile step succeeded, we should have a binary with 'INFO:size[*****]' + -- somewhere in there. + local content = io.readfile(e.binary) + if content then + local size = string.find(content, 'INFO:size') + if size then + e.size = tonumber(string.sub(content, size+10, size+14)) + end + end + end + ) + + if res.size then + autoconf.set_value(cfg, 'HAVE_' .. variable, 1) + autoconf.set_value(cfg, variable, res.size) + end +end + + +--- +-- Check if the given struct or class has the specified member variable +-- +-- @cfg : current config. +-- @variable : variable to store the result. +-- @type : the name of the struct or class you are interested in +-- @member : the member which existence you want to check +-- @headers : an optional array of header files to include. +-- @defines : An optional array of defines to define. +--- +function check_struct_has_member(cfg, variable, type, member, headers, defines) + local res = autoconf.cache_compile(cfg, variable, function () + autoconf.include_defines(defines) + autoconf.include_headers(headers) + p.outln('int main(void) {') + p.outln(' (void)sizeof(((' .. type .. '*)0)->' .. member ..');') + p.outln(' return 0;') + p.outln('}') + end) + + if res.value then + autoconf.set_value(cfg, variable, 1) + end +end + + +--- +-- Check if a symbol exists as a function, variable, or macro +-- +-- @cfg : current config. +-- @variable : variable to store the result. +-- @symbol : The symbol to check for. +-- @headers : an optional array of header files to include. +-- @defines : An optional array of defines to define. +--- +function check_symbol_exists(cfg, variable, symbol, headers, defines) + local h = headers + local res = autoconf.cache_compile(cfg, variable, function () + autoconf.include_defines(defines) + autoconf.include_headers(headers) + p.outln('int main(int argc, char** argv) {') + p.outln(' (void)argv;') + p.outln('#ifndef ' .. symbol) + p.outln(' return ((int*)(&' .. symbol .. '))[argc];') + p.outln('#else') + p.outln(' (void)argc;') + p.outln(' return 0;') + p.outln('#endif') + p.outln('}') + end) + + if res.value then + autoconf.set_value(cfg, variable, 1) + end +end + + +--- +-- try compiling a piece of c/c++ +--- +function autoconf.try_compile(cfg, cpp) + local ts = autoconf.toolset(cfg) + if ts then + return ts.try_compile(cfg, cpp, autoconf.parameters) + else + p.warnOnce('autoconf', 'no toolset found, autoconf always failing.') + end +end + + +function autoconf.cache_compile(cfg, entry, func, post) + if not autoconf.cache[entry] then + local cpp = p.capture(func) + local res = autoconf.try_compile(cfg, cpp) + if res then + local e = { binary = res, value = true } + if post then + post(e) + end + autoconf.cache[entry] = e + else + autoconf.cache[entry] = { } + end + end + return autoconf.cache[entry] +end + + +--- +-- get the current configured toolset, or the default. +--- +function autoconf.toolset(cfg) + local ts = p.config.toolset(cfg) + if not ts then + local tools = { + -- Actually we always return nil on msc. see msc.lua + ['vs2010'] = p.tools.msc, + ['vs2012'] = p.tools.msc, + ['vs2013'] = p.tools.msc, + ['vs2015'] = p.tools.msc, + ['vs2017'] = p.tools.msc, + ['vs2019'] = p.tools.msc, + ['gmake'] = premake.tools.gcc, + ['gmake2'] = premake.tools.gcc, + ['codelite'] = premake.tools.gcc, + ['xcode4'] = premake.tools.clang, + } + ts = tools[_ACTION] + end + return ts +end + + +--- +-- store the value of the variable in the configuration +--- +function autoconf.set_value(cfg, variable, value) + cfg.autoconf[variable] = value +end + + +--- +-- write the cfg.autoconf table to the file +--- +function autoconf.writefile(cfg, filename) + if cfg.autoconf then + local file = io.open(filename, "w+") + for variable, value in pairs(cfg.autoconf) do + file:write('#define ' .. variable .. ' ' .. tostring(value) .. (_eol or '\n')) + end + file:close() + end +end + + +--- +-- Utility method to add a table of headers. +--- +function autoconf.include_headers(headers) + if headers ~= nil then + if type(headers) == "table" then + for _, v in ipairs(headers) do + p.outln('#include <' .. v .. '>') + end + else + p.outln('#include <' .. headers .. '>') + end + end +end + +function autoconf.include_defines(defines) + if defines ~= nil then + if type(defines) == "table" then + for _, v in ipairs(defines) do + p.outln('#define ' .. v) + end + else + p.outln('#define ' .. defines) + end + end +end + +--- +-- attach ourselfs to the running action. +--- +p.override(p.action, 'call', function (base, name) + local a = p.action.get(name) + + -- store the old callback. + local onBaseProject = a.onProject or a.onproject + + -- override it with our own. + a.onProject = function(prj) + -- go through each configuration, and call the setup configuration methods. + for cfg in p.project.eachconfig(prj) do + cfg.autoconf = {} + if cfg.autoconfigure then + verbosef('Running auto config steps for "%s/%s".', prj.name, cfg.name) + for file, func in pairs(cfg.autoconfigure) do + func(cfg) + + if not (file ~= "dontWrite") then + os.mkdir(cfg.objdir) + local filename = path.join(cfg.objdir, file) + autoconf.writefile(cfg, filename) + end + end + end + end + + -- then call the old onProject. + if onBaseProject then + onBaseProject(prj) + end + end + + -- now call the original action.call methods + base(name) +end) diff --git a/autoconf/autoconf.lua b/autoconf/autoconf.lua new file mode 100644 index 00000000..6c99f9da --- /dev/null +++ b/autoconf/autoconf.lua @@ -0,0 +1,18 @@ +--- +-- Autoconfiguration. +-- Copyright (c) 2016 Blizzard Entertainment +--- + local p = premake + + if not premake.modules.autoconf then + p.modules.autoconf = {} + p.modules.autoconf._VERSION = p._VERSION + + verbosef('Loading autoconf module...') + include('api.lua') + include('msc.lua') + include('clang.lua') + include('gcc.lua') + end + + return p.modules.autoconf diff --git a/autoconf/clang.lua b/autoconf/clang.lua new file mode 100644 index 00000000..fdb5f405 --- /dev/null +++ b/autoconf/clang.lua @@ -0,0 +1,27 @@ +--- +-- Autoconfiguration. +-- Copyright (c) 2016 Blizzard Entertainment +--- +local p = premake +local clang = p.tools.clang + +function clang.try_compile(cfg, text, parameters) + -- write the text to a temporary file. + local cppFile = path.join(cfg.objdir, "temp.cpp") + if not io.writefile(cppFile, text) then + return nil + end + + if parameters == nil then + parameters = "" + end + + local outFile = path.join(cfg.objdir, "temp.out") + + -- compile that text file. + if os.execute('clang "' .. cppFile .. '" ' .. parameters .. ' -o "' .. outFile ..'" &> /dev/null') then + return outFile + else + return nil + end +end diff --git a/autoconf/gcc.lua b/autoconf/gcc.lua new file mode 100644 index 00000000..34520139 --- /dev/null +++ b/autoconf/gcc.lua @@ -0,0 +1,27 @@ +--- +-- Autoconfiguration. +-- Copyright (c) 2016 Blizzard Entertainment +--- +local p = premake +local gcc = p.tools.gcc + +function gcc.try_compile(cfg, text, parameters) + -- write the text to a temporary file. + local cppFile = path.join(cfg.objdir, "temp.cpp") + if not io.writefile(cppFile, text) then + return nil + end + + if parameters == nil then + parameters = "" + end + + local outFile = path.join(cfg.objdir, "temp.out") + + -- compile that text file. + if os.execute('gcc "' .. cppFile .. '" ' .. parameters .. ' -o "' .. outFile ..'" &> /dev/null') then + return outFile + else + return nil + end +end diff --git a/autoconf/msc.lua b/autoconf/msc.lua new file mode 100644 index 00000000..b96a82ec --- /dev/null +++ b/autoconf/msc.lua @@ -0,0 +1,62 @@ +--- +-- Autoconfiguration. +-- Copyright (c) 2016 Blizzard Entertainment +--- +local p = premake +local msc = p.tools.msc + +-- "parameters" is unused, matter of fact this file is unused - re3 +function msc.try_compile(cfg, text, parameters) + + return nil +--[[ + -- write the text to a temporary file. + local cppFile = path.join(cfg.objdir, "temp.cpp") + if not io.writefile(cppFile, text) then + return nil + end + + -- write out a batch file. + local batch = p.capture(function () + p.outln('@echo off') + p.outln('SET mypath=%~dp0') + p.outln('pushd %mypath%') + + local map = { + vs2010 = 'VS100COMNTOOLS', + vs2012 = 'VS110COMNTOOLS', + vs2013 = 'VS120COMNTOOLS', + vs2015 = 'VS140COMNTOOLS', + vs2017 = 'VS141COMNTOOLS', + vs2019 = 'VS142COMNTOOLS', + } + + local a = map[_ACTION] + if a then + a = path.translate(os.getenv(a), '/') + a = path.join(a, '../../VC/vcvarsall.bat') + + if cfg.platform == 'x86' then + p.outln('call "' .. a .. '" > NUL') + else + p.outln('call "' .. a .. '" amd64 > NUL') + end + + p.outln('cl.exe /nologo temp.cpp > NUL') + else + error('Unsupported Visual Studio version: ' .. _ACTION) + end + end) + + local batchFile = path.join(cfg.objdir, "compile.bat") + if not io.writefile(batchFile, batch) then + return nil + end + + if os.execute(batchFile) then + return path.join(cfg.objdir, "temp.exe") + else + return nil + end +--]] +end diff --git a/premake5.lua b/premake5.lua index 25090dc6..a33623fc 100644 --- a/premake5.lua +++ b/premake5.lua @@ -42,6 +42,8 @@ newoption { description = "Don't print full paths into binary" } +require("autoconf") + if(_OPTIONS["with-librw"]) then Librw = "vendor/librw" else @@ -364,6 +366,19 @@ project "re3" filter "platforms:win*glfw*" staticruntime "off" + + filter "platforms:*glfw*" + premake.modules.autoconf.parameters = "-lglfw -lX11" + autoconfigure { + -- iterates all configs and runs on them + ["dontWrite"] = function (cfg) + check_symbol_exists(cfg, "haveX11", "glfwGetX11Display", { "X11/Xlib.h", "X11/XKBlib.h", "GLFW/glfw3.h", "GLFW/glfw3native.h" }, "GLFW_EXPOSE_NATIVE_X11") + if cfg.autoconf["haveX11"] then + table.insert(cfg.links, "X11") + table.insert(cfg.defines, "GET_KEYBOARD_INPUT_FROM_X11") + end + end + } filter "platforms:win*oal" includedirs { "vendor/openal-soft/include" } @@ -381,10 +396,10 @@ project "re3" libdirs { "vendor/openal-soft/libs/Win64" } filter "platforms:linux*oal" - links { "openal", "mpg123", "sndfile", "pthread", "X11" } - + links { "openal", "mpg123", "sndfile", "pthread" } + filter "platforms:bsd*oal" - links { "openal", "mpg123", "sndfile", "pthread", "X11" } + links { "openal", "mpg123", "sndfile", "pthread" } filter "platforms:macosx*oal" links { "openal", "mpg123", "sndfile", "pthread" } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9cbd87a0..818d180f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -130,6 +130,22 @@ else() set(${PROJECT}_C_CXX_EXTENSIONS OFF) endif() +if(LIBRW_PLATFORM_GL3 AND LIBRW_GL3_GFXLIB STREQUAL "GLFW") + include(CheckSymbolExists) + + set(CMAKE_REQUIRED_LIBRARIES glfw) + set(CMAKE_REQUIRED_DEFINITIONS -DGLFW_EXPOSE_NATIVE_X11) + check_symbol_exists(glfwGetX11Display "GLFW/glfw3.h;GLFW/glfw3native.h" GLFW_HAS_X11) + unset(CMAKE_REQUIRED_DEFINITIONS) + unset(CMAKE_REQUIRED_LIBRARIES) + + if (GLFW_HAS_X11) + find_package(X11 REQUIRED) + target_link_libraries(${EXECUTABLE} PRIVATE X11::X11) + target_compile_definitions(${EXECUTABLE} PRIVATE GET_KEYBOARD_INPUT_FROM_X11) + endif (GLFW_HAS_X11) +endif() + set_target_properties(${EXECUTABLE} PROPERTIES C_STANDARD 11 diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 92574953..92a5a93f 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -52,11 +52,7 @@ long _dwOperatingSystemVersion; #include "Font.h" #include "MemoryMgr.h" -// We found out that GLFW's keyboard input handling is still pretty delayed/not stable, so now we fetch input from X11 directly on Linux. -#if !defined _WIN32 && !defined __APPLE__ && !defined GTA_HANDHELD // && !defined WAYLAND -#define GET_KEYBOARD_INPUT_FROM_X11 -#endif - +// This is defined on project-level, via premake5 or cmake #ifdef GET_KEYBOARD_INPUT_FROM_X11 #include #include From 2526503743e71af6a93b033cf23d8d50e2abf926 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 17 Aug 2021 10:50:53 +0300 Subject: [PATCH 298/314] Remove FIX_BUGS that wasn't needed --- src/audio/AudioLogic.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index d3f38345..3ce3c3cf 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -883,11 +883,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nReleasingVolumeModificator = 3; -#ifdef FIX_BUGS multiplier = (m_sQueueSample.m_fDistance / SOUND_INTENSITY) * 0.5f; -#else - multiplier = (m_sQueueSample.m_fDistance / 3.0f) * 0.5f; -#endif freq = SampleManager.GetSampleBaseFrequency(SFX_ROAD_NOISE); m_sQueueSample.m_nFrequency = freq + freq * multiplier; m_sQueueSample.m_nLoopCount = 0; From 16ff379ebeca2092e9609eb3163a6bd2ffd68060 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Tue, 17 Aug 2021 13:58:48 +0300 Subject: [PATCH 299/314] Add AUDIO_REFLECTIONS define, fix a bunch of types, fix heli chatter intensity --- src/audio/AudioCollision.cpp | 8 +- src/audio/AudioLogic.cpp | 392 +++++++++++++++++++-------------- src/audio/AudioManager.cpp | 46 ++-- src/audio/AudioManager.h | 37 ++-- src/audio/DMAudio.cpp | 2 + src/audio/PolRadio.cpp | 2 +- src/audio/sampman_miles.cpp | 14 +- src/audio/sampman_oal.cpp | 14 +- src/core/MenuScreens.cpp | 2 + src/core/MenuScreensCustom.cpp | 2 + src/core/config.h | 5 + 11 files changed, 313 insertions(+), 211 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 1b72764e..02231773 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -203,7 +203,7 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) m_sQueueSample.m_fDistance = Sqrt(col.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); - if(m_sQueueSample.m_nVolume) { + if(m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = gOneShotCol[s1]; switch(m_sQueueSample.m_nSampleIndex) { case SFX_COL_TARMAC_1: @@ -269,7 +269,7 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) m_sQueueSample.m_SoundIntensity = CollisionSoundIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -285,7 +285,7 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun m_sQueueSample.m_fDistance = Sqrt(col.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, CollisionSoundIntensity, m_sQueueSample.m_fDistance); - if(m_sQueueSample.m_nVolume) { + if(m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = counter; m_sQueueSample.m_vecPos = col.m_vecPosition; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -299,7 +299,7 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 3ce3c3cf..7ccd7134 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -676,7 +676,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); float emittingVol = 30.f * CWeather::Rain; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, rainOnVehicleIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = veh->m_bRainSamplesCounter++; if (veh->m_bRainSamplesCounter > 4) veh->m_bRainSamplesCounter = 68; @@ -692,7 +692,7 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) m_sQueueSample.m_SoundIntensity = rainOnVehicleIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -725,7 +725,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) modificator = Abs(modificator); emittingVol = (24.f * modificator); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, reverseGearIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { if (params.m_pVehicle->m_fGasPedal >= 0.0f) { m_sQueueSample.m_nCounter = 62; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_GEAR_2; @@ -745,7 +745,7 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -780,7 +780,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) if (emittingVol) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 30.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_REMOTE_CONTROLLED_CAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -795,7 +795,7 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -824,7 +824,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); emittingVol = 30.f * Min(1.f, velocity / (0.5f * params.m_pTransmission->fMaxVelocity)); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; @@ -847,7 +847,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -877,7 +877,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) relativeVelocity = Min(1.0f, velChange / (0.5f * params.m_pTransmission->fMaxVelocity)); emittingVol = 23.0f * relativeVelocity * CWeather::WetRoads; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -894,7 +894,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1006,7 +1006,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) volume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); } m_sQueueSample.m_nVolume = volume; - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { if (automobile->GetStatus() == STATUS_SIMPLE) { if (modificator < 0.02f) { m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nBank - CAR_SFX_BANKS_OFFSET + SFX_CAR_IDLE_1; @@ -1040,7 +1040,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1078,7 +1078,7 @@ void cAudioManager::AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 sample, uint8 bank, uint8 counter, bool8 notLooping) { m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, 50.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = counter; m_sQueueSample.m_nSampleIndex = sample; #ifdef GTA_PS2 @@ -1101,7 +1101,7 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 samp m_sQueueSample.m_SoundIntensity = 50.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1129,7 +1129,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) } else if (params.m_fDistance < SQR(200)) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(80, 200.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 52; m_sQueueSample.m_nSampleIndex = SFX_CESNA_IDLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -1144,12 +1144,12 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_SoundIntensity = 200.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } if (params.m_fDistance < SQR(90)) { m_sQueueSample.m_nVolume = ComputeVolume(80, 90.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -1164,7 +1164,7 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_SoundIntensity = 90.0f; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1453,7 +1453,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) if (skidVal > 0.0f) { emittingVol = 50.f * skidVal; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 3; switch (params.m_pVehicle->m_nSurfaceTouched) { case SURFACE_GRASS: @@ -1490,7 +1490,7 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1565,7 +1565,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(80, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nHornSample; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -1580,7 +1580,7 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1630,7 +1630,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(80, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 5; if (UsesSiren(params.m_nIndex)) { if (params.m_pVehicle->GetStatus() == STATUS_ABANDONED) @@ -1661,7 +1661,7 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); return TRUE; } else @@ -1689,7 +1689,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) if (veh->bEngineOn && veh->m_fGasPedal < 0.0f) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(60, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 12; m_sQueueSample.m_nSampleIndex = SFX_REVERSE_WARNING; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -1704,7 +1704,7 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1734,7 +1734,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) if (velocity > 0.0035f) { emittingVol = (100.f * velocity * 10.f / 3.f); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i + 6; m_sQueueSample.m_nSampleIndex = m_anRandomTable[1] % 6 + SFX_COL_CAR_PANEL_1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) + RandomDisplacement(1000); @@ -1748,7 +1748,7 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } } @@ -1777,7 +1777,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); rand = m_anRandomTable[0] % 10 + 70; m_sQueueSample.m_nVolume = ComputeVolume(rand, 30.0f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 13; m_sQueueSample.m_nSampleIndex = SFX_AIR_BRAKES; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AIR_BRAKES); @@ -1792,7 +1792,7 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) m_sQueueSample.m_SoundIntensity = 30.0f; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1834,7 +1834,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) } CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, engineDamageIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 28; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; @@ -1846,7 +1846,7 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1864,7 +1864,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) if (automobile->bEngineOn && automobile->m_bombType == CARBOMB_TIMEDACTIVE) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(60, 40.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 35; m_sQueueSample.m_nSampleIndex = SFX_COUNTDOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -1879,7 +1879,7 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -1903,7 +1903,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) for (uint16 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { noReflections = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); event = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; switch (event) { case SOUND_CAR_DOOR_CLOSE_BONNET: @@ -1943,7 +1943,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; } case SOUND_CAR_DOOR_OPEN_BONNET: @@ -1981,7 +1981,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; } case SOUND_CAR_WINDSHIELD_CRACK: { @@ -2027,7 +2027,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; } case SOUND_CAR_LIGHT_BREAK: { @@ -2167,7 +2167,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVol = 60; break; } @@ -2227,7 +2227,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nReleasingVolumeModificator = 0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVol = 50; maxDist = SQR(SOUND_INTENSITY); break; @@ -2258,7 +2258,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVol = m_anRandomTable[4] % 20 + 90; break; } @@ -2275,7 +2275,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 20 + 55; CrunchOffset %= 2; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; } case SOUND_CAR_PED_COLLISION: { @@ -2301,7 +2301,7 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) if (params.m_fDistance < maxDist) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { if (noReflections) { m_sQueueSample.m_nLoopCount = 0; m_sQueueSample.m_bReleasingSoundFlag = FALSE; @@ -2338,7 +2338,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) emittingVol = (75.f * speedMultipler); if (train->m_fWagonPosition == 0.0f) { m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 32; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2353,14 +2353,14 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } const float SOUND_INTENSITY = 70.0f; if (params.m_fDistance < SQR(SOUND_INTENSITY)) { m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 33; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2375,7 +2375,7 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -2403,7 +2403,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) if (params.m_nIndex == REEFER) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(80, intensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 39; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; m_sQueueSample.m_nFrequency = 10386; @@ -2419,7 +2419,7 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 7; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } if (FindPlayerVehicle() == params.m_pVehicle) { @@ -2442,23 +2442,24 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) } } m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, intensity, m_sQueueSample.m_fDistance); - if (!m_sQueueSample.m_nVolume) - return TRUE; - m_sQueueSample.m_nCounter = 40; - m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; - m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; - m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nLoopCount = 0; - SET_EMITTING_VOLUME(emittingVol); - SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + if (m_sQueueSample.m_nVolume > 0) { + m_sQueueSample.m_nCounter = 40; + m_sQueueSample.m_nSampleIndex = SFX_POLICE_BOAT_ACCEL; + m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; + m_sQueueSample.m_nBankIndex = SFX_BANK_0; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nLoopCount = 0; + SET_EMITTING_VOLUME(emittingVol); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_SoundIntensity = intensity; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_nReleasingVolumeDivider = 7; + m_sQueueSample.m_bReverbFlag = TRUE; + SET_SOUND_REFLECTION(FALSE); + AddSampleToRequestedQueue(); + } } else { if (FindPlayerVehicle() == params.m_pVehicle) { padAccelerate = Max(Pads[0].GetAccelerate(), Pads[0].GetBrake()); @@ -2499,23 +2500,23 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) } CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, intensity, m_sQueueSample.m_fDistance); - if (!m_sQueueSample.m_nVolume) - return TRUE; - m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; - m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nLoopCount = 0; - SET_EMITTING_VOLUME(emittingVol); - SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + if (m_sQueueSample.m_nVolume > 0) { + m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; + m_sQueueSample.m_nBankIndex = SFX_BANK_0; + m_sQueueSample.m_bIs2D = FALSE; + m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nLoopCount = 0; + SET_EMITTING_VOLUME(emittingVol); + SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) + m_sQueueSample.m_fSpeedMultiplier = 2.0f; + m_sQueueSample.m_SoundIntensity = intensity; + m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_nReleasingVolumeDivider = 7; + m_sQueueSample.m_bReverbFlag = TRUE; + SET_SOUND_REFLECTION(FALSE); + AddSampleToRequestedQueue(); + } } - AddSampleToRequestedQueue(); return TRUE; } return FALSE; @@ -2540,7 +2541,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); vol = (30.f * multiplier); m_sQueueSample.m_nVolume = ComputeVolume(vol, 50.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 38; m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2555,7 +2556,7 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2595,7 +2596,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) emittingVol = gHeliSfxRanges[i].m_bBaseVolume; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, gHeliSfxRanges[i].m_fMaxDistance, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i + 65; m_sQueueSample.m_nSampleIndex = i + SFX_HELI_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2610,7 +2611,7 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -2769,7 +2770,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) emittingVol -= emittingVol * gJumboVolOffsetPercentage / 100; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2784,7 +2785,7 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } return TRUE; @@ -2800,7 +2801,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2815,7 +2816,7 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } return TRUE; @@ -2830,7 +2831,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) uint8 emittingVol = vol - gJumboVolOffsetPercentage / 100; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 3; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2845,7 +2846,7 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 4; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } return TRUE; @@ -2860,7 +2861,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) int32 vol = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); m_sQueueSample.m_nVolume = vol; - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2875,7 +2876,7 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } return TRUE; @@ -2890,7 +2891,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 5; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2906,7 +2907,7 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nReleasingVolumeDivider = 12; m_sQueueSample.m_nOffset = 0; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); m_sQueueSample.m_nCounter = 6; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; @@ -2970,7 +2971,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) } m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, 7.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 64; m_sQueueSample.m_nSampleIndex = SFX_HEADPHONES; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -2985,7 +2986,7 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 5; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } return; @@ -3013,7 +3014,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) for (uint32 i = 0; i < m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents; i++) { stereo = FALSE; narrowSoundRange = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); sound = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i]; switch (sound) { case SOUND_STEP_START: @@ -3091,7 +3092,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; case SOUND_FALL_LAND: case SOUND_FALL_COLLAPSE: @@ -3118,7 +3119,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; case SOUND_FIGHT_PUNCH_33: m_sQueueSample.m_nSampleIndex = SFX_FIGHT_1; @@ -3182,7 +3183,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; case SOUND_WEAPON_BAT_ATTACK: m_sQueueSample.m_nSampleIndex = SFX_BAT_HIT_LEFT; @@ -3200,9 +3201,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; case SOUND_WEAPON_SHOT_FIRED: @@ -3225,9 +3228,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; case WEAPONTYPE_UZI: @@ -3265,9 +3270,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; case WEAPONTYPE_AK47: @@ -3323,9 +3330,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; case WEAPONTYPE_ROCKETLAUNCHER: @@ -3345,9 +3354,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; case WEAPONTYPE_FLAMETHROWER: @@ -3366,9 +3377,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 6; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; default: @@ -3424,7 +3437,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(75); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; case SOUND_WEAPON_AK47_BULLET_ECHO: case SOUND_WEAPON_UZI_BULLET_ECHO: @@ -3445,9 +3458,11 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; +#ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bRequireReflection = TRUE; else +#endif stereo = TRUE; break; case SOUND_WEAPON_FLAMETHROWER_FIRE: @@ -3501,7 +3516,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; default: SetupPedComments(params, sound); @@ -3513,7 +3528,7 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) if (params.m_fDistance < maxDist) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { if (stereo) { if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_SoundIntensity) { m_sQueueSample.m_bIs2D = TRUE; @@ -3614,7 +3629,7 @@ cAudioManager::SetupPedComments(cPedParams ¶ms, uint16 sound) } m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, soundIntensity, m_sQueueSample.m_fDistance); pedComment.m_nProcess = 10; - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { pedComment.m_nEntityIndex = m_sQueueSample.m_nEntityIndex; pedComment.m_vecPos = m_sQueueSample.m_vecPos; pedComment.m_fDistance = m_sQueueSample.m_fDistance; @@ -6070,6 +6085,34 @@ cPedComments::Process() case SFX_POLICE_HELI_1: case SFX_POLICE_HELI_2: case SFX_POLICE_HELI_3: +#ifdef FIX_BUGS + case SFX_POLICE_HELI_4: + case SFX_POLICE_HELI_5: + case SFX_POLICE_HELI_6: + case SFX_POLICE_HELI_7: + case SFX_POLICE_HELI_8: + case SFX_POLICE_HELI_9: + case SFX_POLICE_HELI_10: + case SFX_POLICE_HELI_11: + case SFX_POLICE_HELI_12: + case SFX_POLICE_HELI_13: + case SFX_POLICE_HELI_14: + case SFX_POLICE_HELI_15: + case SFX_POLICE_HELI_16: + case SFX_POLICE_HELI_17: + case SFX_POLICE_HELI_18: + case SFX_POLICE_HELI_19: + case SFX_POLICE_HELI_20: + case SFX_POLICE_HELI_21: + case SFX_POLICE_HELI_22: + case SFX_POLICE_HELI_23: + case SFX_POLICE_HELI_24: + case SFX_POLICE_HELI_25: + case SFX_POLICE_HELI_26: + case SFX_POLICE_HELI_27: + case SFX_POLICE_HELI_28: + case SFX_POLICE_HELI_29: +#endif AudioManager.m_sQueueSample.m_SoundIntensity = 400.0f; break; default: @@ -6081,10 +6124,21 @@ cPedComments::Process() if (sampleIndex >= SFX_AMMU_D && sampleIndex <= SFX_AMMU_F) { AudioManager.m_sQueueSample.m_bReverbFlag = FALSE; +#ifdef AUDIO_REFLECTIONS AudioManager.m_sQueueSample.m_bRequireReflection = FALSE; +#endif +#ifdef FIX_BUGS + } else if (sampleIndex >= SFX_POLICE_HELI_1 && sampleIndex <= SFX_POLICE_HELI_29) { + AudioManager.m_sQueueSample.m_bReverbFlag = TRUE; +#ifdef AUDIO_REFLECTIONS + AudioManager.m_sQueueSample.m_bRequireReflection = FALSE; +#endif // AUDIO_REFLECTIONS +#endif // FIX_BUGS } else { AudioManager.m_sQueueSample.m_bReverbFlag = TRUE; +#ifdef AUDIO_REFLECTIONS AudioManager.m_sQueueSample.m_bRequireReflection = TRUE; +#endif } AudioManager.m_sQueueSample.m_bIs2D = FALSE; @@ -6175,7 +6229,7 @@ cAudioManager::ProcessExplosions(int32 explosion) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = FALSE; @@ -6185,7 +6239,7 @@ cAudioManager::ProcessExplosions(int32 explosion) SET_EMITTING_VOLUME(MAX_VOLUME); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } } @@ -6242,7 +6296,7 @@ cAudioManager::ProcessFires(int32) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 2.0f; @@ -6253,7 +6307,7 @@ cAudioManager::ProcessFires(int32) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -6277,7 +6331,7 @@ cAudioManager::ProcessWaterCannon(int32) #else m_sQueueSample.m_nVolume = ComputeVolume(50, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); #endif - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { #ifdef FIX_BUGS m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; #else @@ -6296,7 +6350,7 @@ cAudioManager::ProcessWaterCannon(int32) SET_EMITTING_VOLUME(50); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -6359,7 +6413,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVolume = RandomDisplacement(10) + 50; break; case SCRIPT_SOUND_BULLET_HIT_GROUND_1: @@ -6397,7 +6451,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); break; case SCRIPT_SOUND_GLASS_BREAK_L: m_sQueueSample.m_SoundIntensity = 60.0f; @@ -6428,7 +6482,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); break; case SCRIPT_SOUND_GLASS_LIGHT_BREAK: m_sQueueSample.m_SoundIntensity = 55.0f; @@ -6448,7 +6502,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_BOX_DESTROYED_2: @@ -6459,7 +6513,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_METAL_COLLISION: @@ -6471,7 +6525,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 30 + 70; break; case SCRIPT_SOUND_TIRE_COLLISION: @@ -6483,7 +6537,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) m_sQueueSample.m_nReleasingVolumeModificator = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 30 + 60; break; case SCRIPT_SOUND_GUNSHELL_DROP: @@ -6539,7 +6593,7 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; @@ -7144,7 +7198,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; @@ -7152,7 +7206,7 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) m_sQueueSample.m_bReverbFlag = TRUE; SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -7214,7 +7268,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_fDistance = Sqrt(distSquared); if (sound != SCRIPT_SOUND_MISTY_SEX_S && sound != SCRIPT_SOUND_MISTY_SEX_L) { m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; @@ -7225,7 +7279,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) SET_EMITTING_VOLUME(MAX_VOLUME); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -7233,7 +7287,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) time = CTimer::GetTimeInMilliseconds(); if (time > gPornNextTime) { m_sQueueSample.m_nVolume = ComputeVolume(90, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + sample; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7249,7 +7303,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) #endif RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gPornNextTime = time + 2000 + m_anRandomTable[3] % 6000; } @@ -7274,7 +7328,7 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_WORKSHOP_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_WORKSHOP; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_WORKSHOP_1); @@ -7287,7 +7341,7 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -7312,7 +7366,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SAWMILL_LOOP); @@ -7325,13 +7379,13 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); if (time > gSawMillNextTime) { m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_CUT_WOOD; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7346,7 +7400,7 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) #endif RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gSawMillNextTime = time + 2000 + m_anRandomTable[3] % 4000; } @@ -7369,7 +7423,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(45, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_LOOP); @@ -7382,11 +7436,11 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) SET_EMITTING_VOLUME(45); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_SONG_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_LAUNDERETTE_SONG_LOOP); @@ -7399,7 +7453,7 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) SET_EMITTING_VOLUME(110); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -7424,7 +7478,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_SHOP_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SHOP; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOP_LOOP); @@ -7437,13 +7491,13 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); if (time > gShopNextTime) { m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + SFX_SHOP_TILL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SHOP; @@ -7457,7 +7511,7 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) SET_EMITTING_VOLUME(70); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gShopNextTime = time + 3000 + m_anRandomTable[3] % 7000; } @@ -7486,7 +7540,7 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_AIRPORT_ANNOUNCEMENT_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_AIRPORT; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7499,7 +7553,7 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) SET_EMITTING_VOLUME(110); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gAirportNextTime = time + 10000 + m_anRandomTable[3] % 20000; } @@ -7531,7 +7585,7 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 90 + 30; m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = iSound % 3 + SFX_CINEMA_BASS_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CINEMA; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7545,7 +7599,7 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gCinemaNextTime = time + 1000 + m_anRandomTable[3] % 4000; } @@ -7579,7 +7633,7 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 60 + 40; m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_DOCKS_FOGHORN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOCKS; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOCKS_FOGHORN); @@ -7593,7 +7647,7 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gDocksNextTime = time + 10000 + m_anRandomTable[3] % 40000; } @@ -7626,7 +7680,7 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) m_sQueueSample.m_fDistance = Sqrt(dist); rand = m_anRandomTable[0] % 30 + 40; m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = m_anRandomTable[0] % 5 + SFX_HOME_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_HOME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7640,7 +7694,7 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); gHomeNextTime = time + 1000 + m_anRandomTable[3] % 4000; } @@ -7678,7 +7732,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_nSampleIndex = sampleIndex; emittingVol = m_anRandomTable[0] % 50 + 55; m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); @@ -7691,7 +7745,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); cPedParams params; params.m_bDistanceCalculated = TRUE; @@ -7738,7 +7792,7 @@ cAudioManager::ProcessWeather(int32 id) SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); RESET_LOOP_OFFSETS m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } if (CWeather::Rain > 0.0f && (!CCullZones::CamNoRain() || !CCullZones::PlayerNoRain())) { @@ -7756,7 +7810,7 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_bReverbFlag = FALSE; SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -7935,7 +7989,7 @@ cAudioManager::ProcessFrontEnd() else m_sQueueSample.m_nOffset = 63; m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); if (stereo) { ++m_sQueueSample.m_nSampleIndex; @@ -7962,7 +8016,7 @@ cAudioManager::ProcessCrane() if (distSquared < SQR(intensity)) { CalculateDistance(distCalculated, distSquared); m_sQueueSample.m_nVolume = ComputeVolume(100, 80.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -7977,7 +8031,7 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } if (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_AudioEvents > 0) { @@ -7987,7 +8041,7 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nLoopCount = 1; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } } @@ -8033,7 +8087,7 @@ cAudioManager::ProcessProjectiles() if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; @@ -8041,7 +8095,7 @@ cAudioManager::ProcessProjectiles() SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -8078,7 +8132,7 @@ cAudioManager::ProcessGarages() while (state == GS_OPENING || state == GS_CLOSING || state == GS_AFTERDROPOFF) { CalculateDistance(distCalculated, distSquared); m_sQueueSample.m_nVolume = ComputeVolume(90, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { if (CGarages::aGarages[i].m_eGarageType == GARAGE_CRUSHER) { if (CGarages::aGarages[i].m_eGarageState == GS_AFTERDROPOFF) { if (m_FrameCounter & 1) { @@ -8122,7 +8176,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } break; @@ -8135,7 +8189,7 @@ cAudioManager::ProcessGarages() if (distSquared < SQR(SOUND_INTENSITY)) { CalculateDistance(distCalculated, distSquared); m_sQueueSample.m_nVolume = ComputeVolume(60, SOUND_INTENSITY, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { if (CGarages::aGarages[i].m_eGarageType == GARAGE_CRUSHER) { m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_PANEL_2; m_sQueueSample.m_nFrequency = 6735; @@ -8159,7 +8213,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nCounter = iSound++; if (iSound < 32) iSound = 32; - m_sQueueSample.m_bRequireReflection = TRUE; + SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } } @@ -8183,7 +8237,7 @@ cAudioManager::ProcessFireHydrant() if (distSquared < SQR(intensity)) { CalculateDistance(distCalculated, distSquared); m_sQueueSample.m_nVolume = ComputeVolume(40, 35.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -8198,7 +8252,7 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 3; m_sQueueSample.m_bReverbFlag = TRUE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -8242,7 +8296,7 @@ cAudioManager::ProcessBridgeWarning() { if (CStats::CommercialPassed && m_sQueueSample.m_fDistance < 450.f) { m_sQueueSample.m_nVolume = ComputeVolume(100, 450.f, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING; m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA; @@ -8257,7 +8311,7 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_bReleasingSoundFlag = FALSE; m_sQueueSample.m_nReleasingVolumeDivider = 8; m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } @@ -8268,7 +8322,7 @@ cAudioManager::ProcessBridgeMotor() { if (m_sQueueSample.m_fDistance < bridgeIntensity) { m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, bridgeIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name m_sQueueSample.m_nBankIndex = SFX_BANK_0; @@ -8303,7 +8357,7 @@ cAudioManager::ProcessBridgeOneShots() if (m_sQueueSample.m_fDistance < bridgeIntensity) { m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, bridgeIntensity, m_sQueueSample.m_fDistance); - if (m_sQueueSample.m_nVolume != 0) { + if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; @@ -8316,7 +8370,7 @@ cAudioManager::ProcessBridgeOneShots() m_sQueueSample.m_SoundIntensity = bridgeIntensity; m_sQueueSample.m_bReleasingSoundFlag = TRUE; m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } } diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 9b1337c9..15c8c00e 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -30,7 +30,9 @@ cAudioManager::cAudioManager() ClearActiveSamples(); GenerateIntegerRandomNumberTable(); m_bDoubleVolume = FALSE; +#ifdef AUDIO_REFLECTIONS m_bDynamicAcousticModelingStatus = TRUE; +#endif for (int i = 0; i < NUM_AUDIOENTITIES; i++) { m_asAudioEntities[i].m_bIsUsed = FALSE; @@ -114,7 +116,7 @@ cAudioManager::Service() if (m_bIsInitialised) { m_nPreviousUserPause = m_nUserPause; m_nUserPause = CTimer::GetIsUserPaused(); -#if GTA_VERSION >= GTA3_PC_10 +#ifdef AUDIO_REFLECTIONS UpdateReflections(); #endif ServiceSoundEffects(); @@ -434,11 +436,13 @@ cAudioManager::ReacquireDigitalHandle() } } +#ifdef AUDIO_REFLECTIONS void cAudioManager::SetDynamicAcousticModelingStatus(bool8 status) { m_bDynamicAcousticModelingStatus = status; } +#endif bool8 cAudioManager::CheckForAnAudioFileOnCD() @@ -601,9 +605,11 @@ cAudioManager::InterrogateAudioEntities() void cAudioManager::AddSampleToRequestedQueue() { - int32 calculatedVolume; + uint32 calculatedVolume; uint8 sampleIndex; +#ifdef AUDIO_REFLECTIONS bool8 bReflections; +#endif if (m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) { calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (MAX_VOLUME - m_sQueueSample.m_nVolume); @@ -617,11 +623,12 @@ cAudioManager::AddSampleToRequestedQueue() } m_sQueueSample.m_nCalculatedVolume = calculatedVolume; m_sQueueSample.m_bLoopEnded = FALSE; +#ifdef AUDIO_REFLECTIONS if (m_sQueueSample.m_bIs2D) { m_sQueueSample.m_bRequireReflection = FALSE; m_sQueueSample.m_nLoopsRemaining = 0; } - if (m_bDynamicAcousticModelingStatus && m_sQueueSample.m_nLoopCount) { + if (m_bDynamicAcousticModelingStatus && m_sQueueSample.m_nLoopCount > 0) { bReflections = m_sQueueSample.m_bRequireReflection; } else { bReflections = FALSE; @@ -631,12 +638,15 @@ cAudioManager::AddSampleToRequestedQueue() if (!m_bDynamicAcousticModelingStatus) m_sQueueSample.m_bReverbFlag = FALSE; +#endif m_asSamples[m_nActiveSampleQueue][sampleIndex] = m_sQueueSample; AddDetailsToRequestedOrderList(sampleIndex); +#ifdef AUDIO_REFLECTIONS if (bReflections) AddReflectionsToRequestedQueue(); +#endif } } @@ -657,7 +667,7 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) m_abSampleQueueIndexTable[m_nActiveSampleQueue][i] = sample; } -#if GTA_VERSION >= GTA3_PC_10 +#ifdef AUDIO_REFLECTIONS void cAudioManager::AddReflectionsToRequestedQueue() { @@ -675,12 +685,12 @@ cAudioManager::AddReflectionsToRequestedQueue() m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > emittingVolume / 16) { m_sQueueSample.m_nCounter += (i + 1) * 256; - if (m_sQueueSample.m_nLoopCount) { + if (m_sQueueSample.m_nLoopCount > 0) { noise = RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - if (noise <= 0) - m_sQueueSample.m_nFrequency += noise; - else + if (noise > 0) m_sQueueSample.m_nFrequency -= noise; + else + m_sQueueSample.m_nFrequency += noise; } m_sQueueSample.m_nReleasingVolumeModificator += 20; m_sQueueSample.m_vecPos = m_avecReflectionsPos[i]; @@ -740,7 +750,7 @@ cAudioManager::UpdateReflections() m_afReflectionsDistances[4] = 50.0f; } } -#endif // GTA_VERSION >= GTA3_PC_10 +#endif // AUDIO_REFLECTIONS void cAudioManager::AddReleasingSounds() @@ -768,7 +778,10 @@ cAudioManager::AddReleasingSounds() } } if (!toProcess[i]) { - if (sample.m_nCounter <= 255 || sample.m_nLoopsRemaining == 0) { +#ifdef AUDIO_REFLECTIONS + if (sample.m_nCounter <= 255 || sample.m_nLoopsRemaining == 0) // check if not reflection +#endif + { if (sample.m_nReleasingVolumeDivider == 0) continue; if (sample.m_nLoopCount == 0) { @@ -831,7 +844,7 @@ cAudioManager::ProcessActiveQueues() for (int32 j = 0; j < m_nActiveSamples; j++) { if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && sample.m_nCounter == m_asActiveSamples[j].m_nCounter && sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { - if (sample.m_nLoopCount) { + if (sample.m_nLoopCount > 0) { if (m_FrameCounter & 1) flag = !!(j & 1); else @@ -914,13 +927,16 @@ cAudioManager::ProcessActiveQueues() for (uint8 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) { tSound &sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { - if (sample.m_nCounter > 255 && sample.m_nLoopCount != 0 && sample.m_nLoopsRemaining != 0) { +#ifdef AUDIO_REFLECTIONS + if (sample.m_nCounter > 255 && sample.m_nLoopCount > 0 && sample.m_nLoopsRemaining > 0) { // check if reflection sample.m_nLoopsRemaining--; sample.m_nReleasingVolumeDivider = 1; - } else { + } else +#endif + { for (uint8 j = 0; j < m_nActiveSamples; j++) { if (!m_asActiveSamples[j].m_bIsProcessed) { - if (sample.m_nLoopCount != 0) { + if (sample.m_nLoopCount > 0) { samplesPerFrame = sample.m_nFrequency / m_nTimeSpent; samplesToPlay = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); if (samplesPerFrame == 0) @@ -1028,7 +1044,7 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_nVolumeChange = -1; m_asActiveSamples[i].m_vecPos = CVector(0.0f, 0.0f, 0.0f); m_asActiveSamples[i].m_bReverbFlag = FALSE; -#if GTA_VERSION >= GTA3_PC_10 +#ifdef AUDIO_REFLECTIONS m_asActiveSamples[i].m_nLoopsRemaining = 0; m_asActiveSamples[i].m_bRequireReflection = FALSE; #endif diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 7934996e..3b413965 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -9,20 +9,20 @@ class tSound public: int32 m_nEntityIndex; #if GTA_VERSION >= GTA3_PC_10 - int32 m_nCounter; + uint32 m_nCounter; #else uint8 m_nCounter; #endif - int32 m_nSampleIndex; + uint32 m_nSampleIndex; uint8 m_nBankIndex; bool8 m_bIs2D; - int32 m_nReleasingVolumeModificator; + uint32 m_nReleasingVolumeModificator; uint32 m_nFrequency; uint8 m_nVolume; float m_fDistance; - int32 m_nLoopCount; + uint32 m_nLoopCount; #ifndef GTA_PS2 - int32 m_nLoopStart; + uint32 m_nLoopStart; int32 m_nLoopEnd; #endif #ifdef EXTERNAL_3D_SOUND @@ -37,18 +37,18 @@ public: bool8 m_bReleasingSoundFlag; CVector m_vecPos; bool8 m_bReverbFlag; -#if GTA_VERSION >= GTA3_PC_10 +#ifdef AUDIO_REFLECTIONS uint8 m_nLoopsRemaining; bool8 m_bRequireReflection; // Used for oneshots #endif uint8 m_nOffset; - int32 m_nReleasingVolumeDivider; + uint32 m_nReleasingVolumeDivider; bool8 m_bIsProcessed; bool8 m_bLoopEnded; #if GTA_VERSION < GTA3_PC_10 int32 unk; // only on PS2, seems unused #endif - int32 m_nCalculatedVolume; + uint32 m_nCalculatedVolume; int8 m_nVolumeChange; }; @@ -74,7 +74,7 @@ VALIDATE_SIZE(tAudioEntity, 40); class tPedComment { public: - int32 m_nSampleIndex; + uint32 m_nSampleIndex; int32 m_nEntityIndex; CVector m_vecPos; float m_fDistance; @@ -120,7 +120,7 @@ class cMissionAudio public: CVector m_vecPos; bool8 m_bPredefinedProperties; - int32 m_nSampleIndex; + uint32 m_nSampleIndex; uint8 m_nLoadingStatus; uint8 m_nPlayStatus; bool8 m_bIsPlaying; @@ -168,7 +168,7 @@ public: float m_fDistance; CVehicle *m_pVehicle; cTransmission *m_pTransmission; - int32 m_nIndex; + uint32 m_nIndex; float m_fVelocityChange; cVehicleParams() @@ -211,8 +211,10 @@ public: bool8 m_bReverb; // unused bool8 m_bFifthFrameFlag; uint8 m_nActiveSamples; - uint8 m_bDoubleVolume; // unused + bool8 m_bDoubleVolume; // unused +#if GTA_VERSION >= GTA3_PC_10 bool8 m_bDynamicAcousticModelingStatus; +#endif float m_fSpeedOfSound; bool8 m_bTimerJustReset; int32 m_nTimer; @@ -225,7 +227,7 @@ public: tAudioEntity m_asAudioEntities[NUM_AUDIOENTITIES]; int32 m_anAudioEntityIndices[NUM_AUDIOENTITIES]; int32 m_nAudioEntitiesTotal; -#if GTA_VERSION >= GTA3_PC_10 +#ifdef AUDIO_REFLECTIONS CVector m_avecReflectionsPos[MAX_REFLECTIONS]; float m_afReflectionsDistances[MAX_REFLECTIONS]; #endif @@ -276,7 +278,9 @@ public: bool8 IsMP3RadioChannelAvailable(); void ReleaseDigitalHandle(); void ReacquireDigitalHandle(); +#ifdef AUDIO_REFLECTIONS void SetDynamicAcousticModelingStatus(bool8 status); +#endif bool8 CheckForAnAudioFileOnCD(); char GetCDAudioDriveLetter(); bool8 IsAudioInitialised(); @@ -292,7 +296,7 @@ public: void InterrogateAudioEntities(); // inlined on PS2 void AddSampleToRequestedQueue(); void AddDetailsToRequestedOrderList(uint8 sample); // inlined on PS2 -#if GTA_VERSION >= GTA3_PC_10 +#ifdef AUDIO_REFLECTIONS void AddReflectionsToRequestedQueue(); void UpdateReflections(); #endif @@ -548,6 +552,11 @@ public: #else #define SET_EMITTING_VOLUME(vol) #endif +#ifdef AUDIO_REFLECTIONS +#define SET_SOUND_REFLECTION(b) m_sQueueSample.m_bRequireReflection = b +#else +#define SET_SOUND_REFLECTION(b) +#endif #if defined(AUDIO_MSS) && !defined(PS2_AUDIO_CHANNELS) static_assert(sizeof(cAudioManager) == 19220, "cAudioManager: error"); diff --git a/src/audio/DMAudio.cpp b/src/audio/DMAudio.cpp index 688da201..d88bfddd 100644 --- a/src/audio/DMAudio.cpp +++ b/src/audio/DMAudio.cpp @@ -155,7 +155,9 @@ cDMAudio::ReacquireDigitalHandle(void) void cDMAudio::SetDynamicAcousticModelingStatus(bool8 status) { +#ifdef AUDIO_REFLECTIONS AudioManager.SetDynamicAcousticModelingStatus(status); +#endif } bool8 diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 742e5ea5..4c84829a 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -139,7 +139,7 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_bReverbFlag = FALSE; m_sQueueSample.m_nOffset = 63; m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bRequireReflection = FALSE; + SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } diff --git a/src/audio/sampman_miles.cpp b/src/audio/sampman_miles.cpp index 0ba6b544..71ff00ee 100644 --- a/src/audio/sampman_miles.cpp +++ b/src/audio/sampman_miles.cpp @@ -1652,10 +1652,16 @@ cSampleManager::UpdateReverb(void) if ( AudioManager.m_FrameCounter & 15 ) return FALSE; - + +#ifdef AUDIO_REFLECTIONS float y = AudioManager.m_afReflectionsDistances[REFLECTION_TOP] + AudioManager.m_afReflectionsDistances[REFLECTION_BOTTOM]; float x = AudioManager.m_afReflectionsDistances[REFLECTION_LEFT] + AudioManager.m_afReflectionsDistances[REFLECTION_RIGHT]; float z = AudioManager.m_afReflectionsDistances[REFLECTION_UP]; +#else + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; +#endif float normy = norm(y, 5.0f, 40.0f); float normx = norm(x, 5.0f, 40.0f); @@ -2169,7 +2175,7 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) bool8 cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { - int i = 0; + uint32 i = 0; uint32 position = nPos; char filename[MAX_PATH]; @@ -2250,7 +2256,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) if ( !_pMP3List ) { nFile = 0; - _bIsMp3Active = 0; + _bIsMp3Active = FALSE; #ifdef PS2_AUDIO_PATHS strcpy(filename, m_szCDRomRootPath); strcat(filename, PS2StreamedNameTable[nFile]); @@ -2295,7 +2301,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) } } - _bIsMp3Active = 0; + _bIsMp3Active = FALSE; } while ( ++i < nNumMP3s ); position = 0; diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index 17776347..b8a3ed3d 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -1362,10 +1362,16 @@ bool8 cSampleManager::UpdateReverb(void) if ( AudioManager.m_FrameCounter & 15 ) return FALSE; - + +#ifdef AUDIO_REFLECTIONS float y = AudioManager.m_afReflectionsDistances[REFLECTION_TOP] + AudioManager.m_afReflectionsDistances[REFLECTION_BOTTOM]; float x = AudioManager.m_afReflectionsDistances[REFLECTION_LEFT] + AudioManager.m_afReflectionsDistances[REFLECTION_RIGHT]; float z = AudioManager.m_afReflectionsDistances[REFLECTION_UP]; +#else + float x = 0.0f; + float y = 0.0f; + float z = 0.0f; +#endif float normy = norm(y, 5.0f, 40.0f); float normx = norm(x, 5.0f, 40.0f); @@ -1653,7 +1659,7 @@ cSampleManager::StartPreloadedStreamedFile(uint8 nStream) bool8 cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) { - int i = 0; + uint32 i = 0; uint32 position = nPos; char filename[MAX_PATH]; @@ -1728,7 +1734,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) if ( !_pMP3List ) { nFile = 0; - _bIsMp3Active = 0; + _bIsMp3Active = FALSE; CStream *stream = aStream[nStream]; #ifdef PS2_AUDIO_PATHS if(!stream->Open(PS2StreamedNameTable[nFile], IsThisTrackAt16KHz(nFile) ? 16000 : 32000)) @@ -1767,7 +1773,7 @@ cSampleManager::StartStreamedFile(uint8 nFile, uint32 nPos, uint8 nStream) } } - _bIsMp3Active = 0; + _bIsMp3Active = FALSE; } while ( ++i < nNumMP3s ); position = 0; diff --git a/src/core/MenuScreens.cpp b/src/core/MenuScreens.cpp index 0a149f27..247de98a 100644 --- a/src/core/MenuScreens.cpp +++ b/src/core/MenuScreens.cpp @@ -44,7 +44,9 @@ CMenuScreen aScreens[MENUPAGES] = { MENUACTION_AUDIOHW, "FEA_3DH", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_SPEAKERCONF, "FEA_SPK", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, #endif +#ifdef AUDIO_REFLECTIONS MENUACTION_DYNAMICACOUSTIC, "FET_DAM", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, +#endif MENUACTION_RADIO, "FEA_RSS", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_RESTOREDEF, "FET_DEF", SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS, MENUACTION_CHANGEMENU, "FEDS_TB", SAVESLOT_NONE, MENUPAGE_NONE, diff --git a/src/core/MenuScreensCustom.cpp b/src/core/MenuScreensCustom.cpp index 5eecd841..d33650f8 100644 --- a/src/core/MenuScreensCustom.cpp +++ b/src/core/MenuScreensCustom.cpp @@ -439,7 +439,9 @@ CMenuScreenCustom aScreens[MENUPAGES] = { MENUACTION_AUDIOHW, "FEA_3DH", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_SPEAKERCONF, "FEA_SPK", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, #endif +#ifdef AUDIO_REFLECTIONS MENUACTION_DYNAMICACOUSTIC, "FET_DAM", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, +#endif MENUACTION_RADIO, "FEA_RSS", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_RESTOREDEF, "FET_DEF", { nil, SAVESLOT_NONE, MENUPAGE_SOUND_SETTINGS }, MENUACTION_CHANGEMENU, "FEDS_TB", { nil, SAVESLOT_NONE, MENUPAGE_NONE }, diff --git a/src/core/config.h b/src/core/config.h index d26f9546..5ec6f3ee 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -171,6 +171,7 @@ enum Config { # define PS2_MENU #elif defined GTA_PC # define EXTERNAL_3D_SOUND +# define AUDIO_REFLECTIONS # ifndef GTA_HANDHELD # define PC_PLAYER_CONTROLS // mouse player/cam mode # endif @@ -429,6 +430,7 @@ enum Config { // Audio #define EXTERNAL_3D_SOUND // use external engine to simulate 3d audio spatialization. OpenAL would not work without it (because it works in a 3d space // originally and making it work in 2d only requires more resource). Will not work on PS2 +#define AUDIO_REFLECTIONS // Enable audio reflections. Disabled on mobile, didn't exist yet on PS2. #define RADIO_SCROLL_TO_PREV_STATION #define AUDIO_CACHE #define PS2_AUDIO_CHANNELS // increases the maximum number of audio channels to PS2 value of 44 (PC has 28 originally) @@ -490,3 +492,6 @@ enum Config { #if defined(GTA_PS2) && defined(EXTERNAL_3D_SOUND) #error EXTERNAL_3D_SOUND cannot work on PS2 #endif +#if defined(AUDIO_REFLECTIONS) && GTA_VERSION < GTA3_PC_10 +#error AUDIO_REFLECTIONS cannot work with versions below GTA3_PC_10 +#endif \ No newline at end of file From 6b4b11d80e3b89b179a77d79ae77d0f1ad901b7c Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 17 Aug 2021 12:59:13 +0200 Subject: [PATCH 300/314] fix opengl; update librw --- src/extras/screendroplets.cpp | 4 ++-- vendor/librw | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/extras/screendroplets.cpp b/src/extras/screendroplets.cpp index 2485386b..cc86808f 100644 --- a/src/extras/screendroplets.cpp +++ b/src/extras/screendroplets.cpp @@ -741,7 +741,7 @@ uint32 im2D_UV2_Vao; void openim2d_uv2(void) { - u_xform = rw::gl3::registerUniform("u_xform"); // this doesn't add a new one, so it's safe + u_xform = rw::gl3::registerUniform("u_xform", rw::gl3::UNIFORM_VEC4); // this doesn't add a new one, so it's safe glGenBuffers(1, &im2D_UV2_Ibo); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, im2D_UV2_Ibo); @@ -803,7 +803,7 @@ RenderIndexedPrimitive_UV2(RwPrimitiveType primType, Im2DVertexUV2 *vertices, Rw setAttribPointers(im2d_UV2_attribDesc, 4); #endif - glUniform4fv(currentShader->uniformLocations[u_xform], 1, xform); + setUniform(u_xform, xform); flushCache(); glDrawElements(primTypeMap[primType], numIndices, diff --git a/vendor/librw b/vendor/librw index a5bc9723..4c4b1990 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit a5bc97232293250ae1bbd6ef6642532a541034ca +Subproject commit 4c4b199057e9570557cdf108d21795236a076755 From d4175c5315439a6afa77d0b11d463b2135a33222 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 17 Aug 2021 23:21:27 +0200 Subject: [PATCH 301/314] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index 4c4b1990..8f1321f1 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 4c4b199057e9570557cdf108d21795236a076755 +Subproject commit 8f1321f194c33b573d3e45e383bb95c41ac3477b From 5c562c3adc06044a17cabb9c4785795b0d2d7fa7 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 18 Aug 2021 15:31:58 +0300 Subject: [PATCH 302/314] More type fixes in audio --- src/audio/AudioLogic.cpp | 2 +- src/audio/AudioManager.h | 4 ++-- src/audio/MusicManager.cpp | 4 ++-- src/audio/PolRadio.cpp | 36 ++++++++++++++++++------------------ 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 7ccd7134..04df506d 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -6054,7 +6054,7 @@ cPedComments::Process() uint8 actualUsedBank; tPedComment *comment; - if (AudioManager.m_nUserPause != 0) return; + if (AudioManager.m_nUserPause) return; if (m_nCommentsInBank[m_nActiveBank]) { sampleIndex = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nSampleIndex; diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 3b413965..ed920cab 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -245,8 +245,8 @@ public: cMissionAudio m_sMissionAudio; int32 m_anRandomTable[5]; uint8 m_nTimeSpent; - uint8 m_nUserPause; - uint8 m_nPreviousUserPause; + bool8 m_nUserPause; + bool8 m_nPreviousUserPause; uint32 m_FrameCounter; cAudioManager(); diff --git a/src/audio/MusicManager.cpp b/src/audio/MusicManager.cpp index 9872589a..0752a5d8 100644 --- a/src/audio/MusicManager.cpp +++ b/src/audio/MusicManager.cpp @@ -363,14 +363,14 @@ cMusicManager::GetRadioInCar(void) CVehicle *veh = FindPlayerVehicle(); if (veh != nil){ if (UsesPoliceRadio(veh)) { - if (m_nRadioInCar == NO_TRACK || (CReplay::IsPlayingBack() && AudioManager.m_nUserPause == 0)) + if (m_nRadioInCar == NO_TRACK || (CReplay::IsPlayingBack() && !AudioManager.m_nUserPause)) return POLICE_RADIO; return m_nRadioInCar; } else return veh->m_nRadioStation; } } - if (m_nRadioInCar == NO_TRACK || (CReplay::IsPlayingBack() && AudioManager.m_nUserPause == 0)) + if (m_nRadioInCar == NO_TRACK || (CReplay::IsPlayingBack() && !AudioManager.m_nUserPause)) return RADIO_OFF; return m_nRadioInCar; } diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 4c84829a..6b663d0d 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -26,7 +26,7 @@ char SubZo2Label[8]; char SubZo3Label[8]; uint32 g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; -int8 g_nMissionAudioPlayingStatus = 2; +int8 g_nMissionAudioPlayingStatus = PLAY_STATUS_FINISHED; uint8 gSpecialSuspectLastSeenReport; uint32 gMinTimeToNextReport[NUM_CRIME_TYPES]; @@ -109,8 +109,8 @@ void cAudioManager::SetMissionScriptPoliceAudio(uint32 sfx) { if (!m_bIsInitialised) return; - if (g_nMissionAudioPlayingStatus != 1) { - g_nMissionAudioPlayingStatus = 0; + if (g_nMissionAudioPlayingStatus != PLAY_STATUS_PLAYING) { + g_nMissionAudioPlayingStatus = PLAY_STATUS_STOPPED; g_nMissionAudioSfx = sfx; } } @@ -151,7 +151,7 @@ cAudioManager::ServicePoliceRadio() if(!m_bIsInitialised) return; - if(m_nUserPause == 0) { + if(!m_nUserPause) { bool8 crimeReport = SetupCrimeReport(); #ifdef FIX_BUGS // Crash at 0x5fe6ef if(CReplay::IsPlayingBack() || !FindPlayerPed() || !FindPlayerPed()->m_pWanted) @@ -185,20 +185,20 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) static int cWait = 0; static bool8 bChannelOpen = FALSE; - static uint8 bMissionAudioPhysicalPlayingStatus = 0; + static uint8 bMissionAudioPhysicalPlayingStatus = PLAY_STATUS_STOPPED; static int32 PoliceChannelFreq = 5500; if (!m_bIsInitialised) return; - if (m_nUserPause != 0) { + if (m_nUserPause) { if (SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO)) SampleManager.StopChannel(CHANNEL_POLICE_RADIO); - if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == 1 && + if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && bMissionAudioPhysicalPlayingStatus == PLAY_STATUS_PLAYING && SampleManager.IsStreamPlaying(1)) { SampleManager.PauseStream(TRUE, 1); } } else { if (m_nPreviousUserPause && g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && - bMissionAudioPhysicalPlayingStatus == 1) { + bMissionAudioPhysicalPlayingStatus == PLAY_STATUS_PLAYING) { SampleManager.PauseStream(FALSE, 1); } if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = FALSE; @@ -211,17 +211,17 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) return; } if (g_nMissionAudioSfx != TOTAL_AUDIO_SAMPLES && !bChannelOpen) { - if (g_nMissionAudioPlayingStatus) { - if (g_nMissionAudioPlayingStatus == 1 && !bMissionAudioPhysicalPlayingStatus && + if (g_nMissionAudioPlayingStatus != PLAY_STATUS_STOPPED) { + if (g_nMissionAudioPlayingStatus == PLAY_STATUS_PLAYING && bMissionAudioPhysicalPlayingStatus == PLAY_STATUS_STOPPED && SampleManager.IsStreamPlaying(1)) { - bMissionAudioPhysicalPlayingStatus = 1; + bMissionAudioPhysicalPlayingStatus = PLAY_STATUS_PLAYING; } - if (bMissionAudioPhysicalPlayingStatus == 1) { + if (bMissionAudioPhysicalPlayingStatus == PLAY_STATUS_PLAYING) { if (SampleManager.IsStreamPlaying(1)) { DoPoliceRadioCrackle(); } else { - bMissionAudioPhysicalPlayingStatus = 2; - g_nMissionAudioPlayingStatus = 2; + bMissionAudioPhysicalPlayingStatus = PLAY_STATUS_FINISHED; + g_nMissionAudioPlayingStatus = PLAY_STATUS_FINISHED; g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; cWait = 30; } @@ -231,13 +231,13 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) SampleManager.PreloadStreamedFile(g_nMissionAudioSfx, 1); SampleManager.SetStreamedVolumeAndPan(MAX_VOLUME, 63, TRUE, 1); SampleManager.StartPreloadedStreamedFile(1); - g_nMissionAudioPlayingStatus = 1; - bMissionAudioPhysicalPlayingStatus = 0; + g_nMissionAudioPlayingStatus = PLAY_STATUS_PLAYING; + bMissionAudioPhysicalPlayingStatus = PLAY_STATUS_STOPPED; return; } } if (bChannelOpen) DoPoliceRadioCrackle(); - if ((g_nMissionAudioSfx == TOTAL_AUDIO_SAMPLES || g_nMissionAudioPlayingStatus != 1) && + if ((g_nMissionAudioSfx == TOTAL_AUDIO_SAMPLES || g_nMissionAudioPlayingStatus != PLAY_STATUS_PLAYING) && !SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO) && m_sPoliceRadioQueue.policeChannelTimer) { if (m_sPoliceRadioQueue.policeChannelTimer) { sample = m_sPoliceRadioQueue.crimesSamples[m_sPoliceRadioQueue.policeChannelCounterSeconds]; @@ -292,7 +292,7 @@ cAudioManager::SetupCrimeReport() float quarterX; float quarterY; int i; - int32 sampleIndex; + uint32 sampleIndex; bool8 processed = FALSE; if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return FALSE; From 597802ff2ed096ca72ba3cc6bee095b54180d927 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 18 Aug 2021 15:37:31 +0300 Subject: [PATCH 303/314] One more type fix --- src/audio/PolRadio.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 6b663d0d..b5df5c14 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -27,7 +27,7 @@ char SubZo3Label[8]; uint32 g_nMissionAudioSfx = TOTAL_AUDIO_SAMPLES; int8 g_nMissionAudioPlayingStatus = PLAY_STATUS_FINISHED; -uint8 gSpecialSuspectLastSeenReport; +bool8 gSpecialSuspectLastSeenReport; uint32 gMinTimeToNextReport[NUM_CRIME_TYPES]; void @@ -248,7 +248,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } if (wantedLevel == 0) { if (gSpecialSuspectLastSeenReport) { - gSpecialSuspectLastSeenReport = 0; + gSpecialSuspectLastSeenReport = FALSE; } else if (((sample >= SFX_POLICE_RADIO_MESSAGE_NOISE_1) && (sample <= SFX_POLICE_RADIO_MESSAGE_NOISE_3)) || sample == TOTAL_AUDIO_SAMPLES) { bChannelOpen = FALSE; processed = TRUE; From 01c70dfb76558baded969964e4a57f4f27f2337b Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 18 Aug 2021 18:37:10 +0300 Subject: [PATCH 304/314] Fix acceleration sound playing when exiting the vehicle --- src/audio/AudioLogic.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 04df506d..9b8e278b 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -282,7 +282,7 @@ cAudioManager::ProcessSpecial() } CPlayerPed *playerPed = FindPlayerPed(); if (playerPed) { - if(playerPed->EnteringCar() && !playerPed->bInVehicle) + if(!playerPed->EnteringCar() && !playerPed->bInVehicle) SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); } } From eda2c054489e83a03a14976747cd19e3ac60d7a4 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Wed, 18 Aug 2021 21:07:33 +0300 Subject: [PATCH 305/314] Audio: ifdef more things that aren't on ps2 --- src/audio/AudioLogic.cpp | 20 ++++++++++++++++++-- src/audio/AudioManager.cpp | 7 +++++++ src/audio/PolRadio.cpp | 2 ++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 9b8e278b..6756925d 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -246,6 +246,12 @@ cAudioManager::ProcessReverb() } #else // TODO: PS2 code + + static uint8 OldVolL = 0; + static uint8 OldVolR = 0; + + // SoundDistUp, SoundDistLeft, SoundDistRight used in here from TheCamera + SampleManager.UpdateReverb(); #endif } @@ -1197,6 +1203,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * uint8 currentGear; float gasPedalAudio; CVector pos; + bool8 slowingDown; static int16 LastAccel = 0; static int16 LastBrake = 0; @@ -1223,6 +1230,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * else accelerateState = Pads[0].GetAccelerate(); + slowingDown = params.m_fVelocityChange < -0.001f; channelUsed = SampleManager.GetChannelUsedFlag(CHANNEL_PLAYER_VEHICLE_ENGINE); transmission = params.m_pTransmission; velocityChange = params.m_fVelocityChange; @@ -1260,7 +1268,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * freqModifier = -(Min(0.2f, time) * 3000.0f * 5.0f); else freqModifier = -(Max(-0.2f, time) * 3000.0f * 5.0f); - if (params.m_fVelocityChange < -0.001f) + if (slowingDown) freqModifier = -freqModifier; } else freqModifier = 0; @@ -1268,7 +1276,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * engineSoundType = aVehicleSettings[params.m_nIndex].m_nBank; soundOffset = 3 * (engineSoundType - CAR_SFX_BANKS_OFFSET); if (accelerateState <= 0) { - if (params.m_fVelocityChange < -0.001f) { + if (slowingDown) { if (channelUsed) { SampleManager.StopChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); bAccelSampleStopped = TRUE; @@ -1356,10 +1364,14 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * } } +#ifdef GTA_PS2 + SampleManager.InitialiseChannel(CHANNEL_PLAYER_VEHICLE_ENGINE, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0); +#else if (!SampleManager.InitialiseChannel(CHANNEL_PLAYER_VEHICLE_ENGINE, soundOffset + SFX_CAR_ACCEL_1, SFX_BANK_0)) return; SampleManager.SetChannelLoopCount(CHANNEL_PLAYER_VEHICLE_ENGINE, 1); SampleManager.SetChannelLoopPoints(CHANNEL_PLAYER_VEHICLE_ENGINE, 0, -1); +#endif } #ifdef EXTERNAL_3D_SOUND @@ -1376,7 +1388,11 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * freq /= 2; SampleManager.SetChannelFrequency(CHANNEL_PLAYER_VEHICLE_ENGINE, freq); if (!channelUsed) { +#if GTA_VERSION >= GTA3_PC_10 SampleManager.SetChannelReverbFlag(CHANNEL_PLAYER_VEHICLE_ENGINE, m_bDynamicAcousticModelingStatus != FALSE); +#else + SampleManager.SetChannelReverbFlag(CHANNEL_PLAYER_VEHICLE_ENGINE, TRUE); +#endif SampleManager.StartChannel(CHANNEL_PLAYER_VEHICLE_ENGINE); } } diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 15c8c00e..a288ac12 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -955,7 +955,12 @@ cAudioManager::ProcessActiveQueues() #else emittingVol = m_bDoubleVolume ? 2 * Min(63, m_asActiveSamples[j].m_nVolume) : m_asActiveSamples[j].m_nVolume; #endif +#ifdef GTA_PS2 + { + SampleManager.InitialiseChannel(j, m_asActiveSamples[j].m_nSampleIndex, m_asActiveSamples[j].m_nBankIndex); +#else if (SampleManager.InitialiseChannel(j, m_asActiveSamples[j].m_nSampleIndex, m_asActiveSamples[j].m_nBankIndex)) { +#endif SampleManager.SetChannelFrequency(j, m_asActiveSamples[j].m_nFrequency); #ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(j, emittingVol); @@ -963,8 +968,10 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelVolume(j, emittingVol); SampleManager.SetChannelPan(j, m_asActiveSamples[j].m_nOffset); #endif +#ifndef GTA_PS2 SampleManager.SetChannelLoopPoints(j, m_asActiveSamples[j].m_nLoopStart, m_asActiveSamples[j].m_nLoopEnd); SampleManager.SetChannelLoopCount(j, m_asActiveSamples[j].m_nLoopCount); +#endif SampleManager.SetChannelReverbFlag(j, m_asActiveSamples[j].m_bReverbFlag); #ifdef EXTERNAL_3D_SOUND if (m_asActiveSamples[j].m_bIs2D) { diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index b5df5c14..b1460b3c 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -271,8 +271,10 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) SampleManager.SetChannelFrequency(CHANNEL_POLICE_RADIO, freq); SampleManager.SetChannelVolume(CHANNEL_POLICE_RADIO, 100); SampleManager.SetChannelPan(CHANNEL_POLICE_RADIO, 63); +#ifndef GTA_PS2 SampleManager.SetChannelLoopCount(CHANNEL_POLICE_RADIO, 1); SampleManager.SetChannelLoopPoints(CHANNEL_POLICE_RADIO, 0, -1); +#endif SampleManager.StartChannel(CHANNEL_POLICE_RADIO); } if (processed) ResetPoliceRadio(); From d3e7ab933de880cd287243e5aec66bf62564372a Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 19 Aug 2021 17:02:26 +0200 Subject: [PATCH 306/314] update librw --- vendor/librw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/librw b/vendor/librw index 8f1321f1..22ce63a1 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 8f1321f194c33b573d3e45e383bb95c41ac3477b +Subproject commit 22ce63a114be1b84357dea0ba597c8926d465d37 From 0e5ffb8c34982c5bb3f9d67b2cd353ab1c274e34 Mon Sep 17 00:00:00 2001 From: aap Date: Fri, 20 Aug 2021 10:29:33 +0200 Subject: [PATCH 307/314] CAutomobile fixes --- src/vehicles/Automobile.cpp | 47 +++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp index 7b3a8921..417dd140 100644 --- a/src/vehicles/Automobile.cpp +++ b/src/vehicles/Automobile.cpp @@ -1363,7 +1363,7 @@ CAutomobile::PreRender(void) break; default: - if(Abs(fwdSpeed) > 0.5f) + if(Abs(fwdSpeed) > 5.0f) AddWheelDirtAndWater(&m_aWheelColPoints[i], drawParticles); if(m_aWheelSkidmarkBloody[i] && m_aWheelTimer[i] > 0.0f) CSkidmarks::RegisterOne((uintptr)this + i, m_aWheelColPoints[i].point, @@ -1388,7 +1388,7 @@ CAutomobile::PreRender(void) CVector(0.0f, 0.0f, 0.0f)); if(m_aWheelTimer[CARWHEEL_REAR_LEFT] > 0.0f) - CSkidmarks::RegisterOne((uintptr)this + CARWHEEL_REAR_LEFT, + CSkidmarks::RegisterOne((uintptr)this + 5, m_aWheelColPoints[CARWHEEL_REAR_LEFT].point + offset, GetForward().x, GetForward().y, &m_aWheelSkidmarkMuddy[CARWHEEL_REAR_LEFT], &m_aWheelSkidmarkBloody[CARWHEEL_REAR_LEFT]); @@ -1406,12 +1406,12 @@ CAutomobile::PreRender(void) CVector(0.0f, 0.0f, 0.0f)); if(m_aWheelTimer[CARWHEEL_REAR_RIGHT] > 0.0f) - CSkidmarks::RegisterOne((uintptr)this + CARWHEEL_REAR_RIGHT, + CSkidmarks::RegisterOne((uintptr)this + 6, m_aWheelColPoints[CARWHEEL_REAR_RIGHT].point + offset, GetForward().x, GetForward().y, &m_aWheelSkidmarkMuddy[CARWHEEL_REAR_RIGHT], &m_aWheelSkidmarkBloody[CARWHEEL_REAR_RIGHT]); break; - default: break; + default: break; } } @@ -1539,7 +1539,7 @@ CAutomobile::PreRender(void) r *= f; g *= f; b *= f; - }else if(t > 412){ + }else if(t > (512-100)){ float f = (512-t)/100.0f; r *= f; g *= f; @@ -1770,20 +1770,20 @@ CAutomobile::PreRender(void) // Taillight coronas if(behindness > 0.0f){ // Behind car - float intensity = 0.4f*behindness + 0.4f; - float size = (behindness + 1.0f)/2.0f; + float intensity = (behindness + 1.0f)*0.4f; + float size = (behindness + 1.0f)*0.5f; if(m_fGasPedal < 0.0f){ // reversing intensity += 0.4f; size += 0.3f; if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 2, 128*intensity, 128*intensity, 128*intensity, 255, + CCoronas::RegisterCorona((uintptr)this + 14, 128*intensity, 128*intensity, 128*intensity, 255, lightL, size, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 3, 128*intensity, 128*intensity, 128*intensity, 255, + CCoronas::RegisterCorona((uintptr)this + 15, 128*intensity, 128*intensity, 128*intensity, 255, lightR, size, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle); @@ -1795,23 +1795,23 @@ CAutomobile::PreRender(void) if(alarmOff){ if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 2, 0, 0, 0, 0, + CCoronas::RegisterCorona((uintptr)this + 14, 0, 0, 0, 0, lightL, size, 0.0f, CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 3, 0, 0, 0, 0, + CCoronas::RegisterCorona((uintptr)this + 15, 0, 0, 0, 0, lightR, size, 0.0f, CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle); }else{ if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 2, 128*intensity, 0, 0, 255, + CCoronas::RegisterCorona((uintptr)this + 14, 128*intensity, 0, 0, 255, lightL, size, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 3, 128*intensity, 0, 0, 255, + CCoronas::RegisterCorona((uintptr)this + 15, 128*intensity, 0, 0, 255, lightR, size, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STREAK, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, angle); @@ -1819,10 +1819,11 @@ CAutomobile::PreRender(void) } }else{ // In front of car + // missing LODDistMultiplier probably a BUG if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::UpdateCoronaCoors((uintptr)this + 2, lightL, 50.0f*TheCamera.LODDistMultiplier, angle); + CCoronas::UpdateCoronaCoors((uintptr)this + 14, lightL, 50.0f, angle); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::UpdateCoronaCoors((uintptr)this + 3, lightR, 50.0f*TheCamera.LODDistMultiplier, angle); + CCoronas::UpdateCoronaCoors((uintptr)this + 15, lightR, 50.0f, angle); } // bright lights @@ -1888,12 +1889,12 @@ CAutomobile::PreRender(void) if(m_fGasPedal < 0.0f){ // reversing if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 2, 120, 120, 120, 255, + CCoronas::RegisterCorona((uintptr)this + 14, 120, 120, 120, 255, lightL, 1.2f, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 3, 120, 120, 120, 255, + CCoronas::RegisterCorona((uintptr)this + 15, 120, 120, 120, 255, lightR, 1.2f, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f); @@ -1904,12 +1905,12 @@ CAutomobile::PreRender(void) }else{ // braking if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 2, 120, 0, 0, 255, + CCoronas::RegisterCorona((uintptr)this + 14, 120, 0, 0, 255, lightL, 1.2f, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::RegisterCorona((uintptr)this + 3, 120, 0, 0, 255, + CCoronas::RegisterCorona((uintptr)this + 15, 120, 0, 0, 255, lightR, 1.2f, 50.0f*TheCamera.LODDistMultiplier, CCoronas::TYPE_STAR, CCoronas::FLARE_NONE, CCoronas::REFLECTION_ON, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_ON, 0.0f); @@ -1920,15 +1921,15 @@ CAutomobile::PreRender(void) } }else{ if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::UpdateCoronaCoors((uintptr)this + 2, lightL, 50.0f*TheCamera.LODDistMultiplier, 0.0f); + CCoronas::UpdateCoronaCoors((uintptr)this + 14, lightL, 50.0f*TheCamera.LODDistMultiplier, 0.0f); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::UpdateCoronaCoors((uintptr)this + 3, lightR, 50.0f*TheCamera.LODDistMultiplier, 0.0f); + CCoronas::UpdateCoronaCoors((uintptr)this + 15, lightR, 50.0f*TheCamera.LODDistMultiplier, 0.0f); } }else{ if(Damage.GetLightStatus(VEHLIGHT_REAR_LEFT) == LIGHT_STATUS_OK) - CCoronas::UpdateCoronaCoors((uintptr)this + 2, lightL, 50.0f*TheCamera.LODDistMultiplier, 0.0f); + CCoronas::UpdateCoronaCoors((uintptr)this + 14, lightL, 50.0f*TheCamera.LODDistMultiplier, 0.0f); if(Damage.GetLightStatus(VEHLIGHT_REAR_RIGHT) == LIGHT_STATUS_OK) - CCoronas::UpdateCoronaCoors((uintptr)this + 3, lightR, 50.0f*TheCamera.LODDistMultiplier, 0.0f); + CCoronas::UpdateCoronaCoors((uintptr)this + 15, lightR, 50.0f*TheCamera.LODDistMultiplier, 0.0f); } } // end of lights From c168786b421a18f66202faa481a2570ef33f9708 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 20 Aug 2021 13:02:58 +0300 Subject: [PATCH 308/314] Audio refactoring: * renamed tSound fields, added descriptions for each field * getting rid of term 'intensity' in favour of 'max distance' * renamed two cAudioManager fields * fix volume not being reduced for stopping sounds that are looped * reverse a few PS2 bits --- src/audio/AudioCollision.cpp | 18 +- src/audio/AudioLogic.cpp | 1331 +++++++++++++++++----------------- src/audio/AudioManager.cpp | 185 +++-- src/audio/AudioManager.h | 72 +- src/audio/PolRadio.cpp | 10 +- 5 files changed, 828 insertions(+), 788 deletions(-) diff --git a/src/audio/AudioCollision.cpp b/src/audio/AudioCollision.cpp index 02231773..5af762f9 100644 --- a/src/audio/AudioCollision.cpp +++ b/src/audio/AudioCollision.cpp @@ -261,14 +261,14 @@ cAudioManager::SetUpOneShotCollisionSound(const cAudioCollision &col) m_sQueueSample.m_vecPos = col.m_vecPosition; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 11; + m_sQueueSample.m_nPriority = 11; m_sQueueSample.m_nLoopCount = 1; SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = CollisionSoundIntensity; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -290,15 +290,15 @@ cAudioManager::SetUpLoopingCollisionSound(const cAudioCollision &col, uint8 coun m_sQueueSample.m_vecPos = col.m_vecPosition; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nPriority = 7; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = CollisionSoundIntensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = CollisionSoundIntensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 5; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index 6756925d..b1f269ec 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -38,6 +38,9 @@ #include "ZoneCull.h" #include "sampman.h" +// TODO: Get rid of *intensity* consts (and get rid of term 'intensity' in general) +// Make them defines, not floats because they were not floats on PS2 + #ifndef GTA_PS2 #define CHANNEL_PLAYER_VEHICLE_ENGINE m_nActiveSamples #endif @@ -239,7 +242,7 @@ cAudioManager::ProcessReverb() #endif ; i++) { - if (m_asActiveSamples[i].m_bReverbFlag) + if (m_asActiveSamples[i].m_bReverb) SampleManager.SetChannelReverbFlag(i, TRUE); } #endif @@ -302,53 +305,53 @@ cAudioManager::ProcessEntity(int32 id) switch (m_asAudioEntities[id].m_nType) { case AUDIOTYPE_PHYSICAL: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessPhysical(id); } break; case AUDIOTYPE_EXPLOSION: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessExplosions(id); } break; case AUDIOTYPE_FIRE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessFires(id); } break; case AUDIOTYPE_WEATHER: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessWeather(id); } break; case AUDIOTYPE_CRANE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessCrane(); } break; case AUDIOTYPE_SCRIPTOBJECT: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessScriptObject(id); } break; case AUDIOTYPE_BRIDGE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessBridge(); } break; case AUDIOTYPE_FRONTEND: - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bReverb = FALSE; ProcessFrontEnd(); break; case AUDIOTYPE_PROJECTILE: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessProjectiles(); } break; @@ -358,13 +361,13 @@ cAudioManager::ProcessEntity(int32 id) break; case AUDIOTYPE_FIREHYDRANT: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessFireHydrant(); } break; case AUDIOTYPE_WATERCANNON: if (!m_nUserPause) { - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; ProcessWaterCannon(id); } break; @@ -689,15 +692,15 @@ cAudioManager::ProcessRainOnVehicle(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_CAR_RAIN_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 9; + m_sQueueSample.m_nPriority = 9; m_sQueueSample.m_nFrequency = m_anRandomTable[1] % 4000 + 28000; m_sQueueSample.m_nLoopCount = 1; SET_EMITTING_VOLUME((uint8)emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = rainOnVehicleIntensity; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_MaxDistance = rainOnVehicleIntensity; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = FALSE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -741,16 +744,16 @@ cAudioManager::ProcessReverseGear(cVehicleParams& params) } m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_nFrequency = (6000.f * modificator) + 7000; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_SoundIntensity = reverseGearIntensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = reverseGearIntensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 5; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -791,16 +794,16 @@ cAudioManager::ProcessModelCarEngine(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_REMOTE_CONTROLLED_CAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = (11025.f * velocityChange / params.m_pTransmission->fMaxVelocity + 11025.f); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -834,7 +837,7 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; if (params.m_pVehicle->m_nSurfaceTouched == SURFACE_WATER) { m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; freq = 6050 * emittingVol / 30 + 16000; @@ -849,10 +852,10 @@ cAudioManager::ProcessVehicleRoadNoise(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 4; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -888,7 +891,7 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_ROAD_NOISE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; multiplier = (m_sQueueSample.m_fDistance / SOUND_INTENSITY) * 0.5f; freq = SampleManager.GetSampleBaseFrequency(SFX_ROAD_NOISE); m_sQueueSample.m_nFrequency = freq + freq * multiplier; @@ -896,10 +899,10 @@ cAudioManager::ProcessWetRoadNoise(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 4; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1034,7 +1037,7 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) } m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_nFrequency = freq + 100 * m_sQueueSample.m_nEntityIndex % 1000; if (m_sQueueSample.m_nSampleIndex == SFX_CAR_IDLE_6 || m_sQueueSample.m_nSampleIndex == SFX_CAR_REV_6) m_sQueueSample.m_nFrequency /= 2; @@ -1042,10 +1045,10 @@ cAudioManager::ProcessVehicleEngine(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 8; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 8; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1093,20 +1096,20 @@ cAudioManager::AddPlayerCarSample(uint8 emittingVolume, uint32 freq, uint32 samp m_sQueueSample.m_nBankIndex = SFX_BANK_0; #endif // GTA_PS2 m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nFrequency = freq; if (notLooping) { m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nReleasingVolumeDivider = 8; + m_sQueueSample.m_nFramesToPlay = 8; } else { m_sQueueSample.m_nLoopCount = 1; } SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_SoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 50.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1140,16 +1143,16 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_CESNA_IDLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nFrequency = 12500; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nReleasingVolumeDivider = 8; + m_sQueueSample.m_nFramesToPlay = 8; SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; - m_sQueueSample.m_SoundIntensity = 200.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 200.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1160,16 +1163,16 @@ cAudioManager::ProcessCesna(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_CESNA_REV; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nFrequency = 25000; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nReleasingVolumeDivider = 4; + m_sQueueSample.m_nFramesToPlay = 4; SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 8.0f; - m_sQueueSample.m_SoundIntensity = 90.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 90.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1341,7 +1344,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * } else { TranslateEntity(&m_sQueueSample.m_vecPos, &pos); #ifndef EXTERNAL_3D_SOUND - m_sQueueSample.m_nOffset = ComputePan(m_sQueueSample.m_fDistance, &pos); + m_sQueueSample.m_nPan = ComputePan(m_sQueueSample.m_fDistance, &pos); #endif if (bAccelSampleStopped) { if (CurrentPretendGear != 1 || currentGear != 2) { @@ -1381,7 +1384,7 @@ cAudioManager::ProcessPlayersVehicleEngine(cVehicleParams& params, CAutomobile * #else SampleManager.SetChannelVolume(CHANNEL_PLAYER_VEHICLE_ENGINE, ComputeVolume(85, 50.0f, m_sQueueSample.m_fDistance)); - SampleManager.SetChannelPan(CHANNEL_PLAYER_VEHICLE_ENGINE, m_sQueueSample.m_nOffset); + SampleManager.SetChannelPan(CHANNEL_PLAYER_VEHICLE_ENGINE, m_sQueueSample.m_nPan); #endif freq = GearFreqAdj[CurrentPretendGear] + freqModifier + 22050; if (engineSoundType == SFX_BANK_TRUCK) @@ -1497,15 +1500,15 @@ cAudioManager::ProcessVehicleSkidding(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 8; + m_sQueueSample.m_nPriority = 8; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1586,16 +1589,16 @@ cAudioManager::ProcessVehicleHorn(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = aVehicleSettings[params.m_nIndex].m_nHornSample; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_nFrequency = aVehicleSettings[params.m_nIndex].m_nHornFrequency; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 5.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1668,15 +1671,15 @@ cAudioManager::ProcessVehicleSirenOrAlarm(cVehicleParams& params) } m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 7.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 5; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); return TRUE; @@ -1710,16 +1713,16 @@ cAudioManager::ProcessVehicleReverseWarning(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_REVERSE_WARNING; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_nFrequency = (100 * m_sQueueSample.m_nEntityIndex & 1023) + SampleManager.GetSampleBaseFrequency(SFX_REVERSE_WARNING); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(60); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1756,14 +1759,14 @@ cAudioManager::ProcessVehicleDoors(cVehicleParams& params) m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) + RandomDisplacement(1000); m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 10; + m_sQueueSample.m_nPriority = 10; m_sQueueSample.m_nLoopCount = 1; SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 1.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } @@ -1800,14 +1803,14 @@ cAudioManager::ProcessAirBrakes(cVehicleParams& params) m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 10; + m_sQueueSample.m_nPriority = 10; m_sQueueSample.m_nLoopCount = 1; SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 30.0f; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 30.0f; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1840,12 +1843,12 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) if (engineStatus < 225) { m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; emittingVolume = 6; - m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nPriority = 7; m_sQueueSample.m_nFrequency = 40000; } else { emittingVolume = 60; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; - m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nPriority = 7; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); } CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); @@ -1858,10 +1861,10 @@ cAudioManager::ProcessEngineDamage(cVehicleParams& params) SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = engineDamageIntensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = engineDamageIntensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1885,16 +1888,16 @@ cAudioManager::ProcessCarBombTick(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_COUNTDOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COUNTDOWN); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(60); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = 40.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 40.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -1956,9 +1959,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) #endif m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; SET_SOUND_REFLECTION(TRUE); break; } @@ -1994,9 +1997,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) #endif m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; SET_SOUND_REFLECTION(TRUE); break; } @@ -2008,9 +2011,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nCounter = 68; emittingVol = m_anRandomTable[1] % 30 + 60; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK); - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; } break; case SOUND_CAR_JUMP: { const float SOUND_INTENSITY = 35.0f; @@ -2027,9 +2030,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nFrequency *= 2; emittingVol /= 2; } - m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_nPriority = 6; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; break; } case SOUND_CAR_ENGINE_START: { @@ -2040,9 +2043,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 33; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_STARTER); - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; SET_SOUND_REFLECTION(TRUE); break; } @@ -2053,9 +2056,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nCounter = 37; m_sQueueSample.m_nFrequency = 9 * SampleManager.GetSampleBaseFrequency(SFX_GLASS_SHARD_1) / 10; m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 10 + 30; break; @@ -2071,9 +2074,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 51; m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[0] % 15 + 55; break; @@ -2084,10 +2087,10 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 86; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SUSPENSION_SLOW_MOVE_LOOP); - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_nReleasingVolumeDivider = 7; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_nFramesToPlay = 7; noReflections = TRUE; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[0] % 15 + 55; @@ -2100,9 +2103,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nCounter = 87; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHAG_SUSPENSION); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[1] % 15 + 55; break; @@ -2121,9 +2124,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) if (WaveIndex > 46) WaveIndex = 41; m_sQueueSample.m_nFrequency = (7000.f * relVol) + 6000; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; emittingVol = (55.f * relVol); maxDist = SQR(SOUND_INTENSITY); break; @@ -2134,9 +2137,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 47; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BOAT_THUMB_OFF) + RandomDisplacement(600); - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; emittingVol = m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_afVolume[i]; maxDist = SQR(SOUND_INTENSITY); break; @@ -2148,9 +2151,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 59; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 11025; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 5.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[1] % 20 + 70; break; @@ -2164,10 +2167,10 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 79; m_sQueueSample.m_nFrequency = (3000.f * vol * 2500.0f / 96.0f) + 9000; - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; emittingVol = (37.f * vol * 2500.0f / 96.0f) + 90; maxDist = SQR(SOUND_INTENSITY); noReflections = TRUE; @@ -2179,9 +2182,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 80; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BOMB_BEEP); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); SET_SOUND_REFLECTION(TRUE); emittingVol = 60; @@ -2193,9 +2196,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 81; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_LAND_WHEELS); - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 25 + 75; break; @@ -2212,9 +2215,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) GunIndex = 53; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; break; } case SOUND_WEAPON_HIT_VEHICLE: { @@ -2224,9 +2227,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nCounter = 34; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nPriority = 7; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[3] % 20 + 90; break; @@ -2240,9 +2243,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 36; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ARM_BOMB); - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; SET_SOUND_REFLECTION(TRUE); emittingVol = 50; maxDist = SQR(SOUND_INTENSITY); @@ -2270,9 +2273,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 15; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 16000; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); SET_SOUND_REFLECTION(TRUE); emittingVol = m_anRandomTable[4] % 20 + 90; @@ -2284,9 +2287,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 48; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PED_CRUNCH_1) + RandomDisplacement(600); - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 40.0f; + m_sQueueSample.m_MaxDistance = 40.0f; ++CrunchOffset; maxDist = SQR(SOUND_INTENSITY); emittingVol = m_anRandomTable[4] % 20 + 55; @@ -2305,9 +2308,9 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nCounter = 50; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) / 2; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; maxDist = SQR(SOUND_INTENSITY); break; } @@ -2316,18 +2319,18 @@ cAudioManager::ProcessVehicleOneShots(cVehicleParams& params) } if (params.m_fDistance < maxDist) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { if (noReflections) { m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bStatic = FALSE; } else { m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; } SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) SET_EMITTING_VOLUME(emittingVol); - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; m_sQueueSample.m_bIs2D = FALSE; AddSampleToRequestedQueue(); } @@ -2359,16 +2362,16 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_TRAIN_FAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_FAR); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 3.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2381,16 +2384,16 @@ cAudioManager::ProcessTrainNoise(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_TRAIN_NEAR; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_NEAR) + 100 * m_sQueueSample.m_nEntityIndex % 987; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2426,15 +2429,15 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(80); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = intensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 7; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2464,15 +2467,15 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = intensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 7; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2520,15 +2523,15 @@ cAudioManager::ProcessBoatEngine(cVehicleParams& params) m_sQueueSample.m_nFrequency += (m_sQueueSample.m_nEntityIndex * 65536) % 1000; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 7; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = intensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 7; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2562,16 +2565,16 @@ cAudioManager::ProcessBoatMovingOverWater(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = SFX_BOAT_WATER_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_nFrequency = (6050.f * multiplier) + 16000; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(vol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = 50.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 50.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2617,16 +2620,16 @@ cAudioManager::ProcessHelicopter(cVehicleParams& params) m_sQueueSample.m_nSampleIndex = i + SFX_HELI_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nFrequency = 1200 * heli->m_nHeliId + SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 6.0f; - m_sQueueSample.m_SoundIntensity = gHeliSfxRanges[i].m_fMaxDistance; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = gHeliSfxRanges[i].m_fMaxDistance; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2791,16 +2794,16 @@ cAudioManager::SetupJumboTaxiSound(uint8 vol) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = GetJumboTaxiFreq(); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 4; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2822,16 +2825,16 @@ cAudioManager::SetupJumboWhineSound(uint8 emittingVol, uint32 freq) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_WHINE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 4; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2852,16 +2855,16 @@ cAudioManager::SetupJumboEngineSound(uint8 vol, uint32 freq) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_ENGINE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = freq; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 4; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 4; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2882,16 +2885,16 @@ cAudioManager::SetupJumboFlySound(uint8 emittingVol) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_DIST_FLY; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_DIST_FLY); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 5; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -2912,23 +2915,23 @@ cAudioManager::SetupJumboRumbleSound(uint8 emittingVol) m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_JUMBO_RUMBLE); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 12; - m_sQueueSample.m_nOffset = 0; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 12; + m_sQueueSample.m_nPan = 0; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); m_sQueueSample.m_nCounter = 6; m_sQueueSample.m_nSampleIndex = SFX_JUMBO_RUMBLE; m_sQueueSample.m_nFrequency += 200; - m_sQueueSample.m_nOffset = 127; + m_sQueueSample.m_nPan = 127; AddSampleToRequestedQueue(); } return TRUE; @@ -2992,16 +2995,16 @@ cAudioManager::ProcessPedHeadphones(cPedParams ¶ms) m_sQueueSample.m_nSampleIndex = SFX_HEADPHONES; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_HEADPHONES); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = 7.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 5; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = 7.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 5; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -3100,14 +3103,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) default: break; } - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_MaxDistance = 20.0f; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_SOUND_REFLECTION(TRUE); break; case SOUND_FALL_LAND: @@ -3127,14 +3130,14 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 17); - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 30.0f; + m_sQueueSample.m_MaxDistance = 30.0f; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_SOUND_REFLECTION(TRUE); break; case SOUND_FIGHT_PUNCH_33: @@ -3189,16 +3192,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nCounter = iSound; narrowSoundRange = TRUE; ++iSound; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 30.0f; + m_sQueueSample.m_MaxDistance = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[3] % 26 + 100; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_SOUND_REFLECTION(TRUE); break; case SOUND_WEAPON_BAT_ATTACK: @@ -3207,19 +3210,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nCounter = iSound++; narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 22000; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 30.0f; + m_sQueueSample.m_MaxDistance = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 20 + 100; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3234,19 +3237,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COLT45_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 50.0f; + m_sQueueSample.m_MaxDistance = 50.0f; maxDist = SQR(50); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[1] % 10 + 90; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3258,16 +3261,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 80.0f; + m_sQueueSample.m_MaxDistance = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[3] % 15 + 70; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; break; case WEAPONTYPE_SHOTGUN: m_sQueueSample.m_nSampleIndex = SFX_SHOTGUN_LEFT; @@ -3276,19 +3279,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SHOTGUN_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 10 + 100; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3300,16 +3303,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_AK47_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 80.0f; + m_sQueueSample.m_MaxDistance = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[1] % 15 + 70; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; break; case WEAPONTYPE_M16: m_sQueueSample.m_nSampleIndex = SFX_M16_LEFT; @@ -3318,16 +3321,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_M16_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 80.0f; + m_sQueueSample.m_MaxDistance = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 15 + 70; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; break; case WEAPONTYPE_SNIPERRIFLE: m_sQueueSample.m_nSampleIndex = SFX_SNIPER_LEFT; @@ -3336,19 +3339,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_SNIPER_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 10 + 110; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3360,19 +3363,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 90.0f; + m_sQueueSample.m_MaxDistance = 90.0f; maxDist = SQR(90); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[0] % 20 + 80; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3383,19 +3386,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nCounter = 9; emittingVol = 90; m_sQueueSample.m_nFrequency = (10 * m_sQueueSample.m_nEntityIndex & 2047) + SampleManager.GetSampleBaseFrequency(SFX_FLAMETHROWER_LEFT); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 0; SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) SET_EMITTING_VOLUME(90); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 6; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 6; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3444,15 +3447,15 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency += RandomDisplacement(300); m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 30.0f; + m_sQueueSample.m_MaxDistance = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS SET_EMITTING_VOLUME(75); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_SOUND_REFLECTION(TRUE); break; case SOUND_WEAPON_AK47_BULLET_ECHO: @@ -3464,19 +3467,19 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_UZI_END_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 80.0f; + m_sQueueSample.m_MaxDistance = 80.0f; maxDist = SQR(80); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[4] % 10 + 40; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; #ifdef AUDIO_REFLECTIONS if (m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bRequireReflection = TRUE; + m_sQueueSample.m_bReflections = TRUE; else #endif stereo = TRUE; @@ -3487,16 +3490,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_FLAMETHROWER_START_LEFT); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; maxDist = SQR(60); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = 70; SET_EMITTING_VOLUME(70); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; break; case SOUND_WEAPON_HIT_PED: m_sQueueSample.m_nSampleIndex = SFX_BULLET_PED; @@ -3505,16 +3508,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BULLET_PED); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 8); - m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nPriority = 7; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 30.0f; + m_sQueueSample.m_MaxDistance = 30.0f; maxDist = SQR(30); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[0] % 20 + 90; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; break; case SOUND_SPLASH: m_sQueueSample.m_nSampleIndex = SFX_SPLASH_1; @@ -3522,16 +3525,16 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) m_sQueueSample.m_nCounter = iSound++; narrowSoundRange = TRUE; m_sQueueSample.m_nFrequency = RandomDisplacement(1400) + 20000; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = 40.0f; + m_sQueueSample.m_MaxDistance = 40.0f; maxDist = SQR(40); m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS emittingVol = m_anRandomTable[2] % 30 + 70; SET_EMITTING_VOLUME(emittingVol); m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_SOUND_REFLECTION(TRUE); break; default: @@ -3543,20 +3546,20 @@ cAudioManager::ProcessPedOneShots(cPedParams ¶ms) iSound = 21; if (params.m_fDistance < maxDist) { CalculateDistance(params.m_bDistanceCalculated, params.m_fDistance); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { if (stereo) { - if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_SoundIntensity) { + if (m_sQueueSample.m_fDistance < 0.2f * m_sQueueSample.m_MaxDistance) { m_sQueueSample.m_bIs2D = TRUE; - m_sQueueSample.m_nOffset = 0; + m_sQueueSample.m_nPan = 0; } else { stereo = FALSE; } } - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; AddSampleToRequestedQueue(); if (stereo) { - m_sQueueSample.m_nOffset = 127; + m_sQueueSample.m_nPan = 127; ++m_sQueueSample.m_nSampleIndex; if (m_asAudioEntities[m_sQueueSample.m_nEntityIndex].m_awAudioEvent[i] != SOUND_WEAPON_SHOT_FIRED || weapon->m_eWeaponType != WEAPONTYPE_FLAMETHROWER) { @@ -6081,7 +6084,7 @@ cPedComments::Process() AudioManager.m_sQueueSample.m_nCounter = 0; AudioManager.m_sQueueSample.m_nSampleIndex = sampleIndex; AudioManager.m_sQueueSample.m_nBankIndex = SFX_BANK_PED_COMMENTS; - AudioManager.m_sQueueSample.m_nReleasingVolumeModificator = 3; + AudioManager.m_sQueueSample.m_nPriority = 3; AudioManager.m_sQueueSample.m_nVolume = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_nVolume; AudioManager.m_sQueueSample.m_fDistance = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_fDistance; AudioManager.m_sQueueSample.m_nLoopCount = 1; @@ -6129,31 +6132,31 @@ cPedComments::Process() case SFX_POLICE_HELI_28: case SFX_POLICE_HELI_29: #endif - AudioManager.m_sQueueSample.m_SoundIntensity = 400.0f; + AudioManager.m_sQueueSample.m_MaxDistance = 400.0f; break; default: - AudioManager.m_sQueueSample.m_SoundIntensity = 50.0f; + AudioManager.m_sQueueSample.m_MaxDistance = 50.0f; break; } - AudioManager.m_sQueueSample.m_bReleasingSoundFlag = TRUE; + AudioManager.m_sQueueSample.m_bStatic = TRUE; AudioManager.m_sQueueSample.m_vecPos = m_asPedComments[m_nActiveBank][m_nIndexMap[m_nActiveBank][0]].m_vecPos; if (sampleIndex >= SFX_AMMU_D && sampleIndex <= SFX_AMMU_F) { - AudioManager.m_sQueueSample.m_bReverbFlag = FALSE; + AudioManager.m_sQueueSample.m_bReverb = FALSE; #ifdef AUDIO_REFLECTIONS - AudioManager.m_sQueueSample.m_bRequireReflection = FALSE; + AudioManager.m_sQueueSample.m_bReflections = FALSE; #endif #ifdef FIX_BUGS } else if (sampleIndex >= SFX_POLICE_HELI_1 && sampleIndex <= SFX_POLICE_HELI_29) { - AudioManager.m_sQueueSample.m_bReverbFlag = TRUE; + AudioManager.m_sQueueSample.m_bReverb = TRUE; #ifdef AUDIO_REFLECTIONS - AudioManager.m_sQueueSample.m_bRequireReflection = FALSE; + AudioManager.m_sQueueSample.m_bReflections = FALSE; #endif // AUDIO_REFLECTIONS #endif // FIX_BUGS } else { - AudioManager.m_sQueueSample.m_bReverbFlag = TRUE; + AudioManager.m_sQueueSample.m_bReverb = TRUE; #ifdef AUDIO_REFLECTIONS - AudioManager.m_sQueueSample.m_bRequireReflection = TRUE; + AudioManager.m_sQueueSample.m_bReflections = TRUE; #endif } @@ -6208,53 +6211,53 @@ cAudioManager::ProcessExplosions(int32 explosion) case EXPLOSION_ROCKET: case EXPLOSION_BARREL: case EXPLOSION_TANK_GRENADE: - m_sQueueSample.m_SoundIntensity = 400.0f; + m_sQueueSample.m_MaxDistance = 400.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_2; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; break; case EXPLOSION_MOLOTOV: - m_sQueueSample.m_SoundIntensity = 200.0f; + m_sQueueSample.m_MaxDistance = 200.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_3; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 19000; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; break; case EXPLOSION_MINE: case EXPLOSION_HELI_BOMB: - m_sQueueSample.m_SoundIntensity = 300.0f; + m_sQueueSample.m_MaxDistance = 300.0f; m_sQueueSample.m_nSampleIndex = SFX_ROCKET_LEFT; m_sQueueSample.m_nFrequency = RandomDisplacement(1000) + 12347; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_0; break; default: - m_sQueueSample.m_SoundIntensity = 400.0f; + m_sQueueSample.m_MaxDistance = 400.0f; m_sQueueSample.m_nSampleIndex = SFX_EXPLOSION_1; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 38000; if (type == EXPLOSION_HELI) m_sQueueSample.m_nFrequency = 8 * m_sQueueSample.m_nFrequency / 10; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA; break; } pos = CExplosion::GetExplosionPosition(i); m_sQueueSample.m_vecPos = *pos; distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_EMITTING_VOLUME(MAX_VOLUME); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } @@ -6276,53 +6279,53 @@ cAudioManager::ProcessFires(int32) if (entity) { switch (entity->GetType()) { case ENTITY_TYPE_BUILDING: - m_sQueueSample.m_SoundIntensity = 50.0f; + m_sQueueSample.m_MaxDistance = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; emittingVol = 100; m_sQueueSample.m_nFrequency = 8 * SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE) / 10; m_sQueueSample.m_nFrequency += i * (m_sQueueSample.m_nFrequency / 64); - m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_nPriority = 6; break; case ENTITY_TYPE_PED: - m_sQueueSample.m_SoundIntensity = 25.0f; + m_sQueueSample.m_MaxDistance = 25.0f; m_sQueueSample.m_nSampleIndex = SFX_PED_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE); emittingVol = 60; m_sQueueSample.m_nFrequency += i * (m_sQueueSample.m_nFrequency / 64); - m_sQueueSample.m_nReleasingVolumeModificator = 10; + m_sQueueSample.m_nPriority = 10; break; default: - m_sQueueSample.m_SoundIntensity = 50.0f; + m_sQueueSample.m_MaxDistance = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); m_sQueueSample.m_nFrequency += i * (m_sQueueSample.m_nFrequency / 64); emittingVol = 80; - m_sQueueSample.m_nReleasingVolumeModificator = 8; + m_sQueueSample.m_nPriority = 8; } } else { - m_sQueueSample.m_SoundIntensity = 50.0f; + m_sQueueSample.m_MaxDistance = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); m_sQueueSample.m_nFrequency += i * (m_sQueueSample.m_nFrequency / 64); emittingVol = 80; - m_sQueueSample.m_nReleasingVolumeModificator = 8; + m_sQueueSample.m_nPriority = 8; } m_sQueueSample.m_vecPos = gFireManager.m_aFires[i].m_vecPos; distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nReleasingVolumeDivider = 10; + m_sQueueSample.m_nFramesToPlay = 10; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bStatic = FALSE; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -6345,27 +6348,27 @@ cAudioManager::ProcessWaterCannon(int32) #ifdef FIX_BUGS m_sQueueSample.m_nVolume = ComputeVolume(50, SOUND_INTENSITY, m_sQueueSample.m_fDistance); #else - m_sQueueSample.m_nVolume = ComputeVolume(50, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(50, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); #endif if (m_sQueueSample.m_nVolume > 0) { #ifdef FIX_BUGS - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; #else - m_sQueueSample.m_SoundIntensity = SQR(SOUND_INTENSITY); + m_sQueueSample.m_MaxDistance = SQR(SOUND_INTENSITY); #endif m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = 15591; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_nCounter = i; m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_nReleasingVolumeDivider = 8; + m_sQueueSample.m_nFramesToPlay = 8; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_bStatic = FALSE; SET_EMITTING_VOLUME(50); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -6419,14 +6422,14 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) } case SCRIPT_SOUND_GATE_START_CLUNK: case SCRIPT_SOUND_GATE_STOP_CLUNK: - m_sQueueSample.m_SoundIntensity = 40.0f; + m_sQueueSample.m_MaxDistance = 40.0f; m_sQueueSample.m_nSampleIndex = SFX_COL_GATE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; if (sound == SCRIPT_SOUND_GATE_START_CLUNK) m_sQueueSample.m_nFrequency = 10600; else m_sQueueSample.m_nFrequency = 9000; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(TRUE); @@ -6435,12 +6438,12 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SCRIPT_SOUND_BULLET_HIT_GROUND_1: case SCRIPT_SOUND_BULLET_HIT_GROUND_2: case SCRIPT_SOUND_BULLET_HIT_GROUND_3: - m_sQueueSample.m_SoundIntensity = 50.0f; + m_sQueueSample.m_MaxDistance = 50.0f; m_sQueueSample.m_nSampleIndex = m_anRandomTable[iSound % 5] % 3 + SFX_BULLET_WALL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 32); - m_sQueueSample.m_nReleasingVolumeModificator = 9; + m_sQueueSample.m_nPriority = 9; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; emittingVolume = m_anRandomTable[2] % 20 + 90; @@ -6449,108 +6452,108 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SCRIPT_SOUND_TRAIN_ANNOUNCEMENT_2: if (!SampleManager.IsSampleBankLoaded(SFX_BANK_TRAIN)) return; - m_sQueueSample.m_SoundIntensity = 80.0f; + m_sQueueSample.m_MaxDistance = 80.0f; m_sQueueSample.m_nSampleIndex = SFX_TRAIN_STATION_ANNOUNCE; m_sQueueSample.m_nBankIndex = SFX_BANK_TRAIN; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_TRAIN_STATION_ANNOUNCE); - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_PAYPHONE_RINGING: - m_sQueueSample.m_SoundIntensity = 80.0f; + m_sQueueSample.m_MaxDistance = 80.0f; m_sQueueSample.m_nSampleIndex = SFX_PHONE_RING; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 80; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PHONE_RING); - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_fSpeedMultiplier = 2.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(FALSE); break; case SCRIPT_SOUND_GLASS_BREAK_L: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_GLASS_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 70; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_GLASS_BREAK_S: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_GLASS_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 60; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_SMASH); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; break; case SCRIPT_SOUND_GLASS_CRACK: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_GLASS_CRACK; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 70; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_GLASS_CRACK); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(TRUE); break; case SCRIPT_SOUND_GLASS_LIGHT_BREAK: - m_sQueueSample.m_SoundIntensity = 55.0f; + m_sQueueSample.m_MaxDistance = 55.0f; m_sQueueSample.m_nSampleIndex = (m_anRandomTable[4] & 3) + SFX_GLASS_SHARD_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(2000) + 19000; - m_sQueueSample.m_nReleasingVolumeModificator = 9; + m_sQueueSample.m_nPriority = 9; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; emittingVolume = RandomDisplacement(11) + 25; break; case SCRIPT_SOUND_BOX_DESTROYED_1: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_WOODEN_BOX_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_BOX_DESTROYED_2: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_CARDBOARD_BOX_SMASH; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = RandomDisplacement(1500) + 18600; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 20 + 80; break; case SCRIPT_SOUND_METAL_COLLISION: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = m_anRandomTable[3] % 5 + SFX_COL_CAR_1; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(TRUE); emittingVolume = m_anRandomTable[2] % 30 + 70; break; case SCRIPT_SOUND_TIRE_COLLISION: - m_sQueueSample.m_SoundIntensity = 60.0f; + m_sQueueSample.m_MaxDistance = 60.0f; m_sQueueSample.m_nSampleIndex = SFX_TYRE_BUMP; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; SET_SOUND_REFLECTION(TRUE); @@ -6570,22 +6573,22 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SURFACE_HEDGE: m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_2; m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 11000; - m_sQueueSample.m_nReleasingVolumeModificator = 18; + m_sQueueSample.m_nPriority = 18; break; case SURFACE_WATER: return; default: m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_1; m_sQueueSample.m_nFrequency = RandomDisplacement(750) + 18000; - m_sQueueSample.m_nReleasingVolumeModificator = 15; + m_sQueueSample.m_nPriority = 15; break; } } else { m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_1; m_sQueueSample.m_nFrequency = RandomDisplacement(750) + 18000; - m_sQueueSample.m_nReleasingVolumeModificator = 15; + m_sQueueSample.m_nPriority = 15; } - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_MaxDistance = 20.0f; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; @@ -6594,8 +6597,8 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) case SCRIPT_SOUND_GUNSHELL_DROP_SOFT: m_sQueueSample.m_nSampleIndex = SFX_BULLET_SHELL_HIT_GROUND_2; m_sQueueSample.m_nFrequency = RandomDisplacement(500) + 11000; - m_sQueueSample.m_nReleasingVolumeModificator = 18; - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_nPriority = 18; + m_sQueueSample.m_MaxDistance = 20.0f; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_fSpeedMultiplier = 0.0f; m_sQueueSample.m_bIs2D = FALSE; @@ -6606,16 +6609,16 @@ cAudioManager::ProcessOneShotScriptObject(uint8 sound) } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_EMITTING_VOLUME(emittingVolume); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; AddSampleToRequestedQueue(); } } @@ -6629,303 +6632,303 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_PARTY_1_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_1; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_1_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_1; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_2_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_2; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_2); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_2_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_2; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_2); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_3_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_3; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_3; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_3); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_3_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_3; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_3; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_3); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_4_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_4; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_4; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_4); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_4_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_4; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_4; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_4); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_5_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_5; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_5; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_5); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_5_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_5; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_5; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_5); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_6_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_6; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_6; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_6); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_6_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_6; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_6; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_6); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_7_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_7; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_7; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_7); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_7_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_7; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_7; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_7); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_8_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_8; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_8; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_8); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_8_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_8; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_8; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_8); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_9_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_9; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_9; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_9); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_9_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_9; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_9; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_9); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_10_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_10; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_10; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_10); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_10_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_10; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_10; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_10); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_11_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_11; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_11; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_11); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_11_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_11; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_11; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_11); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_12_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_12; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_12; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_12); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_12_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_12; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_12; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_12); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_13_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_CLUB_RAGGA; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_RAGGA; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_RAGGA); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_13_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_RAGGA; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_RAGGA; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_RAGGA); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_1_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_1; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_1_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_1; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_2_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_2; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_STRIP_CLUB_LOOP_2_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_STRIP_CLUB_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_STRIP_CLUB_2; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_STRIP_CLUB_2); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_WORK_SHOP_LOOP_S: @@ -6937,23 +6940,23 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessSawMillScriptObject(sound); return; case SCRIPT_SOUND_38: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_DOG_FOOD_FACTORY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOG_FOOD_FACTORY; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); - m_sQueueSample.m_nReleasingVolumeModificator = 6; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 6; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_39: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_DOG_FOOD_FACTORY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOG_FOOD_FACTORY; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_DOG_FOOD_FACTORY); - m_sQueueSample.m_nReleasingVolumeModificator = 6; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 6; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_LAUNDERETTE_LOOP_S: @@ -6961,83 +6964,83 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessLaunderetteScriptObject(sound); return; case SCRIPT_SOUND_CHINATOWN_RESTAURANT_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_CHINATOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_CHINATOWN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CHINATOWN_RESTAURANT_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_CHINATOWN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_CHINATOWN; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_CHINATOWN); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CIPRIANI_RESAURANT_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_ITALY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_ITALY; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_CIPRIANI_RESAURANT_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_ITALY; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_ITALY; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_ITALY); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_46_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_1; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_47_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_1; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_MARCO_BISTRO_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_2; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_MARCO_BISTRO_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RESTAURANT_GENERIC_2; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RESTAURANT_GENERIC_2; emittingVolume = 110; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RESTAURANT_GENERIC_2); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_AIRPORT_LOOP_S: @@ -7061,23 +7064,23 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessHomeScriptObject(sound); return; case SCRIPT_SOUND_FRANKIE_PIANO: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_PIANO_BAR_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PIANO_BAR; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_PIANO_BAR_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PARTY_1_LOOP: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_CLUB_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CLUB_1; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CLUB_1); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PORN_CINEMA_1_S: @@ -7091,63 +7094,63 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) ProcessPornCinema(sound); return; case SCRIPT_SOUND_BANK_ALARM_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_BANK_ALARM_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_BANK_ALARM; emittingVolume = 90; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); - m_sQueueSample.m_nReleasingVolumeModificator = 2; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 2; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_BANK_ALARM_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_BANK_ALARM_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_BANK_ALARM; emittingVolume = 90; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BANK_ALARM_1); - m_sQueueSample.m_nReleasingVolumeModificator = 2; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 2; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_BALL_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BALL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_POLICE_BALL; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); - m_sQueueSample.m_nReleasingVolumeModificator = 2; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 2; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_BALL_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_POLICE_BALL_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_POLICE_BALL; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_BALL_1); - m_sQueueSample.m_nReleasingVolumeModificator = 2; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 2; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_LOOP_INDUSTRIAL_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RAVE_INDUSTRIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_INDUSTRIAL; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_LOOP_INDUSTRIAL_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RAVE_INDUSTRIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_INDUSTRIAL; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_INDUSTRIAL); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_S: @@ -7156,54 +7159,54 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) return; case SCRIPT_SOUND_RAVE_1_LOOP_S: case SCRIPT_SOUND_RAVE_2_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RAVE_COMMERCIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_COMMERCIAL; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_1_LOOP_L: case SCRIPT_SOUND_RAVE_2_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RAVE_COMMERCIAL; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_COMMERCIAL; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_3_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; m_sQueueSample.m_nSampleIndex = SFX_RAVE_SUBURBAN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_SUBURBAN; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_RAVE_3_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; m_sQueueSample.m_nSampleIndex = SFX_RAVE_SUBURBAN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_RAVE_SUBURBAN; emittingVolume = MAX_VOLUME; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_RAVE_SUBURBAN); - m_sQueueSample.m_nReleasingVolumeModificator = 3; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nPriority = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; case SCRIPT_SOUND_PRETEND_FIRE_LOOP: - m_sQueueSample.m_SoundIntensity = 50.0f; + m_sQueueSample.m_MaxDistance = 50.0f; m_sQueueSample.m_nSampleIndex = SFX_CAR_ON_FIRE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; emittingVolume = 80; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_CAR_ON_FIRE); - m_sQueueSample.m_nReleasingVolumeModificator = 8; - m_sQueueSample.m_nReleasingVolumeDivider = 10; + m_sQueueSample.m_nPriority = 8; + m_sQueueSample.m_nFramesToPlay = 10; m_sQueueSample.m_fSpeedMultiplier = 2.0f; break; default: @@ -7211,15 +7214,15 @@ cAudioManager::ProcessLoopingScriptObject(uint8 sound) } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_bReverb = TRUE; SET_EMITTING_VOLUME(emittingVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) SET_SOUND_REFLECTION(FALSE); @@ -7243,58 +7246,58 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nSampleIndex = SFX_PORN_1_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_1; sample = SFX_PORN_1_GROAN_1; - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_MaxDistance = 20.0f; break; case SCRIPT_SOUND_PORN_CINEMA_1_L: case SCRIPT_SOUND_MISTY_SEX_L: m_sQueueSample.m_nSampleIndex = SFX_PORN_1_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_1; sample = SFX_PORN_1_GROAN_1; - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; case SCRIPT_SOUND_PORN_CINEMA_2_S: m_sQueueSample.m_nSampleIndex = SFX_PORN_2_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_2; sample = SFX_PORN_2_GROAN_1; - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_MaxDistance = 20.0f; break; case SCRIPT_SOUND_PORN_CINEMA_2_L: m_sQueueSample.m_nSampleIndex = SFX_PORN_2_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_2; sample = SFX_PORN_2_GROAN_1; - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; case SCRIPT_SOUND_PORN_CINEMA_3_S: m_sQueueSample.m_nSampleIndex = SFX_PORN_3_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_3; - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_MaxDistance = 20.0f; sample = SFX_PORN_3_GROAN_1; break; case SCRIPT_SOUND_PORN_CINEMA_3_L: m_sQueueSample.m_nSampleIndex = SFX_PORN_3_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_PORN_3; - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; sample = SFX_PORN_3_GROAN_1; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); if (sound != SCRIPT_SOUND_MISTY_SEX_S && sound != SCRIPT_SOUND_MISTY_SEX_L) { - m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(MAX_VOLUME, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(MAX_VOLUME); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -7302,7 +7305,7 @@ cAudioManager::ProcessPornCinema(uint8 sound) time = CTimer::GetTimeInMilliseconds(); if (time > gPornNextTime) { - m_sQueueSample.m_nVolume = ComputeVolume(90, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(90, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + sample; @@ -7311,14 +7314,14 @@ cAudioManager::ProcessPornCinema(uint8 sound) m_sQueueSample.m_nCounter = rand + 1; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 6; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 6; m_sQueueSample.m_fSpeedMultiplier = 0.0f; #ifdef FIX_BUGS SET_EMITTING_VOLUME(90); #endif RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gPornNextTime = time + 2000 + m_anRandomTable[3] % 6000; @@ -7335,15 +7338,15 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_WORK_SHOP_LOOP_S: case SCRIPT_SOUND_WORK_SHOP_LOOP_L: - m_sQueueSample.m_SoundIntensity = 20.0f; + m_sQueueSample.m_MaxDistance = 20.0f; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_WORKSHOP_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_WORKSHOP; @@ -7351,12 +7354,12 @@ cAudioManager::ProcessWorkShopScriptObject(uint8 sound) m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -7373,15 +7376,15 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_SAWMILL_LOOP_S: case SCRIPT_SOUND_SAWMILL_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; @@ -7389,18 +7392,18 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); if (time > gSawMillNextTime) { - m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_SAWMILL_CUT_WOOD; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SAWMILL; @@ -7408,14 +7411,14 @@ cAudioManager::ProcessSawMillScriptObject(uint8 sound) m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; #ifdef FIX_BUGS SET_EMITTING_VOLUME(70); #endif RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gSawMillNextTime = time + 2000 + m_anRandomTable[3] % 4000; @@ -7430,15 +7433,15 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_LAUNDERETTE_LOOP_S: case SCRIPT_SOUND_LAUNDERETTE_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; default: return; } float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(45, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(45, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; @@ -7446,16 +7449,16 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(45); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } - m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_LAUNDERETTE_SONG_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_LAUNDERETTE; @@ -7463,12 +7466,12 @@ cAudioManager::ProcessLaunderetteScriptObject(uint8 sound) m_sQueueSample.m_nCounter = 1; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(110); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -7485,15 +7488,15 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) switch (sound) { case SCRIPT_SOUND_SHOP_LOOP_S: case SCRIPT_SOUND_SHOP_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(30, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_SHOP_LOOP; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_SHOP; @@ -7501,18 +7504,18 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nCounter = 0; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 5; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nPriority = 5; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(30); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } time = CTimer::GetTimeInMilliseconds(); if (time > gShopNextTime) { - m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(70, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { rand = m_anRandomTable[1] & 1; m_sQueueSample.m_nSampleIndex = rand + SFX_SHOP_TILL_1; @@ -7521,12 +7524,12 @@ cAudioManager::ProcessShopScriptObject(uint8 sound) m_sQueueSample.m_nCounter = rand + 1; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(70); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gShopNextTime = time + 3000 + m_anRandomTable[3] % 7000; @@ -7544,18 +7547,18 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) if (time > gAirportNextTime) { switch (sound) { case SCRIPT_SOUND_AIRPORT_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_AIRPORT_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(110, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = (m_anRandomTable[1] & 3) + SFX_AIRPORT_ANNOUNCEMENT_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_AIRPORT; @@ -7563,12 +7566,12 @@ cAudioManager::ProcessAirportScriptObject(uint8 sound) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(110); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gAirportNextTime = time + 10000 + m_anRandomTable[3] % 20000; @@ -7588,19 +7591,19 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) if (time > gCinemaNextTime) { switch (sound) { case SCRIPT_SOUND_CINEMA_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_CINEMA_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 90 + 30; - m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = iSound % 3 + SFX_CINEMA_BASS_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_CINEMA; @@ -7609,12 +7612,12 @@ cAudioManager::ProcessCinemaScriptObject(uint8 sound) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gCinemaNextTime = time + 1000 + m_anRandomTable[3] % 4000; @@ -7636,19 +7639,19 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) if (time > gDocksNextTime) { switch (sound) { case SCRIPT_SOUND_DOCKS_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_DOCKS_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); rand = m_anRandomTable[0] % 60 + 40; - m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = SFX_DOCKS_FOGHORN; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_DOCKS; @@ -7657,12 +7660,12 @@ cAudioManager::ProcessDocksScriptObject(uint8 sound) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 2.0f; SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); gDocksNextTime = time + 10000 + m_anRandomTable[3] % 40000; @@ -7683,19 +7686,19 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) if (time > gHomeNextTime) { switch (sound) { case SCRIPT_SOUND_HOME_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_HOME_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } dist = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (dist < SQR(m_sQueueSample.m_SoundIntensity)) { + if (dist < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(dist); rand = m_anRandomTable[0] % 30 + 40; - m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(rand, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nSampleIndex = m_anRandomTable[0] % 5 + SFX_HOME_1; m_sQueueSample.m_nBankIndex = SFX_BANK_BUILDING_HOME; @@ -7704,12 +7707,12 @@ cAudioManager::ProcessHomeScriptObject(uint8 sound) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; SET_EMITTING_VOLUME(rand); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); gHomeNextTime = time + 1000 + m_anRandomTable[3] % 4000; @@ -7730,16 +7733,16 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) if (time > gCellNextTime) { switch (sound) { case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_S: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_S; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_S; break; case SCRIPT_SOUND_POLICE_CELL_BEATING_LOOP_L: - m_sQueueSample.m_SoundIntensity = SCRIPT_OBJECT_INTENSITY_L; + m_sQueueSample.m_MaxDistance = SCRIPT_OBJECT_INTENSITY_L; break; default: return; } distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); if (m_FrameCounter & 1) sampleIndex = (m_anRandomTable[1] & 3) + SFX_FIGHT_1; @@ -7747,7 +7750,7 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) sampleIndex = (m_anRandomTable[3] & 1) + SFX_BAT_HIT_LEFT; m_sQueueSample.m_nSampleIndex = sampleIndex; emittingVol = m_anRandomTable[0] % 50 + 55; - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); @@ -7755,12 +7758,12 @@ cAudioManager::ProcessPoliceCellBeatingScriptObject(uint8 sound) m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_nPriority = 3; m_sQueueSample.m_fSpeedMultiplier = 0.0f; SET_EMITTING_VOLUME(emittingVol); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); cPedParams params; @@ -7800,14 +7803,14 @@ cAudioManager::ProcessWeather(int32 id) if (iSound == 4) iSound = 0; m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_nReleasingVolumeModificator = 0; - m_sQueueSample.m_nOffset = (m_anRandomTable[2] & 15) + 55; + m_sQueueSample.m_nPriority = 0; + m_sQueueSample.m_nPan = (m_anRandomTable[2] & 15) + 55; m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); RESET_LOOP_OFFSETS - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bReverb = FALSE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -7817,13 +7820,13 @@ cAudioManager::ProcessWeather(int32 id) m_sQueueSample.m_nVolume = (uint8)(25.0f * CWeather::Rain); m_sQueueSample.m_nCounter = 4; m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_nReleasingVolumeModificator = 0; - m_sQueueSample.m_nOffset = 63; + m_sQueueSample.m_nPriority = 0; + m_sQueueSample.m_nPan = 63; m_sQueueSample.m_bIs2D = TRUE; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 30; - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 30; + m_sQueueSample.m_bReverb = FALSE; SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) SET_SOUND_REFLECTION(FALSE); @@ -7994,23 +7997,23 @@ cAudioManager::ProcessFrontEnd() m_sQueueSample.m_nVolume = 110; m_sQueueSample.m_nCounter = iSound++; m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; m_sQueueSample.m_nBankIndex = frontendBank ? SFX_BANK_FRONT_END_MENU : SFX_BANK_0; - m_sQueueSample.m_nReleasingVolumeModificator = 0; + m_sQueueSample.m_nPriority = 0; m_sQueueSample.m_bIs2D = TRUE; SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); RESET_LOOP_OFFSETS if (stereo) - m_sQueueSample.m_nOffset = m_anRandomTable[0] & 31; + m_sQueueSample.m_nPan = m_anRandomTable[0] & 31; else - m_sQueueSample.m_nOffset = 63; - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_nPan = 63; + m_sQueueSample.m_bReverb = FALSE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); if (stereo) { ++m_sQueueSample.m_nSampleIndex; m_sQueueSample.m_nCounter = iSound++; - m_sQueueSample.m_nOffset = 127 - m_sQueueSample.m_nOffset; + m_sQueueSample.m_nPan = 127 - m_sQueueSample.m_nPan; AddSampleToRequestedQueue(); } } @@ -8037,16 +8040,16 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nSampleIndex = SFX_CRANE_MAGNET; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 2; + m_sQueueSample.m_nPriority = 2; m_sQueueSample.m_nFrequency = 6000; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(100); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = intensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -8055,8 +8058,8 @@ cAudioManager::ProcessCrane() m_sQueueSample.m_nSampleIndex = SFX_COL_CAR_2; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_COL_CAR_2); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(TRUE); AddSampleToRequestedQueue(); } @@ -8079,38 +8082,38 @@ cAudioManager::ProcessProjectiles() switch (CProjectileInfo::GetProjectileInfo(i)->m_eWeaponType) { case WEAPONTYPE_ROCKETLAUNCHER: emittingVol = MAX_VOLUME; - m_sQueueSample.m_SoundIntensity = rocketLauncherIntensity; + m_sQueueSample.m_MaxDistance = rocketLauncherIntensity; m_sQueueSample.m_nSampleIndex = SFX_ROCKET_FLY; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_ROCKET_FLY); - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; break; case WEAPONTYPE_MOLOTOV: emittingVol = molotovVolume; - m_sQueueSample.m_SoundIntensity = molotovIntensity; + m_sQueueSample.m_MaxDistance = molotovIntensity; m_sQueueSample.m_nSampleIndex = SFX_PED_ON_FIRE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_nFrequency = 32 * SampleManager.GetSampleBaseFrequency(SFX_PED_ON_FIRE) / 25; - m_sQueueSample.m_nReleasingVolumeModificator = 7; + m_sQueueSample.m_nPriority = 7; break; default: return; } m_sQueueSample.m_fSpeedMultiplier = 4.0f; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_nFramesToPlay = 3; m_sQueueSample.m_vecPos = CProjectileInfo::ms_apProjectile[i]->GetPosition(); float distSquared = GetDistanceSquared(m_sQueueSample.m_vecPos); - if (distSquared < SQR(m_sQueueSample.m_SoundIntensity)) { + if (distSquared < SQR(m_sQueueSample.m_MaxDistance)) { m_sQueueSample.m_fDistance = Sqrt(distSquared); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVol, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > 0) { m_sQueueSample.m_nCounter = i; m_sQueueSample.m_bIs2D = FALSE; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(emittingVol); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -8160,7 +8163,7 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex) / 2; m_sQueueSample.m_nFrequency += RandomDisplacement(m_sQueueSample.m_nFrequency / 16); m_sQueueSample.m_nLoopCount = 1; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; m_sQueueSample.m_nCounter = iSound++; if (iSound < 32) iSound = 32; @@ -8171,8 +8174,8 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bStatic = FALSE; } } else { m_sQueueSample.m_nSampleIndex = SFX_GARAGE_DOOR_LOOP; @@ -8180,18 +8183,18 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nCounter = i; m_sQueueSample.m_nLoopCount = 0; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bStatic = FALSE; } m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 3; + m_sQueueSample.m_nPriority = 3; SET_EMITTING_VOLUME(90); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -8217,13 +8220,13 @@ cAudioManager::ProcessGarages() m_sQueueSample.m_nFrequency = 18000; } m_sQueueSample.m_nBankIndex = SFX_BANK_0; - m_sQueueSample.m_nReleasingVolumeModificator = 4; + m_sQueueSample.m_nPriority = 4; SET_EMITTING_VOLUME(60); m_sQueueSample.m_fSpeedMultiplier = 0.0f; - m_sQueueSample.m_SoundIntensity = SOUND_INTENSITY; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = SOUND_INTENSITY; + m_sQueueSample.m_bReverb = TRUE; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; + m_sQueueSample.m_bStatic = TRUE; m_sQueueSample.m_nLoopCount = 1; RESET_LOOP_OFFSETS m_sQueueSample.m_nCounter = iSound++; @@ -8258,16 +8261,16 @@ cAudioManager::ProcessFireHydrant() m_sQueueSample.m_nSampleIndex = SFX_JUMBO_TAXI; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 4; + m_sQueueSample.m_nPriority = 4; m_sQueueSample.m_nFrequency = 15591; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(40); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = intensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = TRUE; + m_sQueueSample.m_MaxDistance = intensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = TRUE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -8317,16 +8320,16 @@ cAudioManager::ProcessBridgeWarning() m_sQueueSample.m_nSampleIndex = SFX_BRIDGE_OPEN_WARNING; m_sQueueSample.m_nBankIndex = SFX_BANK_GENERIC_EXTRA; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_BRIDGE_OPEN_WARNING); m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(100); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = 450.0f; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 8; - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_MaxDistance = 450.0f; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 8; + m_sQueueSample.m_bReverb = FALSE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } @@ -8343,16 +8346,16 @@ cAudioManager::ProcessBridgeMotor() m_sQueueSample.m_nSampleIndex = SFX_FISHING_BOAT_IDLE; // todo check sfx name m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = 5500; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(MAX_VOLUME); SET_LOOP_OFFSETS(m_sQueueSample.m_nSampleIndex) m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = bridgeIntensity; - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_nReleasingVolumeDivider = 3; - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_MaxDistance = bridgeIntensity; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_nFramesToPlay = 3; + m_sQueueSample.m_bReverb = FALSE; AddSampleToRequestedQueue(); } } @@ -8377,15 +8380,15 @@ cAudioManager::ProcessBridgeOneShots() m_sQueueSample.m_nCounter = 2; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = FALSE; - m_sQueueSample.m_nReleasingVolumeModificator = 1; + m_sQueueSample.m_nPriority = 1; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(m_sQueueSample.m_nSampleIndex); m_sQueueSample.m_nLoopCount = 1; SET_EMITTING_VOLUME(MAX_VOLUME); RESET_LOOP_OFFSETS m_sQueueSample.m_fSpeedMultiplier = 2.0f; - m_sQueueSample.m_SoundIntensity = bridgeIntensity; - m_sQueueSample.m_bReleasingSoundFlag = TRUE; - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_MaxDistance = bridgeIntensity; + m_sQueueSample.m_bStatic = TRUE; + m_sQueueSample.m_bReverb = FALSE; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index a288ac12..1df4681c 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -19,7 +19,7 @@ cAudioManager AudioManager; cAudioManager::cAudioManager() { m_bIsInitialised = FALSE; - m_bReverb = TRUE; + m_bIsSurround = TRUE; m_fSpeedOfSound = SPEED_OF_SOUND / TIME_SPENT; m_nTimeSpent = TIME_SPENT; m_nActiveSamples = NUM_CHANNELS_GENERIC; @@ -40,7 +40,7 @@ cAudioManager::cAudioManager() } m_nAudioEntitiesTotal = 0; m_FrameCounter = 0; - m_bFifthFrameFlag = FALSE; + m_bReduceReleasingPriority = FALSE; m_bTimerJustReset = FALSE; m_nTimer = 0; } @@ -473,7 +473,7 @@ cAudioManager::ServiceSoundEffects() #ifdef FIX_BUGS if(CTimer::GetLogicalFramesPassed() != 0) #endif - m_bFifthFrameFlag = (m_FrameCounter++ % 5) == 0; + m_bReduceReleasingPriority = (m_FrameCounter++ % 5) == 0; if (m_nUserPause && !m_nPreviousUserPause) { for (int32 i = 0; i < NUM_CHANNELS; i++) SampleManager.StopChannel(i); @@ -523,14 +523,14 @@ cAudioManager::FL(float f) } uint8 -cAudioManager::ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance) +cAudioManager::ComputeVolume(uint8 emittingVolume, float maxDistance, float distance) { - float newSoundIntensity; - if (soundIntensity <= 0.0f) + float minDistance; + if (maxDistance <= 0.0f) return 0; - newSoundIntensity = soundIntensity / 5.0f; - if (newSoundIntensity <= distance) - emittingVolume = sq((soundIntensity - newSoundIntensity - (distance - newSoundIntensity)) / (soundIntensity - newSoundIntensity)) * emittingVolume; + minDistance = maxDistance / 5.0f; + if (minDistance <= distance) + emittingVolume = sq((maxDistance - minDistance - (distance - minDistance)) / (maxDistance - minDistance)) * emittingVolume; return emittingVolume; } @@ -605,39 +605,47 @@ cAudioManager::InterrogateAudioEntities() void cAudioManager::AddSampleToRequestedQueue() { - uint32 calculatedVolume; + uint32 finalPriority; uint8 sampleIndex; #ifdef AUDIO_REFLECTIONS bool8 bReflections; #endif if (m_sQueueSample.m_nSampleIndex < TOTAL_AUDIO_SAMPLES) { - calculatedVolume = m_sQueueSample.m_nReleasingVolumeModificator * (MAX_VOLUME - m_sQueueSample.m_nVolume); + finalPriority = m_sQueueSample.m_nPriority * (MAX_VOLUME - m_sQueueSample.m_nVolume); sampleIndex = m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; if (sampleIndex >= m_nActiveSamples) { sampleIndex = m_abSampleQueueIndexTable[m_nActiveSampleQueue][m_nActiveSamples - 1]; - if (m_asSamples[m_nActiveSampleQueue][sampleIndex].m_nCalculatedVolume <= calculatedVolume) + if (m_asSamples[m_nActiveSampleQueue][sampleIndex].m_nFinalPriority <= finalPriority) return; } else { ++m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; } - m_sQueueSample.m_nCalculatedVolume = calculatedVolume; - m_sQueueSample.m_bLoopEnded = FALSE; +#if GTA_VERSION < GTA3_PC_10 + if (m_sQueueSample.m_bStatic) { + if (m_sQueueSample.m_nLoopCount > 0) + m_sQueueSample.unk = m_nTimeSpent * SampleManager.GetSampleLength(m_sQueueSample.m_nSampleIndex) / m_sQueueSample.m_nFrequency; + else + m_sQueueSample.unk = -3; + } +#endif + m_sQueueSample.m_nFinalPriority = finalPriority; + m_sQueueSample.m_bIsPlayingFinished = FALSE; #ifdef AUDIO_REFLECTIONS if (m_sQueueSample.m_bIs2D) { - m_sQueueSample.m_bRequireReflection = FALSE; - m_sQueueSample.m_nLoopsRemaining = 0; + m_sQueueSample.m_bReflections = FALSE; + m_sQueueSample.m_nReflectionDelay = 0; } if (m_bDynamicAcousticModelingStatus && m_sQueueSample.m_nLoopCount > 0) { - bReflections = m_sQueueSample.m_bRequireReflection; + bReflections = m_sQueueSample.m_bReflections; } else { bReflections = FALSE; - m_sQueueSample.m_nLoopsRemaining = 0; + m_sQueueSample.m_nReflectionDelay = 0; } - m_sQueueSample.m_bRequireReflection = FALSE; + m_sQueueSample.m_bReflections = FALSE; if (!m_bDynamicAcousticModelingStatus) - m_sQueueSample.m_bReverbFlag = FALSE; + m_sQueueSample.m_bReverb = FALSE; #endif m_asSamples[m_nActiveSampleQueue][sampleIndex] = m_sQueueSample; @@ -656,8 +664,8 @@ cAudioManager::AddDetailsToRequestedOrderList(uint8 sample) uint32 i = 0; if (sample != 0) { for (; i < sample; i++) { - if (m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]].m_nCalculatedVolume > - m_asSamples[m_nActiveSampleQueue][sample].m_nCalculatedVolume) + if (m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]].m_nFinalPriority > + m_asSamples[m_nActiveSampleQueue][sample].m_nFinalPriority) break; } if (i < sample) { @@ -677,12 +685,12 @@ cAudioManager::AddReflectionsToRequestedQueue() for (uint32 i = 0; i < ARRAY_SIZE(m_afReflectionsDistances); i++) { reflectionDistance = m_afReflectionsDistances[i]; - if (reflectionDistance > 0.0f && reflectionDistance < 100.f && reflectionDistance < m_sQueueSample.m_SoundIntensity) { - m_sQueueSample.m_nLoopsRemaining = (reflectionDistance * 500.f / 1029.f); - if (m_sQueueSample.m_nLoopsRemaining > 5) { + if (reflectionDistance > 0.0f && reflectionDistance < 100.f && reflectionDistance < m_sQueueSample.m_MaxDistance) { + m_sQueueSample.m_nReflectionDelay = (reflectionDistance * 500.f / 1029.f); + if (m_sQueueSample.m_nReflectionDelay > 5) { m_sQueueSample.m_fDistance = m_afReflectionsDistances[i]; SET_EMITTING_VOLUME(emittingVolume); - m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_SoundIntensity, m_sQueueSample.m_fDistance); + m_sQueueSample.m_nVolume = ComputeVolume(emittingVolume, m_sQueueSample.m_MaxDistance, m_sQueueSample.m_fDistance); if (m_sQueueSample.m_nVolume > emittingVolume / 16) { m_sQueueSample.m_nCounter += (i + 1) * 256; if (m_sQueueSample.m_nLoopCount > 0) { @@ -692,7 +700,7 @@ cAudioManager::AddReflectionsToRequestedQueue() else m_sQueueSample.m_nFrequency += noise; } - m_sQueueSample.m_nReleasingVolumeModificator += 20; + m_sQueueSample.m_nPriority += 20; m_sQueueSample.m_vecPos = m_avecReflectionsPos[i]; AddSampleToRequestedQueue(); } @@ -766,7 +774,7 @@ cAudioManager::AddReleasingSounds() for (int32 i = 0; i < m_SampleRequestQueuesStatus[queue]; i++) { tSound &sample = m_asSamples[queue][m_abSampleQueueIndexTable[queue][i]]; - if (sample.m_bLoopEnded) + if (sample.m_bIsPlayingFinished) continue; toProcess[i] = FALSE; @@ -779,32 +787,44 @@ cAudioManager::AddReleasingSounds() } if (!toProcess[i]) { #ifdef AUDIO_REFLECTIONS - if (sample.m_nCounter <= 255 || sample.m_nLoopsRemaining == 0) // check if not reflection + if (sample.m_nCounter <= 255 || sample.m_nReflectionDelay == 0) // check if not delayed reflection #endif { - if (sample.m_nReleasingVolumeDivider == 0) + if (sample.m_nFramesToPlay == 0) continue; if (sample.m_nLoopCount == 0) { if (sample.m_nVolumeChange == -1) { - sample.m_nVolumeChange = sample.m_nVolume / sample.m_nReleasingVolumeDivider; +#if defined(FIX_BUGS) && defined(EXTERNAL_3D_SOUND) + sample.m_nVolumeChange = sample.m_nEmittingVolume / sample.m_nFramesToPlay; +#else + sample.m_nVolumeChange = sample.m_nVolume / sample.m_nFramesToPlay; +#endif if (sample.m_nVolumeChange <= 0) sample.m_nVolumeChange = 1; } +#if defined(FIX_BUGS) && defined(EXTERNAL_3D_SOUND) + if (sample.m_nEmittingVolume <= sample.m_nVolumeChange) { +#else if (sample.m_nVolume <= sample.m_nVolumeChange) { - sample.m_nReleasingVolumeDivider = 0; +#endif + sample.m_nFramesToPlay = 0; continue; } +#if defined(FIX_BUGS) && defined(EXTERNAL_3D_SOUND) + sample.m_nEmittingVolume -= sample.m_nVolumeChange; +#else sample.m_nVolume -= sample.m_nVolumeChange; +#endif } #ifdef FIX_BUGS if(CTimer::GetLogicalFramesPassed() != 0) #endif - --sample.m_nReleasingVolumeDivider; - if (m_bFifthFrameFlag) { - if (sample.m_nReleasingVolumeModificator < 20) - ++sample.m_nReleasingVolumeModificator; + --sample.m_nFramesToPlay; + if (m_bReduceReleasingPriority) { + if (sample.m_nPriority < 20) + ++sample.m_nPriority; } - sample.m_bReleasingSoundFlag = 0; + sample.m_bStatic = FALSE; } memcpy(&m_sQueueSample, &sample, sizeof(tSound)); AddSampleToRequestedQueue(); @@ -834,8 +854,8 @@ cAudioManager::ProcessActiveQueues() CVector position; for (int32 i = 0; i < m_nActiveSamples; i++) { - m_asSamples[m_nActiveSampleQueue][i].m_bIsProcessed = FALSE; - m_asActiveSamples[i].m_bIsProcessed = FALSE; + m_asSamples[m_nActiveSampleQueue][i].m_bIsBeingPlayed = FALSE; + m_asActiveSamples[i].m_bIsBeingPlayed = FALSE; } for (int32 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) { @@ -845,23 +865,30 @@ cAudioManager::ProcessActiveQueues() if (sample.m_nEntityIndex == m_asActiveSamples[j].m_nEntityIndex && sample.m_nCounter == m_asActiveSamples[j].m_nCounter && sample.m_nSampleIndex == m_asActiveSamples[j].m_nSampleIndex) { if (sample.m_nLoopCount > 0) { +#if GTA_VERSION >= GTA3_PC_10 if (m_FrameCounter & 1) flag = !!(j & 1); else flag = !(j & 1); - if (flag && !SampleManager.GetChannelUsedFlag(j)) { - sample.m_bLoopEnded = TRUE; - m_asActiveSamples[j].m_bLoopEnded = TRUE; +#else + if (m_asActiveSamples[j].unk != 0) + m_asActiveSamples[j].unk--; + else if (SampleManager.GetChannelUsedFlag(j)) + m_asActiveSamples[j].unk = m_nTimeSpent * SampleManager.GetSampleLength(m_asActiveSamples[j].m_nSampleIndex) / m_asActiveSamples[j].m_nFrequency; + else { +#endif + sample.m_bIsPlayingFinished = TRUE; + m_asActiveSamples[j].m_bIsPlayingFinished = TRUE; m_asActiveSamples[j].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[j].m_nEntityIndex = AEHANDLE_NONE; continue; } } - sample.m_bIsProcessed = TRUE; - m_asActiveSamples[j].m_bIsProcessed = TRUE; + sample.m_bIsBeingPlayed = TRUE; + m_asActiveSamples[j].m_bIsBeingPlayed = TRUE; sample.m_nVolumeChange = -1; - if (!sample.m_bReleasingSoundFlag) { + if (!sample.m_bStatic) { if (sample.m_bIs2D) { #ifdef EXTERNAL_3D_SOUND emittingVol = m_bDoubleVolume ? 2 * Min(63, sample.m_nEmittingVolume) : sample.m_nEmittingVolume; @@ -872,7 +899,7 @@ cAudioManager::ProcessActiveQueues() #ifdef EXTERNAL_3D_SOUND SampleManager.SetChannelEmittingVolume(j, emittingVol); #else - SampleManager.SetChannelPan(j, sample.m_nOffset); + SampleManager.SetChannelPan(j, sample.m_nPan); SampleManager.SetChannelVolume(j, sample.m_nVolume); #endif } else { @@ -902,23 +929,23 @@ cAudioManager::ProcessActiveQueues() TranslateEntity(&sample.m_vecPos, &position); #ifdef EXTERNAL_3D_SOUND SampleManager.SetChannel3DPosition(j, position.x, position.y, position.z); - SampleManager.SetChannel3DDistances(j, sample.m_SoundIntensity, 0.25f * sample.m_SoundIntensity); + SampleManager.SetChannel3DDistances(j, sample.m_MaxDistance, 0.25f * sample.m_MaxDistance); #else - sample.m_nOffset = ComputePan(sample.m_fDistance, &position); - SampleManager.SetChannelPan(j, sample.m_nOffset); + sample.m_nPan = ComputePan(sample.m_fDistance, &position); + SampleManager.SetChannelPan(j, sample.m_nPan); #endif } - SampleManager.SetChannelReverbFlag(j, sample.m_bReverbFlag); + SampleManager.SetChannelReverbFlag(j, sample.m_bReverb); break; } - sample.m_bIsProcessed = FALSE; - m_asActiveSamples[j].m_bIsProcessed = FALSE; + sample.m_bIsBeingPlayed = FALSE; + m_asActiveSamples[j].m_bIsBeingPlayed = FALSE; } } } } for (int32 i = 0; i < m_nActiveSamples; i++) { - if (m_asActiveSamples[i].m_nSampleIndex != NO_SAMPLE && !m_asActiveSamples[i].m_bIsProcessed) { + if (m_asActiveSamples[i].m_nSampleIndex != NO_SAMPLE && !m_asActiveSamples[i].m_bIsBeingPlayed) { SampleManager.StopChannel(i); m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[i].m_nEntityIndex = AEHANDLE_NONE; @@ -926,28 +953,28 @@ cAudioManager::ProcessActiveQueues() } for (uint8 i = 0; i < m_SampleRequestQueuesStatus[m_nActiveSampleQueue]; i++) { tSound &sample = m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; - if (!sample.m_bIsProcessed && !sample.m_bLoopEnded && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { + if (!sample.m_bIsBeingPlayed && !sample.m_bIsPlayingFinished && m_asAudioEntities[sample.m_nEntityIndex].m_bIsUsed && sample.m_nSampleIndex < NO_SAMPLE) { #ifdef AUDIO_REFLECTIONS - if (sample.m_nCounter > 255 && sample.m_nLoopCount > 0 && sample.m_nLoopsRemaining > 0) { // check if reflection - sample.m_nLoopsRemaining--; - sample.m_nReleasingVolumeDivider = 1; + if (sample.m_nCounter > 255 && sample.m_nLoopCount > 0 && sample.m_nReflectionDelay > 0) { // check if reflection + sample.m_nReflectionDelay--; + sample.m_nFramesToPlay = 1; } else #endif { for (uint8 j = 0; j < m_nActiveSamples; j++) { - if (!m_asActiveSamples[j].m_bIsProcessed) { + if (!m_asActiveSamples[j].m_bIsBeingPlayed) { if (sample.m_nLoopCount > 0) { samplesPerFrame = sample.m_nFrequency / m_nTimeSpent; samplesToPlay = sample.m_nLoopCount * SampleManager.GetSampleLength(sample.m_nSampleIndex); if (samplesPerFrame == 0) continue; - sample.m_nReleasingVolumeDivider = samplesToPlay / samplesPerFrame + 1; + sample.m_nFramesToPlay = samplesToPlay / samplesPerFrame + 1; } memcpy(&m_asActiveSamples[j], &sample, sizeof(tSound)); if (!m_asActiveSamples[j].m_bIs2D) { TranslateEntity(&m_asActiveSamples[j].m_vecPos, &position); #ifndef EXTERNAL_3D_SOUND - m_asActiveSamples[j].m_nOffset = ComputePan(m_asActiveSamples[j].m_fDistance, &position); + m_asActiveSamples[j].m_nPan = ComputePan(m_asActiveSamples[j].m_fDistance, &position); #endif } #ifdef EXTERNAL_3D_SOUND @@ -966,16 +993,16 @@ cAudioManager::ProcessActiveQueues() SampleManager.SetChannelEmittingVolume(j, emittingVol); #else SampleManager.SetChannelVolume(j, emittingVol); - SampleManager.SetChannelPan(j, m_asActiveSamples[j].m_nOffset); + SampleManager.SetChannelPan(j, m_asActiveSamples[j].m_nPan); #endif #ifndef GTA_PS2 SampleManager.SetChannelLoopPoints(j, m_asActiveSamples[j].m_nLoopStart, m_asActiveSamples[j].m_nLoopEnd); SampleManager.SetChannelLoopCount(j, m_asActiveSamples[j].m_nLoopCount); #endif - SampleManager.SetChannelReverbFlag(j, m_asActiveSamples[j].m_bReverbFlag); + SampleManager.SetChannelReverbFlag(j, m_asActiveSamples[j].m_bReverb); #ifdef EXTERNAL_3D_SOUND if (m_asActiveSamples[j].m_bIs2D) { - uint8 offset = m_asActiveSamples[j].m_nOffset; + uint8 offset = m_asActiveSamples[j].m_nPan; if (offset == 63) x = 0.f; else if (offset >= 63) @@ -985,19 +1012,19 @@ cAudioManager::ProcessActiveQueues() usedX = x; usedY = 0.0f; usedZ = 0.0f; - m_asActiveSamples[j].m_SoundIntensity = 100000.0f; + m_asActiveSamples[j].m_MaxDistance = 100000.0f; } else { usedX = position.x; usedY = position.y; usedZ = position.z; } SampleManager.SetChannel3DPosition(j, usedX, usedY, usedZ); - SampleManager.SetChannel3DDistances(j, m_asActiveSamples[j].m_SoundIntensity, 0.25f * m_asActiveSamples[j].m_SoundIntensity); + SampleManager.SetChannel3DDistances(j, m_asActiveSamples[j].m_MaxDistance, 0.25f * m_asActiveSamples[j].m_MaxDistance); #endif SampleManager.StartChannel(j); } - m_asActiveSamples[j].m_bIsProcessed = TRUE; - sample.m_bIsProcessed = TRUE; + m_asActiveSamples[j].m_bIsBeingPlayed = TRUE; + sample.m_bIsBeingPlayed = TRUE; sample.m_nVolumeChange = -1; break; } @@ -1025,35 +1052,35 @@ cAudioManager::ClearActiveSamples() m_asActiveSamples[i].m_nSampleIndex = NO_SAMPLE; m_asActiveSamples[i].m_nBankIndex = INVALID_SFX_BANK; m_asActiveSamples[i].m_bIs2D = FALSE; - m_asActiveSamples[i].m_nReleasingVolumeModificator = 5; + m_asActiveSamples[i].m_nPriority = 5; m_asActiveSamples[i].m_nFrequency = 0; m_asActiveSamples[i].m_nVolume = 0; #ifdef EXTERNAL_3D_SOUND m_asActiveSamples[i].m_nEmittingVolume = 0; #endif m_asActiveSamples[i].m_fDistance = 0.0f; - m_asActiveSamples[i].m_bIsProcessed = FALSE; - m_asActiveSamples[i].m_bLoopEnded = FALSE; + m_asActiveSamples[i].m_bIsBeingPlayed = FALSE; + m_asActiveSamples[i].m_bIsPlayingFinished = FALSE; m_asActiveSamples[i].m_nLoopCount = 1; #ifndef GTA_PS2 m_asActiveSamples[i].m_nLoopStart = 0; m_asActiveSamples[i].m_nLoopEnd = -1; #endif m_asActiveSamples[i].m_fSpeedMultiplier = 0.0f; - m_asActiveSamples[i].m_SoundIntensity = 200.0f; - m_asActiveSamples[i].m_nOffset = 63; - m_asActiveSamples[i].m_bReleasingSoundFlag = FALSE; + m_asActiveSamples[i].m_MaxDistance = 200.0f; + m_asActiveSamples[i].m_nPan = 63; + m_asActiveSamples[i].m_bStatic = FALSE; #if GTA_VERSION < GTA3_PC_10 m_asActiveSamples[i].unk = -3; #endif - m_asActiveSamples[i].m_nCalculatedVolume = 0; - m_asActiveSamples[i].m_nReleasingVolumeDivider = 0; + m_asActiveSamples[i].m_nFinalPriority = 0; + m_asActiveSamples[i].m_nFramesToPlay = 0; m_asActiveSamples[i].m_nVolumeChange = -1; m_asActiveSamples[i].m_vecPos = CVector(0.0f, 0.0f, 0.0f); - m_asActiveSamples[i].m_bReverbFlag = FALSE; + m_asActiveSamples[i].m_bReverb = FALSE; #ifdef AUDIO_REFLECTIONS - m_asActiveSamples[i].m_nLoopsRemaining = 0; - m_asActiveSamples[i].m_bRequireReflection = FALSE; + m_asActiveSamples[i].m_nReflectionDelay = 0; + m_asActiveSamples[i].m_bReflections = FALSE; #endif } } @@ -1081,7 +1108,7 @@ cAudioManager::AdjustSamplesVolume() tSound *pSample = &m_asSamples[m_nActiveSampleQueue][m_abSampleQueueIndexTable[m_nActiveSampleQueue][i]]; if (!pSample->m_bIs2D) - pSample->m_nEmittingVolume = ComputeEmittingVolume(pSample->m_nEmittingVolume, pSample->m_SoundIntensity, pSample->m_fDistance); + pSample->m_nEmittingVolume = ComputeEmittingVolume(pSample->m_nEmittingVolume, pSample->m_MaxDistance, pSample->m_fDistance); } } diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index ed920cab..662e929e 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -7,49 +7,59 @@ class tSound { public: - int32 m_nEntityIndex; + int32 m_nEntityIndex; // audio entity index #if GTA_VERSION >= GTA3_PC_10 - uint32 m_nCounter; + uint32 m_nCounter; // I'm not sure what this is but it looks like a virtual counter to determine the same sound in queue + // Values higher than 255 are used by reflections #else uint8 m_nCounter; #endif - uint32 m_nSampleIndex; - uint8 m_nBankIndex; - bool8 m_bIs2D; - uint32 m_nReleasingVolumeModificator; - uint32 m_nFrequency; - uint8 m_nVolume; - float m_fDistance; - uint32 m_nLoopCount; + uint32 m_nSampleIndex; // An index of sample from AudioSamples.h + uint8 m_nBankIndex; // A sound bank index. IDK what's the point of it here since samples are hardcoded anyway + bool8 m_bIs2D; // If TRUE then sound is played in 2D space (such as frontend or police radio) + uint32 m_nPriority; // The multiplier for the sound priority (see m_nFinalPriority below). Lesser value means higher priority + uint32 m_nFrequency; // Sound frequency, plain and simple + uint8 m_nVolume; // Sound volume (0..127), only used as an actual volume without EXTERNAL_3D_SOUND (see m_nEmittingVolume) + float m_fDistance; // Distance to camera (useless if m_bIs2D == TRUE) + uint32 m_nLoopCount; // 0 - always loop, 1 - don't loop, other values never seen #ifndef GTA_PS2 + // Loop offsets uint32 m_nLoopStart; int32 m_nLoopEnd; #endif #ifdef EXTERNAL_3D_SOUND - uint8 m_nEmittingVolume; + uint8 m_nEmittingVolume; // The volume in 3D space, provided to 3D audio engine #endif - float m_fSpeedMultiplier; + float m_fSpeedMultiplier; // Used for doppler effect. 0.0f - unaffected by doppler #if GTA_VERSION >= GTA3_PC_10 - float m_SoundIntensity; + float m_MaxDistance; // The maximum distance at which sound could be heard. Minimum distance = MaxDistance / 5 or MaxDistance / 4 in case of emitting volume (useless if m_bIs2D == TRUE) #else - uint32 m_SoundIntensity; + uint32 m_MaxDistance; #endif - bool8 m_bReleasingSoundFlag; - CVector m_vecPos; - bool8 m_bReverbFlag; + bool8 m_bStatic; // If TRUE then sound parameters cannot be changed during playback (frequency, position, etc.) + CVector m_vecPos; // Position of sound in 3D space. Unused if m_bIs2D == TRUE + bool8 m_bReverb; // Toggles reverb effect #ifdef AUDIO_REFLECTIONS - uint8 m_nLoopsRemaining; - bool8 m_bRequireReflection; // Used for oneshots + uint8 m_nReflectionDelay; // Number of frames before reflection could be played. This is calculated internally by AudioManager and shouldn't be set by queued sample + bool8 m_bReflections; // Add sound reflections #endif - uint8 m_nOffset; - uint32 m_nReleasingVolumeDivider; - bool8 m_bIsProcessed; - bool8 m_bLoopEnded; + uint8 m_nPan; // Sound panning (0-127). Controls the volume of the playback coming from left and right speaker. Calculated internally unless m_bIs2D==TRUE. + // 0 = L 100% R 0% + // 63 = L 100% R 100% + // 127 = L 0% R 100% + uint32 m_nFramesToPlay; // Number of frames the sound would be played (if it stops being queued). + // This one is being set by queued sample for looping sounds, otherwise calculated inside AudioManager + + // all fields below are internal to AudioManager calculations and aren't set by queued sample + bool8 m_bIsBeingPlayed; // Set to TRUE when the sound was added or changed on current frame to avoid it being overwritten + bool8 m_bIsPlayingFinished; // Not sure about the name. Set to TRUE when sampman channel becomes free #if GTA_VERSION < GTA3_PC_10 - int32 unk; // only on PS2, seems unused + int32 unk; // Only on PS2, used by static non-looped sounds (AFAIK) + // Looks like it's keeping a number of frames left to play with the purpose of setting m_bIsPlayingFinished=TRUE once value reaches 0 + // Default value is -3 for whatever reason #endif - uint32 m_nCalculatedVolume; - int8 m_nVolumeChange; + uint32 m_nFinalPriority; // Actual value used to compare priority, calculated using volume and m_nPriority. Lesser value means higher priority + int8 m_nVolumeChange; // How much m_nVolume should reduce per each frame. Has no effect with EXTERNAL_3D_SOUND }; VALIDATE_SIZE(tSound, 92); @@ -208,8 +218,8 @@ class cAudioManager { public: bool8 m_bIsInitialised; - bool8 m_bReverb; // unused - bool8 m_bFifthFrameFlag; + bool8 m_bIsSurround; // unused until VC + bool8 m_bReduceReleasingPriority; uint8 m_nActiveSamples; bool8 m_bDoubleVolume; // unused #if GTA_VERSION >= GTA3_PC_10 @@ -288,7 +298,7 @@ public: void ServiceSoundEffects(); uint32 FL(float f); // not used - uint8 ComputeVolume(uint8 emittingVolume, float soundIntensity, float distance); + uint8 ComputeVolume(uint8 emittingVolume, float maxDistance, float distance); void TranslateEntity(Const CVector *v1, CVector *v2); int32 ComputePan(float, CVector *); uint32 ComputeDopplerEffectedFrequency(uint32 oldFreq, float position1, float position2, float speedMultiplier); // inlined on PS2 @@ -309,7 +319,7 @@ public: #ifdef EXTERNAL_3D_SOUND // actually must have been && AUDIO_MSS as well void AdjustSamplesVolume(); - uint8 ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist); + uint8 ComputeEmittingVolume(uint8 emittingVolume, float maxDistance, float dist); #endif // audio logic @@ -553,7 +563,7 @@ public: #define SET_EMITTING_VOLUME(vol) #endif #ifdef AUDIO_REFLECTIONS -#define SET_SOUND_REFLECTION(b) m_sQueueSample.m_bRequireReflection = b +#define SET_SOUND_REFLECTION(b) m_sQueueSample.m_bReflections = b #else #define SET_SOUND_REFLECTION(b) #endif diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index b1460b3c..76a87137 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -129,16 +129,16 @@ cAudioManager::DoPoliceRadioCrackle() m_sQueueSample.m_nSampleIndex = SFX_POLICE_RADIO_CRACKLE; m_sQueueSample.m_nBankIndex = SFX_BANK_0; m_sQueueSample.m_bIs2D = TRUE; - m_sQueueSample.m_nReleasingVolumeModificator = 10; + m_sQueueSample.m_nPriority = 10; m_sQueueSample.m_nFrequency = SampleManager.GetSampleBaseFrequency(SFX_POLICE_RADIO_CRACKLE); m_sQueueSample.m_nVolume = m_anRandomTable[2] % 20 + 15; m_sQueueSample.m_nLoopCount = 0; SET_EMITTING_VOLUME(m_sQueueSample.m_nVolume); SET_LOOP_OFFSETS(SFX_POLICE_RADIO_CRACKLE) - m_sQueueSample.m_bReleasingSoundFlag = FALSE; - m_sQueueSample.m_bReverbFlag = FALSE; - m_sQueueSample.m_nOffset = 63; - m_sQueueSample.m_nReleasingVolumeDivider = 3; + m_sQueueSample.m_bStatic = FALSE; + m_sQueueSample.m_bReverb = FALSE; + m_sQueueSample.m_nPan = 63; + m_sQueueSample.m_nFramesToPlay = 3; SET_SOUND_REFLECTION(FALSE); AddSampleToRequestedQueue(); } From ef0b5f857db7b58a9bea62c68e89e17f45c0a0de Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 20 Aug 2021 14:28:18 +0300 Subject: [PATCH 309/314] A few small audio changes --- src/audio/AudioManager.cpp | 10 +++++----- src/audio/AudioManager.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 1df4681c..425a897d 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -1113,12 +1113,12 @@ cAudioManager::AdjustSamplesVolume() } uint8 -cAudioManager::ComputeEmittingVolume(uint8 emittingVolume, float intensity, float dist) +cAudioManager::ComputeEmittingVolume(uint8 emittingVolume, float maxDistance, float distance) { - float quatIntensity = intensity / 4.0f; - float diffIntensity = intensity - quatIntensity; - if (dist > diffIntensity) - return (quatIntensity - (dist - diffIntensity)) * (float)emittingVolume / quatIntensity; + float minDistance = maxDistance / 4.0f; + float diffDistance = maxDistance - minDistance; + if (distance > diffDistance) + return (minDistance - (distance - diffDistance)) * (float)emittingVolume / minDistance; return emittingVolume; } #endif diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index 662e929e..efff4f39 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -59,7 +59,7 @@ public: // Default value is -3 for whatever reason #endif uint32 m_nFinalPriority; // Actual value used to compare priority, calculated using volume and m_nPriority. Lesser value means higher priority - int8 m_nVolumeChange; // How much m_nVolume should reduce per each frame. Has no effect with EXTERNAL_3D_SOUND + int8 m_nVolumeChange; // How much m_nVolume should reduce per each frame. }; VALIDATE_SIZE(tSound, 92); @@ -319,7 +319,7 @@ public: #ifdef EXTERNAL_3D_SOUND // actually must have been && AUDIO_MSS as well void AdjustSamplesVolume(); - uint8 ComputeEmittingVolume(uint8 emittingVolume, float maxDistance, float dist); + uint8 ComputeEmittingVolume(uint8 emittingVolume, float maxDistance, float distance); #endif // audio logic From aa104bb0aa3ede08e24358ec80ce1b97baf950e9 Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 20 Aug 2021 17:49:51 +0300 Subject: [PATCH 310/314] small refactoring --- src/control/CarCtrl.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index ca83603f..fe776a38 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -773,14 +773,16 @@ CCarCtrl::PossiblyRemoveVehicle(CVehicle* pVehicle) delete pVehicle; return; } - if (pVehicle->GetStatus() != STATUS_WRECKED || pVehicle->m_nTimeOfDeath == 0) - return; - if (CTimer::GetTimeInMilliseconds() > pVehicle->m_nTimeOfDeath + 60000 && - !(pVehicle->GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(pVehicle)) ){ - if ((pVehicle->GetPosition() - vecPlayerPos).MagnitudeSqr() > SQR(7.5f)){ - if (!CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())){ - CWorld::Remove(pVehicle); - delete pVehicle; + if (pVehicle->GetStatus() == STATUS_WRECKED) { + if (pVehicle->m_nTimeOfDeath != 0) { + if (CTimer::GetTimeInMilliseconds() > pVehicle->m_nTimeOfDeath + 60000 && + !(pVehicle->GetIsOnScreen() && CRenderer::IsEntityCullZoneVisible(pVehicle))) { + if ((pVehicle->GetPosition() - vecPlayerPos).MagnitudeSqr() > SQR(7.5f)) { + if (!CGarages::IsPointWithinHideOutGarage(pVehicle->GetPosition())) { + CWorld::Remove(pVehicle); + delete pVehicle; + } + } } } } From 7d5b1e6c2e19fb88f2adc57e9b4736886b0c299a Mon Sep 17 00:00:00 2001 From: Nikolay Korolev Date: Fri, 20 Aug 2021 20:38:24 +0300 Subject: [PATCH 311/314] fix --- src/control/CarCtrl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/control/CarCtrl.cpp b/src/control/CarCtrl.cpp index fe776a38..2085681a 100644 --- a/src/control/CarCtrl.cpp +++ b/src/control/CarCtrl.cpp @@ -810,8 +810,8 @@ CCarCtrl::UpdateCarOnRails(CVehicle* pVehicle) pVehicle->AutoPilot.ModifySpeed(0.0f); if (CTimer::GetTimeInMilliseconds() > pVehicle->AutoPilot.m_nTempAction){ pVehicle->AutoPilot.m_nTempAction = TEMPACT_NONE; - pVehicle->AutoPilot.m_nAntiReverseTimer = 0; - pVehicle->AutoPilot.m_nTimeToStartMission = 0; + pVehicle->AutoPilot.m_nAntiReverseTimer = CTimer::GetTimeInMilliseconds(); + pVehicle->AutoPilot.m_nTimeToStartMission = CTimer::GetTimeInMilliseconds(); } return; } From b683c047dc879ad313070397e28b77b3dcd4b44d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 21 Aug 2021 12:18:11 +0300 Subject: [PATCH 312/314] Remove cMissionAudio, move cAMCrime array outside of cPoliceRadioQueue (R* vision) --- src/audio/AudioLogic.cpp | 110 +++++++++++++++++++-------------------- src/audio/AudioManager.h | 32 +++++------- src/audio/PolRadio.cpp | 84 ++++++++++++++---------------- src/audio/PolRadio.h | 48 ++++++++++++----- 4 files changed, 141 insertions(+), 133 deletions(-) diff --git a/src/audio/AudioLogic.cpp b/src/audio/AudioLogic.cpp index b1f269ec..d09352be 100644 --- a/src/audio/AudioLogic.cpp +++ b/src/audio/AudioLogic.cpp @@ -154,13 +154,13 @@ cAudioManager::PostInitialiseGameSpecificSetup() if (m_nBridgeEntity >= 0) SetEntityStatus(m_nBridgeEntity, TRUE); - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; - m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_NOT_LOADED; - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_STOPPED; - m_sMissionAudio.m_bIsPlaying = FALSE; - m_sMissionAudio.m_bIsPlayed = FALSE; - m_sMissionAudio.m_bPredefinedProperties = TRUE; - m_sMissionAudio.m_nMissionAudioCounter = 0; + m_nMissionAudioSampleIndex = NO_SAMPLE; + m_nMissionAudioLoadingStatus = LOADING_STATUS_NOT_LOADED; + m_nMissionAudioPlayStatus = PLAY_STATUS_STOPPED; + m_bIsMissionAudioPlaying = FALSE; + m_bIsMissionAudioAllowedToPlay = FALSE; + m_bIsMissionAudio2D = TRUE; + m_nMissionAudioFramesToPlay = 0; ResetAudioLogicTimers(CTimer::GetTimeInMilliseconds()); } @@ -8479,14 +8479,14 @@ cAudioManager::PreloadMissionAudio(Const char *name) if (m_bIsInitialised) { int32 missionAudioSfx = FindMissionAudioSfx(name); if (missionAudioSfx != NO_SAMPLE) { - m_sMissionAudio.m_nSampleIndex = missionAudioSfx; - m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_NOT_LOADED; - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_STOPPED; - m_sMissionAudio.m_bIsPlaying = FALSE; - m_sMissionAudio.m_nMissionAudioCounter = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; - m_sMissionAudio.m_nMissionAudioCounter *= 4; - m_sMissionAudio.m_bIsPlayed = FALSE; - m_sMissionAudio.m_bPredefinedProperties = TRUE; + m_nMissionAudioSampleIndex = missionAudioSfx; + m_nMissionAudioLoadingStatus = LOADING_STATUS_NOT_LOADED; + m_nMissionAudioPlayStatus = PLAY_STATUS_STOPPED; + m_bIsMissionAudioPlaying = FALSE; + m_nMissionAudioFramesToPlay = m_nTimeSpent * SampleManager.GetStreamedFileLength(missionAudioSfx) / 1000; + m_nMissionAudioFramesToPlay *= 4; + m_bIsMissionAudioAllowedToPlay = FALSE; + m_bIsMissionAudio2D = TRUE; g_bMissionAudioLoadFailed = FALSE; } } @@ -8496,7 +8496,7 @@ uint8 cAudioManager::GetMissionAudioLoadingStatus() { if (m_bIsInitialised) - return m_sMissionAudio.m_nLoadingStatus; + return m_nMissionAudioLoadingStatus; return LOADING_STATUS_LOADED; } @@ -8505,24 +8505,24 @@ void cAudioManager::SetMissionAudioLocation(float x, float y, float z) { if (m_bIsInitialised) { - m_sMissionAudio.m_bPredefinedProperties = FALSE; - m_sMissionAudio.m_vecPos = CVector(x, y, z); + m_bIsMissionAudio2D = FALSE; + m_vecMissionAudioPosition = CVector(x, y, z); } } void cAudioManager::PlayLoadedMissionAudio() { - if (m_bIsInitialised && m_sMissionAudio.m_nSampleIndex != NO_SAMPLE && m_sMissionAudio.m_nLoadingStatus == LOADING_STATUS_LOADED && - m_sMissionAudio.m_nPlayStatus == PLAY_STATUS_STOPPED) - m_sMissionAudio.m_bIsPlayed = TRUE; + if (m_bIsInitialised && m_nMissionAudioSampleIndex != NO_SAMPLE && m_nMissionAudioLoadingStatus == LOADING_STATUS_LOADED && + m_nMissionAudioPlayStatus == PLAY_STATUS_STOPPED) + m_bIsMissionAudioAllowedToPlay = TRUE; } bool8 cAudioManager::IsMissionAudioSampleFinished() { if (m_bIsInitialised) - return m_sMissionAudio.m_nPlayStatus == PLAY_STATUS_FINISHED; + return m_nMissionAudioPlayStatus == PLAY_STATUS_FINISHED; static int32 cPretendFrame = 1; @@ -8533,13 +8533,13 @@ void cAudioManager::ClearMissionAudio() { if (m_bIsInitialised) { - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; - m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_NOT_LOADED; - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_STOPPED; - m_sMissionAudio.m_bIsPlaying = FALSE; - m_sMissionAudio.m_bIsPlayed = FALSE; - m_sMissionAudio.m_bPredefinedProperties = TRUE; - m_sMissionAudio.m_nMissionAudioCounter = 0; + m_nMissionAudioSampleIndex = NO_SAMPLE; + m_nMissionAudioLoadingStatus = LOADING_STATUS_NOT_LOADED; + m_nMissionAudioPlayStatus = PLAY_STATUS_STOPPED; + m_bIsMissionAudioPlaying = FALSE; + m_bIsMissionAudioAllowedToPlay = FALSE; + m_bIsMissionAudio2D = TRUE; + m_nMissionAudioFramesToPlay = 0; } } @@ -8557,16 +8557,16 @@ cAudioManager::ProcessMissionAudio() static uint8 nFramesForPretendPlaying = 0; if (!m_bIsInitialised) return; - if (m_sMissionAudio.m_nSampleIndex == NO_SAMPLE) return; + if (m_nMissionAudioSampleIndex == NO_SAMPLE) return; - switch (m_sMissionAudio.m_nLoadingStatus) { + switch (m_nMissionAudioLoadingStatus) { case LOADING_STATUS_NOT_LOADED: - SampleManager.PreloadStreamedFile(m_sMissionAudio.m_nSampleIndex, 1); - m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_LOADED; + SampleManager.PreloadStreamedFile(m_nMissionAudioSampleIndex, 1); + m_nMissionAudioLoadingStatus = LOADING_STATUS_LOADED; nFramesUntilFailedLoad = 0; break; case LOADING_STATUS_LOADED: - if (!m_sMissionAudio.m_bIsPlayed) + if (!m_bIsMissionAudioAllowedToPlay) return; if (g_bMissionAudioLoadFailed) { if (m_bTimerJustReset) { @@ -8577,39 +8577,39 @@ cAudioManager::ProcessMissionAudio() nFramesUntilFailedLoad = 0; } else if (!m_nUserPause) { if (++nFramesForPretendPlaying < 120) { - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_PLAYING; + m_nMissionAudioPlayStatus = PLAY_STATUS_PLAYING; } else { - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_FINISHED; - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; + m_nMissionAudioPlayStatus = PLAY_STATUS_FINISHED; + m_nMissionAudioSampleIndex = NO_SAMPLE; } } break; } - switch (m_sMissionAudio.m_nPlayStatus) { + switch (m_nMissionAudioPlayStatus) { case PLAY_STATUS_STOPPED: - if (MissionScriptAudioUsesPoliceChannel(m_sMissionAudio.m_nSampleIndex)) { - SetMissionScriptPoliceAudio(m_sMissionAudio.m_nSampleIndex); + if (MissionScriptAudioUsesPoliceChannel(m_nMissionAudioSampleIndex)) { + SetMissionScriptPoliceAudio(m_nMissionAudioSampleIndex); } else { if (m_nUserPause) SampleManager.PauseStream(TRUE, 1); - if (m_sMissionAudio.m_bPredefinedProperties) { + if (m_bIsMissionAudio2D) { SampleManager.SetStreamedVolumeAndPan(80, 63, TRUE, 1); } else { - distSquared = GetDistanceSquared(m_sMissionAudio.m_vecPos); + distSquared = GetDistanceSquared(m_vecMissionAudioPosition); if (distSquared >= SQR(50.0f)) { emittingVol = 0; pan = 63; } else { dist = Sqrt(distSquared); emittingVol = ComputeVolume(80, 50.0f, dist); - TranslateEntity(&m_sMissionAudio.m_vecPos, &vec); + TranslateEntity(&m_vecMissionAudioPosition, &vec); pan = ComputePan(50.f, &vec); } SampleManager.SetStreamedVolumeAndPan(emittingVol, pan, TRUE, 1); } SampleManager.StartPreloadedStreamedFile(1); } - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_PLAYING; + m_nMissionAudioPlayStatus = PLAY_STATUS_PLAYING; nCheckPlayingDelay = 30; break; case PLAY_STATUS_PLAYING: @@ -8618,28 +8618,28 @@ cAudioManager::ProcessMissionAudio() SampleManager.StopStreamedFile(1); break; } - if (MissionScriptAudioUsesPoliceChannel(m_sMissionAudio.m_nSampleIndex)) { + if (MissionScriptAudioUsesPoliceChannel(m_nMissionAudioSampleIndex)) { if (!m_nUserPause) { if (nCheckPlayingDelay) { --nCheckPlayingDelay; - } else if (GetMissionScriptPoliceAudioPlayingStatus() == PLAY_STATUS_FINISHED || m_sMissionAudio.m_nMissionAudioCounter-- == 0) { - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_FINISHED; - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; + } else if (GetMissionScriptPoliceAudioPlayingStatus() == PLAY_STATUS_FINISHED || m_nMissionAudioFramesToPlay-- == 0) { + m_nMissionAudioPlayStatus = PLAY_STATUS_FINISHED; + m_nMissionAudioSampleIndex = NO_SAMPLE; SampleManager.StopStreamedFile(1); - m_sMissionAudio.m_nMissionAudioCounter = 0; + m_nMissionAudioFramesToPlay = 0; } } - } else if (m_sMissionAudio.m_bIsPlaying) { + } else if (m_bIsMissionAudioPlaying) { if (SampleManager.IsStreamPlaying(1) || m_nUserPause || m_nPreviousUserPause) { if (m_nUserPause) SampleManager.PauseStream(TRUE, 1); else SampleManager.PauseStream(FALSE, 1); } else { - m_sMissionAudio.m_nPlayStatus = PLAY_STATUS_FINISHED; - m_sMissionAudio.m_nSampleIndex = NO_SAMPLE; + m_nMissionAudioPlayStatus = PLAY_STATUS_FINISHED; + m_nMissionAudioSampleIndex = NO_SAMPLE; SampleManager.StopStreamedFile(1); - m_sMissionAudio.m_nMissionAudioCounter = 0; + m_nMissionAudioFramesToPlay = 0; } } else { if (m_nUserPause) @@ -8649,7 +8649,7 @@ cAudioManager::ProcessMissionAudio() break; nCheckPlayingDelay = 0; } - m_sMissionAudio.m_bIsPlaying = TRUE; + m_bIsMissionAudioPlaying = TRUE; } break; default: @@ -8661,7 +8661,7 @@ cAudioManager::ProcessMissionAudio() nFramesForPretendPlaying = 0; g_bMissionAudioLoadFailed = TRUE; nFramesUntilFailedLoad = 0; - m_sMissionAudio.m_nLoadingStatus = LOADING_STATUS_LOADED; + m_nMissionAudioLoadingStatus = LOADING_STATUS_LOADED; } break; default: diff --git a/src/audio/AudioManager.h b/src/audio/AudioManager.h index efff4f39..39fa9288 100644 --- a/src/audio/AudioManager.h +++ b/src/audio/AudioManager.h @@ -123,22 +123,6 @@ public: VALIDATE_SIZE(cPedComments, 1164); -class CEntity; - -class cMissionAudio -{ -public: - CVector m_vecPos; - bool8 m_bPredefinedProperties; - uint32 m_nSampleIndex; - uint8 m_nLoadingStatus; - uint8 m_nPlayStatus; - bool8 m_bIsPlaying; - int32 m_nMissionAudioCounter; - bool8 m_bIsPlayed; -}; -VALIDATE_SIZE(cMissionAudio, 32); - // name made up class cAudioScriptObjectManager { @@ -152,6 +136,7 @@ public: class cTransmission; +class CEntity; class CPlane; class CVehicle; class CPed; @@ -247,12 +232,23 @@ public: int32 m_nWaterCannonEntity; int32 m_nPoliceChannelEntity; cPoliceRadioQueue m_sPoliceRadioQueue; + cAMCrime m_aCrimes[10]; int32 m_nFrontEndEntity; int32 m_nCollisionEntity; cAudioCollisionManager m_sCollisionManager; int32 m_nProjectileEntity; int32 m_nBridgeEntity; - cMissionAudio m_sMissionAudio; + + // Mission audio stuff + CVector m_vecMissionAudioPosition; + bool8 m_bIsMissionAudio2D; + uint32 m_nMissionAudioSampleIndex; + uint8 m_nMissionAudioLoadingStatus; + uint8 m_nMissionAudioPlayStatus; + bool8 m_bIsMissionAudioPlaying; + int32 m_nMissionAudioFramesToPlay; + bool8 m_bIsMissionAudioAllowedToPlay; + int32 m_anRandomTable[5]; uint8 m_nTimeSpent; bool8 m_nUserPause; @@ -510,7 +506,7 @@ public: void SetMissionAudioLocation(float x, float y, float z); void PlayLoadedMissionAudio(); bool8 IsMissionAudioSampleFinished(); - bool8 IsMissionAudioSamplePlaying() { return m_sMissionAudio.m_nPlayStatus == PLAY_STATUS_PLAYING; } + bool8 IsMissionAudioSamplePlaying() { return m_nMissionAudioPlayStatus == PLAY_STATUS_PLAYING; } bool8 ShouldDuckMissionAudio() { return IsMissionAudioSamplePlaying(); } void ClearMissionAudio(); void ProcessMissionAudio(); diff --git a/src/audio/PolRadio.cpp b/src/audio/PolRadio.cpp index 76a87137..553cf287 100644 --- a/src/audio/PolRadio.cpp +++ b/src/audio/PolRadio.cpp @@ -85,11 +85,9 @@ cAudioManager::InitialisePoliceRadioZones() void cAudioManager::InitialisePoliceRadio() { - m_sPoliceRadioQueue.policeChannelTimer = 0; - m_sPoliceRadioQueue.policeChannelTimerSeconds = 0; - m_sPoliceRadioQueue.policeChannelCounterSeconds = 0; - for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) - m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; + m_sPoliceRadioQueue.Reset(); + for (int32 i = 0; i < ARRAY_SIZE(m_aCrimes); i++) + m_aCrimes[i].type = CRIME_NONE; SampleManager.SetChannelReverbFlag(CHANNEL_POLICE_RADIO, FALSE); gSpecialSuspectLastSeenReport = FALSE; @@ -201,7 +199,7 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) bMissionAudioPhysicalPlayingStatus == PLAY_STATUS_PLAYING) { SampleManager.PauseStream(FALSE, 1); } - if (m_sPoliceRadioQueue.policeChannelTimer == 0) bChannelOpen = FALSE; + if (m_sPoliceRadioQueue.m_nSamplesInQueue == 0) bChannelOpen = FALSE; if (cWait) { #ifdef FIX_BUGS cWait -= CTimer::GetLogicalFramesPassed(); @@ -238,14 +236,8 @@ cAudioManager::ServicePoliceRadioChannel(uint8 wantedLevel) } if (bChannelOpen) DoPoliceRadioCrackle(); if ((g_nMissionAudioSfx == TOTAL_AUDIO_SAMPLES || g_nMissionAudioPlayingStatus != PLAY_STATUS_PLAYING) && - !SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO) && m_sPoliceRadioQueue.policeChannelTimer) { - if (m_sPoliceRadioQueue.policeChannelTimer) { - sample = m_sPoliceRadioQueue.crimesSamples[m_sPoliceRadioQueue.policeChannelCounterSeconds]; - m_sPoliceRadioQueue.policeChannelTimer--; - m_sPoliceRadioQueue.policeChannelCounterSeconds = (m_sPoliceRadioQueue.policeChannelCounterSeconds + 1) % 60; - } else { - sample = TOTAL_AUDIO_SAMPLES; - } + !SampleManager.GetChannelUsedFlag(CHANNEL_POLICE_RADIO) && m_sPoliceRadioQueue.m_nSamplesInQueue != 0) { + sample = m_sPoliceRadioQueue.Remove(); if (wantedLevel == 0) { if (gSpecialSuspectLastSeenReport) { gSpecialSuspectLastSeenReport = FALSE; @@ -299,18 +291,18 @@ cAudioManager::SetupCrimeReport() if (MusicManager.m_nMusicMode == MUSICMODE_CUTSCENE) return FALSE; - if (60 - m_sPoliceRadioQueue.policeChannelTimer <= 9) { + if (POLICE_RADIO_QUEUE_MAX_SAMPLES - m_sPoliceRadioQueue.m_nSamplesInQueue <= 9) { AgeCrimes(); return TRUE; } - for (i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { - if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) + for (i = 0; i < ARRAY_SIZE(m_aCrimes); i++) { + if (m_aCrimes[i].type != CRIME_NONE) break; } - if (i == ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) return FALSE; - audioZoneId = CTheZones::FindAudioZone(&m_sPoliceRadioQueue.crimes[i].position); + if (i == ARRAY_SIZE(m_aCrimes)) return FALSE; + audioZoneId = CTheZones::FindAudioZone(&m_aCrimes[i].position); if (audioZoneId >= 0 && audioZoneId < NUMAUDIOZONES) { zone = CTheZones::GetAudioZone(audioZoneId); for (int j = 0; j < NUMAUDIOZONES; j++) { @@ -319,14 +311,14 @@ cAudioManager::SetupCrimeReport() m_sPoliceRadioQueue.Add(m_anRandomTable[4] % 3 + SFX_POLICE_RADIO_MESSAGE_NOISE_1); m_sPoliceRadioQueue.Add(m_anRandomTable[0] % 3 + SFX_WEVE_GOT); m_sPoliceRadioQueue.Add(m_anRandomTable[1] % 2 + SFX_A_10_1); - switch (m_sPoliceRadioQueue.crimes[i].type) { - case CRIME_PED_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_HIT_PED; break; - case CRIME_COP_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_HIT_COP; break; - case CRIME_VEHICLE_BURNED: m_sPoliceRadioQueue.crimes[i].type = CRIME_STEAL_CAR; break; - case CRIME_DESTROYED_CESSNA: m_sPoliceRadioQueue.crimes[i].type = CRIME_SHOOT_HELI; break; + switch (m_aCrimes[i].type) { + case CRIME_PED_BURNED: m_aCrimes[i].type = CRIME_HIT_PED; break; + case CRIME_COP_BURNED: m_aCrimes[i].type = CRIME_HIT_COP; break; + case CRIME_VEHICLE_BURNED: m_aCrimes[i].type = CRIME_STEAL_CAR; break; + case CRIME_DESTROYED_CESSNA: m_aCrimes[i].type = CRIME_SHOOT_HELI; break; default: break; } - m_sPoliceRadioQueue.Add(m_sPoliceRadioQueue.crimes[i].type + SFX_CRIME_1 - 1); + m_sPoliceRadioQueue.Add(m_aCrimes[i].type + SFX_CRIME_1 - 1); m_sPoliceRadioQueue.Add(SFX_IN); if (sampleIndex == SFX_POLICE_RADIO_SHORESIDE_VALE && (strcmp(zone->name, SubZo2Label) == 0 || strcmp(zone->name, SubZo3Label) == 0)) { @@ -340,17 +332,17 @@ cAudioManager::SetupCrimeReport() quarterX = 0.25f * rangeX; quarterY = 0.25f * rangeY; - if (m_sPoliceRadioQueue.crimes[i].position.y > halfY + quarterY) { + if (m_aCrimes[i].position.y > halfY + quarterY) { m_sPoliceRadioQueue.Add(SFX_NORTH); processed = TRUE; - } else if (m_sPoliceRadioQueue.crimes[i].position.y < halfY - quarterY) { + } else if (m_aCrimes[i].position.y < halfY - quarterY) { m_sPoliceRadioQueue.Add(SFX_SOUTH); processed = TRUE; } - if (m_sPoliceRadioQueue.crimes[i].position.x > halfX + quarterX) + if (m_aCrimes[i].position.x > halfX + quarterX) m_sPoliceRadioQueue.Add(SFX_EAST); - else if (m_sPoliceRadioQueue.crimes[i].position.x < halfX - quarterX) + else if (m_aCrimes[i].position.x < halfX - quarterX) m_sPoliceRadioQueue.Add(SFX_WEST); else if (!processed) m_sPoliceRadioQueue.Add(SFX_CENTRAL); @@ -363,7 +355,7 @@ cAudioManager::SetupCrimeReport() } } } - m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; + m_aCrimes[i].type = CRIME_NONE; AgeCrimes(); return TRUE; } @@ -536,7 +528,7 @@ cAudioManager::SetupSuspectLastSeenReport() if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE) { veh = FindPlayerVehicle(); if (veh != nil) { - if (60 - m_sPoliceRadioQueue.policeChannelTimer > 9) { + if (POLICE_RADIO_QUEUE_MAX_SAMPLES - m_sPoliceRadioQueue.m_nSamplesInQueue > 9) { color1 = veh->m_currentColour1; if (color1 >= ARRAY_SIZE(gCarColourTable)) { debug("\n *** UNKNOWN CAR COLOUR %d *** ", color1); @@ -669,7 +661,7 @@ cAudioManager::SetupSuspectLastSeenReport() m_sPoliceRadioQueue.Add(TOTAL_AUDIO_SAMPLES); } } - } else if (60 - m_sPoliceRadioQueue.policeChannelTimer > 4) { + } else if (POLICE_RADIO_QUEUE_MAX_SAMPLES - m_sPoliceRadioQueue.m_nSamplesInQueue > 4) { m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_MESSAGE_NOISE_1); m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_SUSPECT); m_sPoliceRadioQueue.Add(SFX_POLICE_RADIO_ON_FOOT); @@ -682,14 +674,14 @@ cAudioManager::SetupSuspectLastSeenReport() void cAudioManager::ReportCrime(eCrimeType type, const CVector &pos) { - int32 lastCrime = ARRAY_SIZE(m_sPoliceRadioQueue.crimes); + int32 lastCrime = ARRAY_SIZE(m_aCrimes); if (m_bIsInitialised && MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && FindPlayerPed()->m_pWanted->GetWantedLevel() > 0 && (type > CRIME_NONE || type < NUM_CRIME_TYPES) && m_FrameCounter >= gMinTimeToNextReport[type]) { - for (int32 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { - if (m_sPoliceRadioQueue.crimes[i].type) { - if (m_sPoliceRadioQueue.crimes[i].type == type) { - m_sPoliceRadioQueue.crimes[i].position = pos; - m_sPoliceRadioQueue.crimes[i].timer = 0; + for (int32 i = 0; i < ARRAY_SIZE(m_aCrimes); i++) { + if (m_aCrimes[i].type != CRIME_NONE) { + if (m_aCrimes[i].type == type) { + m_aCrimes[i].position = pos; + m_aCrimes[i].timer = 0; return; } } else { @@ -697,10 +689,10 @@ cAudioManager::ReportCrime(eCrimeType type, const CVector &pos) } } - if (lastCrime < ARRAY_SIZE(m_sPoliceRadioQueue.crimes)) { - m_sPoliceRadioQueue.crimes[lastCrime].type = type; - m_sPoliceRadioQueue.crimes[lastCrime].position = pos; - m_sPoliceRadioQueue.crimes[lastCrime].timer = 0; + if (lastCrime < ARRAY_SIZE(m_aCrimes)) { + m_aCrimes[lastCrime].type = type; + m_aCrimes[lastCrime].position = pos; + m_aCrimes[lastCrime].timer = 0; gMinTimeToNextReport[type] = m_FrameCounter + 500; } } @@ -723,7 +715,7 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z) if (!m_bIsInitialised) return; - if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && 60 - m_sPoliceRadioQueue.policeChannelTimer > 9) { + if (MusicManager.m_nMusicMode != MUSICMODE_CUTSCENE && POLICE_RADIO_QUEUE_MAX_SAMPLES - m_sPoliceRadioQueue.m_nSamplesInQueue > 9) { audioZone = CTheZones::FindAudioZone(&vec); if (audioZone >= 0 && audioZone < NUMAUDIOZONES) { zone = CTheZones::GetAudioZone(audioZone); @@ -776,9 +768,9 @@ cAudioManager::PlaySuspectLastSeen(float x, float y, float z) void cAudioManager::AgeCrimes() { - for (uint8 i = 0; i < ARRAY_SIZE(m_sPoliceRadioQueue.crimes); i++) { - if (m_sPoliceRadioQueue.crimes[i].type != CRIME_NONE) { - if (++m_sPoliceRadioQueue.crimes[i].timer > 1500) m_sPoliceRadioQueue.crimes[i].type = CRIME_NONE; + for (uint8 i = 0; i < ARRAY_SIZE(m_aCrimes); i++) { + if (m_aCrimes[i].type != CRIME_NONE) { + if (++m_aCrimes[i].timer > 1500) m_aCrimes[i].type = CRIME_NONE; } } } diff --git a/src/audio/PolRadio.h b/src/audio/PolRadio.h index 368708b6..f402c200 100644 --- a/src/audio/PolRadio.h +++ b/src/audio/PolRadio.h @@ -1,6 +1,7 @@ #pragma once #include "Crime.h" +#include "AudioSamples.h" struct cAMCrime { int32 type; @@ -17,30 +18,49 @@ struct cAMCrime { VALIDATE_SIZE(cAMCrime, 20); +#define POLICE_RADIO_QUEUE_MAX_SAMPLES 60 + class cPoliceRadioQueue { public: - int32 crimesSamples[60]; - uint8 policeChannelTimer; - uint8 policeChannelTimerSeconds; - uint8 policeChannelCounterSeconds; - cAMCrime crimes[10]; + int32 m_aSamples[POLICE_RADIO_QUEUE_MAX_SAMPLES]; + uint8 m_nSamplesInQueue; + uint8 m_nAddOffset; + uint8 m_nRemoveOffset; cPoliceRadioQueue() { - policeChannelTimerSeconds = 0; - policeChannelCounterSeconds = 0; - policeChannelTimer = 0; + Reset(); } - void Add(uint32 sample) + void Reset() { - if (policeChannelTimer != 60) { - crimesSamples[policeChannelTimerSeconds] = sample; - policeChannelTimer++; - policeChannelTimerSeconds = (policeChannelTimerSeconds + 1) % 60; + m_nAddOffset = 0; + m_nRemoveOffset = 0; + m_nSamplesInQueue = 0; + } + + bool8 Add(uint32 sample) + { + if (m_nSamplesInQueue != POLICE_RADIO_QUEUE_MAX_SAMPLES) { + m_aSamples[m_nAddOffset] = sample; + m_nSamplesInQueue++; + m_nAddOffset = (m_nAddOffset + 1) % POLICE_RADIO_QUEUE_MAX_SAMPLES; + return TRUE; } + return FALSE; + } + + uint32 Remove() + { + if (m_nSamplesInQueue != 0) { + uint32 sample = m_aSamples[m_nRemoveOffset]; + m_nSamplesInQueue--; + m_nRemoveOffset = (m_nRemoveOffset + 1) % POLICE_RADIO_QUEUE_MAX_SAMPLES; + return sample; + } + return TOTAL_AUDIO_SAMPLES; } }; -VALIDATE_SIZE(cPoliceRadioQueue, 444); +VALIDATE_SIZE(cPoliceRadioQueue, 244); From e33b56b49af7b9ba1b848e38e4aff3f88bc2e362 Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 21 Aug 2021 15:13:23 +0300 Subject: [PATCH 313/314] VC bits --- src/peds/PlayerPed.cpp | 29 +++++++++++++++++++++++++++++ src/peds/PlayerPed.h | 3 +++ 2 files changed, 32 insertions(+) diff --git a/src/peds/PlayerPed.cpp b/src/peds/PlayerPed.cpp index deb409b5..ef877965 100644 --- a/src/peds/PlayerPed.cpp +++ b/src/peds/PlayerPed.cpp @@ -20,6 +20,10 @@ #define PAD_MOVE_TO_GAME_WORLD_MOVE 60.0f +#ifdef VC_PED_PORTS +bool CPlayerPed::bDontAllowWeaponChange; +#endif + const uint32 CPlayerPed::nSaveStructSize = #ifdef COMPATIBLE_SAVES 1520; @@ -603,7 +607,11 @@ CPlayerPed::ProcessWeaponSwitch(CPad *padUsed) if (CDarkel::FrenzyOnGoing()) goto switchDetectDone; +#ifdef VC_PED_PORTS + if (padUsed->CycleWeaponRightJustDown() && !m_pPointGunAt && !bDontAllowWeaponChange) { +#else if (padUsed->CycleWeaponRightJustDown() && !m_pPointGunAt) { +#endif if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON_RUNABOUT @@ -619,7 +627,11 @@ CPlayerPed::ProcessWeaponSwitch(CPad *padUsed) } m_nSelectedWepSlot = WEAPONTYPE_UNARMED; } +#ifdef VC_PED_PORTS + } else if (padUsed->CycleWeaponLeftJustDown() && !m_pPointGunAt && !bDontAllowWeaponChange) { +#else } else if (padUsed->CycleWeaponLeftJustDown() && !m_pPointGunAt) { +#endif if (TheCamera.PlayerWeaponMode.Mode != CCam::MODE_M16_1STPERSON && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_SNIPER && TheCamera.PlayerWeaponMode.Mode != CCam::MODE_ROCKETLAUNCHER) { @@ -857,7 +869,11 @@ CPlayerPed::FindNextWeaponLockOnTarget(CEntity *previousTarget, bool lookToLeft) // nextTarget = nil; // duplicate float lastCloseness = -10000.0f; // CGeneral::GetATanOfXY(GetForward().x, GetForward().y); // unused +#ifdef VC_PED_PORTS + CVector distVec = previousTarget->GetPosition() - TheCamera.GetPosition(); +#else CVector distVec = previousTarget->GetPosition() - GetPosition(); +#endif float referenceBeta = CGeneral::GetATanOfXY(distVec.x, distVec.y); for (int h = CPools::GetPedPool()->GetSize() - 1; h >= 0; h--) { @@ -882,6 +898,9 @@ CPlayerPed::FindNextWeaponLockOnTarget(CEntity *previousTarget, bool lookToLeft) return false; SetWeaponLockOnTarget(nextTarget); +#ifdef VC_PED_PORTS + bDontAllowWeaponChange = true; +#endif SetPointGunAt(nextTarget); return true; } @@ -927,6 +946,9 @@ CPlayerPed::FindWeaponLockOnTarget(void) return false; SetWeaponLockOnTarget(nextTarget); +#ifdef VC_PED_PORTS + bDontAllowWeaponChange = true; +#endif SetPointGunAt(nextTarget); return true; } @@ -1511,6 +1533,13 @@ CPlayerPed::ProcessControl(void) m_bSpeedTimerFlag = false; } +#ifdef VC_PED_PORTS + if (bDontAllowWeaponChange && FindPlayerPed() == this) { + if (!CPad::GetPad(0)->GetTarget()) + bDontAllowWeaponChange = false; + } +#endif + #ifdef PED_SKIN if (!bIsVisible && IsClumpSkinned(GetClump())) UpdateRpHAnim(); diff --git a/src/peds/PlayerPed.h b/src/peds/PlayerPed.h index 796a6ca0..2e9f7989 100644 --- a/src/peds/PlayerPed.h +++ b/src/peds/PlayerPed.h @@ -40,6 +40,9 @@ public: CVector m_cachedCamFront; CVector m_cachedCamUp; #endif +#ifdef VC_PED_PORTS + static bool bDontAllowWeaponChange; +#endif CPlayerPed(); ~CPlayerPed(); From f86bdb2cdb2256a9348001e230c9c8eb6fe76e8e Mon Sep 17 00:00:00 2001 From: erorcun Date: Sat, 21 Aug 2021 17:15:30 +0300 Subject: [PATCH 314/314] Fix map teleport Z coordinate --- src/core/Radar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/Radar.cpp b/src/core/Radar.cpp index d74ce007..b29c19eb 100644 --- a/src/core/Radar.cpp +++ b/src/core/Radar.cpp @@ -1550,7 +1550,7 @@ CRadar::ToggleTargetMarker(float x, float y) ms_RadarTrace[nextBlip].m_bDim = 0; ms_RadarTrace[nextBlip].m_bInUse = 1; ms_RadarTrace[nextBlip].m_Radius = 1.0f; - CVector pos(x, y, 0.0f/*CWorld::FindGroundZForCoord(x,y)*/); + CVector pos(x, y, CWorld::FindGroundZForCoord(x,y)); TargetMarkerPos = pos; ms_RadarTrace[nextBlip].m_vec2DPos = pos; ms_RadarTrace[nextBlip].m_vecPos = pos;

_XIH{*$O8&11ShZn|dtUim|G)r|W?i_M$D9Zqb)0MZ zczUo>rY_>^-EAP)LqO>OoaJE^nT{H3K3 zCowOyHD3G5-NZQ(p=XG};N;iwk8JWd ztM^3m%Dcp+y!oa}C?!>X{)2B`L4p?7%r9;7Tum>c@z*i!W!`ebW~yx5LWF6I97 zjxN1W{;owxO$2oMFf0y?r zz~68Cno)N3E2U0~IA{$FabUi~QnSUwt>f^|80Jez;7<*&g(e$GU!!oPY~;D^DIg$*2GECq$9qtv6rB zAN=RHv2mzEVuEW8#=EG0pt~t%g@;xx8m9QZ5M9V1!9eA^Mn&MmZ@G^3<3mK!TQ|3Y z#td9>;1UY>5sW~=4+Mi~Bd)u6E5H8!Te;&M*D^FT;$e?wq?&jZuT98D84r^KqnX~u@7Q~caz6YN+u?6V`_!^#&O|E>*yI*V;B z(m8*O&Y7nnYan8L2UqBcTctpPsxVwC`9_dkZ0loHfkmrmi1juMLsWRTTu=!up@muL zIXg=f-pzMzpvFDVpDjFC{??p0sdDqC zm|EKtk@PUcs(ydGsQ7NOVU##QJIaCOK|VM%%SEMxBr_}<_;xele;zu|500I|*$nIQ zCLAHI??C`vVy}nv>z$9Dw_s{0IW{6hk+00V?G=0Z@}K?^x4(KXL!tR*o)yW_SFiHs z=AfCS{Q2L0k5rVm+;9oM`^#@)ZGS>!dc9+TkyrdApMowF39vkDy6QHCkuaA9WlCSU z%G+Oc2~k?K_4RWd6x>(;^%|FOeK8(ogt~?!Q?C`z6Q_>xnKQg|_bM*gI37}`7f?Td zY2_mmu@%;IKa)(R%+Pskzg;K{dSQc))db{V3o&QX6 zXdbUi&u4q0F$H5Yc1)Cc%guXNW)&2kIy27;QlZt8;)qd3&Yk2OPY4yL#ll;3h z0O~Tbnd4ydyk<~L1HG-3fFcc-A90*85O=!aqk5S#3TohR!z-8=VIYo)2wR9ltm{Hw zd(=@7a#;>Ru$ge{esde$R4;%8D?tkz(!(j}i$Cjy5w+I;&3B(lR|yFLnW_>;8CUMzjCF#Te7yc#qtOZj)%{J+ z_v)ysaL0RZp_C*PJpoXhOS$hfp>2uUjizyLtR2&;Rez0NAD3p!_RL zdXMMtO|#@k(@#jPo=~+p3Dtvj9W>Q)Y}tYc^|(Y`d}_*t>Npc1uHwUhI2aBa3D316 zB5V)Dg($rL**jAof2}pSw4Yx2vk}{@>rV_c{06c}j9Kl8`we z1i~Prj55jKgtN6)ed^HJ7Jam8Yqix{YyG{{r&g`40%}Ez0s<afQuwH@$Qf7*AbX!?RQ_FO32Do%vqnJCZpD+LMWvpC0KxPU| zBE*yM5l#cdib8)+ryz_rp{6AE3GlT6nwCn*@_`m+_jU&VWH>UPE}jaH7|ylkg^g0I zUEIg(E;%s_$*;%u0|$9#vO-a-*l3O8g%zWm zUT6!X``!V}ZLN~mr$R1QDrQGDj80p@(bukM7ahOn90)e155#+z5(em1)`qtd7c z=^jfzg^`BPFt$Xvw^ku5T@r{}OIu+_=wR!3k{3(E*m$xFu}P)7AEVIG*2eO_DwUBj z#2D&59Xvcy(x^8ABZ?7}s&dZ4R$8Yf5z&G8jEhr?tL+ypj`;_7@KfyXgB2^BC&b>FJo*igi?w;uWz9%HqEFXGVJF7TdFd!MxA*MzJ%38T7r z-2!SOBV?vTFdXjd<^E^(gz@5__L-~aacnkDB{U$hpV_e}TjpC@=2u3@w4!L~=I2ut zzViHDUL2iFN_7cBz}=zA$tS_H?u7&iw0Gns5+J4Buh39yY2kx!Igji9;oYoTK8uJ>wwjgtRvP0a}SVQBPEU?B_kvGFU-K(;@%U9&0P(| zx(kdmQ4+*p9P|&~!387 zT&P8B-g?CvbWsVDVxOesi9HAS#Yhj0%mn(@FTwn9lnDS`Ok<{EhZPaKLko^@tyZ&t z`?#)O9AgaV3VmHF+4uu@t_`sbPPskUwJ^J;U8fhE*IGxLPPqol22>7D5BpqlZ^L;< zWEAJE)e397TTuH)!5E6H%GSw((Xr_!lclBB&Y5#NsE*aG9(8nX$-^az*g7Sv`3uEJ z+Z?{PXObU1zo%)lPGe$t&I=M}LEyUtg?ZCHJZ7IF04c06Qv#WSJj+RM8j>p#84OCnNlUvi`w!Z7+Ih~dtjg|vBSAla(ACk&+TM)TDcgNmqbSJO zIt3fYTFDy)l@hYT3bT!67hip5C%X*Oa<9q1utq9`DS2K|LRD2cWzDg8^9m!Fyn#tm0Vm^h0+C! zyWxZX>uhXMQRD+tmQ2>Cx#fih6UrjUmtyv#MgZudjwx(0Lk#tm$pi_$+mE=;K4s~n z=k^%rYoVo_w&WE&!FD?9Wyx4!_h#>?D%x7IbVD6N_PVHu1Tw>pX=RIA0&|H|7*VSX zbayadKuy$b^US_3?%!$AjCcNJ0++3w$Lz6#RF%eP#grKC8q2urU=OEqi1vn1ZNOAs zD;u77S96H^lbvIa;R#%;pif!MG_Y13o1b5uD$NmJIMarpu^H}{Q~oy=wDZ=kiX zCP?VaRrHJe$XlieY;m7RbXm-RzX%*)grDFcPyN1s((gGzJ zr)na`98AqcSiN)>)6=CBUIuLnTt^r8v=V6A-rrS{20sOeF;r2!=E76x?d}aI z!(ePBCj~EzjBxKrl}0YE+_?ETdIZ4q7;(}iLjIZ0|9TINcwwt1C#FAqZ!=Wjk zkPvm`9TV)vrm0KMGhPu{g8Ryi_i_D=zhH7|lDf{&+S=EgI15CRLUoS-x&F^lZo!GBa=ik47A7A{BUvus$$FlO+1xSnH zz{nJ(sNfy9Hn^jO!~qxR#5sJtnUTmy5Kvjky}#PR;ZYl1TCsEivwOS96+vi3UxyW- z3+B$@m^mF00UCqbbUq>&w+JzT$=HZR7@v&@&F|~vgYUaIMi7W-*ciio+eg_tQK2C- zDfMU)0F$GnASg)YnZ+vJW1T>2Pw2fZLN;v+A~cqIm7}r=V`#WN@OoPmxv@n+N>Vhd z9KkxXArl5C<34|0NyI3#pd@4UF|Fi>Mo?mCRC9JzYSbrfB9jQ@%J7Qg=F>JlL{=0` zp!wc`Do>6X&TcDMm09S2DDU9f!GZ_(9t<07TAqjrP)EvmKQ}&S)>BEdh6!b^j;cN5 ziAN8*;IFUyIUoMwO&mNpOrwDPx0{ZlBrh8%Bb4)JbN{w|!9j(AfzA$AsVUmEFm4Rj@2c?hc)^Mm;hgSCY6#Eg zHLl$~#xsM5DgExckxmJrD)**+^tgG1h5lZ1L}riQ_j8%X%ZZGNpiIg4?s<}TeCm5V z{Pa%h4TGuM{sC49B;isw9um`1V2t6w#1xMmJW7j!j4naPQbu271I>vcvHNPw4D=ATr>BdBJ=&EuY{x(aBZr^Rlh=;PU5paeMP8jKW17;R|hREiMK4?_u@vUm>FgA*8IxAq7 z%T^*>e%vhj#wTbL4Q@UlY?>_TP;liyopz&mz9D>X$2iX&o@k2cr_5wL9ClheqV4FI zRLM5!>F;}3p24fBbA zxSi8B%;%yr*HI~g2#hy$OlaJgLQzq0YR0+t_bM~Z-S<96Ll=mF*POqeg|oYCYj+Rh zqahRMF+*6jXby!=ZcfYqY+4_qUB@c7%c6U3Z&uh0P|aBa8Y^_Uv zymNw?$5A2xyaupG@W|3En1dZ0ytI~(1;Z)xI%uy?lS}D}hP=ZGP%z$z8ondbgjx*; z|14LPPSaRTHz66OFrm;z`R%N&8bV9X>h2b@gQEa6GR0mD=z6f-7xdIv(JoX>$&U^Q zzZ@=5MsxL&3jJc()i7MYXNnzT)08?&^pL{qw3zqY2V#@><0zW|X`LoY`_siqB+jcO z5Z)sKZMA))KF;4>cPGF5w>R*>6T6shD2j$g7dZcboi~kh*oN?AyjI9=OEhKEk&G)u z^?mq_L_iq3>rE+8r{MaVAK}(VchGKx55E5js_pQNf4_qz3%a@Ho##+9d92A#f08x# zc8kFaC?CoL{5B{G_8%PL+dp{*G4|azUUdf5TwKMb$Ct^EOE6Lb%NEV0zunHiMg=7o z_&&i8UhB(D;qUxhijtlju6f@p$y6TcUrE@OU6--*u|JLq0gyt&z|=3P#lqL{#ID59 z+uF?uZKG5g1P7SUk@ja#H5`0Is3~htdY1B<5o5KY?^}DgVUVy#jV*`~#8!F%D;D+A z)jCD)8ZpScexBMt5y(L)IBiZB-BaV-xObX+4ox8#E?CmZs`iq@b>TZNPO*2Q5nw+M znBNPq6!u%xoI-2=5MIMaK^FuwI!5Q@@}D;1!eh+(RT z={s$B*>4G6oFBnAt+FPp$G&8K2-;WxaAj4J|4z;%M*z-eS=>6@j zylhnmw{Dr>C;O*S#;~HVlQZVls884V_KQ<&oos|co^%n7cf6S>6#Z=2rX=<+<)FNM zIEli;Gn_jt!zYz~p5c#J2A>-2gaHQK80Tw0{5h9gb1h%E;a6<*42|(u z*IdcG&K?wMMrm?1PmIguPdLVz9;sZ4puTRV`R)&Y<;Etw?ebIU%5!UykeED8*YnSz z(S_!$m)UK^%W#7vJeeSzU@jpc|3SH*FdJIaO3C|w_bl2gZ4pTrUzm2}aTEyvdw5CQ zWCtHnZDt8S&nmomRX58jlXfRyhlB-#_QfCWys6UTWkrk6^YwM)o)CftvI{d_WEchA zUF}?b1k`_@^#&` z6^FV01x5ff>eD|-R^T(RChWpeiwd=;z? zNmgE~Ti?LM_y}M4&QG}VPrt^;zkDmd-ZIGHX=s#+van{Xb`_M`h&2=Zk2g~spG1C1 zLUX=VnU3$Mg$&_&FaZ5P+IMAHWg9qQ`CK|r7sWSWPb z+DW}=AV%|huRe#imMV&v7H*kS2Z@_H1Oak^Ws4T_|6Fq!Tecjcy;2|)iO3?+np>%rEto6?nWqN%%(qEe72%?=>ghM{GCSptX#~7oec*JayD+oO;U1{PI^1Qg?eAdQY>@i1haeor~QOvm2v* z9!wByC1NCYmy6(u-Dt|jG!Hzvg$JJ6ie&AayKWH|pShBg*DYq@Kp!2s&9}%(jmpF+ zED70sL0CsZXoBHLMxlhC-1P*1^KbW&8N)kYe-3A@UqlN9+Nd~QvGbEA-WaW$?ecJA z6Ed7k(qG>SUW1X0k%=+B{vQuvFwE`k=iC#Hr9$auCi)E0x(vLs3b`waDs|p;{)w3L zGuw&S@4?_vNw~F3L)V_!jjcwEi)HVrtx3DEx0h?)brFB^xgT1gG9zN@PFiy; zD~{=9$=ohFyE|yjD^yHLZc3-5Bm6P`J|Y+_^WXi;jlB0CZ>BUQ3upE6-Zz|0OWI?n6)PVEfP*VuZI|wSieZZ73Q}&{!Mam!W$a z^X=cmyo$xEIRdVct#+oSF&^go>-l+5VLT?;*4`&H*{*3qu5zw;#ah1eqsMsQx#xKa z-Up5r0g&ZLwGA_s6ij&dNGzyOs=}LBcd(+?pjws~<@}|-OD_&Zi6kwtEIMd7`!h$# zJoFM@`~yDrk6Tcc!HSML=$w7SqZqf-5CXc?%A(ZDFdqW&bv%y zT=ueM?BBDW+cuA&b-@v}?ulX&XF!U7Ag84uh9T`o!U-ErMwNxq495_70FMjileoW^&4 zm_{?&amP_1006S~UW(}vTm0c+os;eu&{@tKS9GzqtxmN7luc0$noS91se>sIY2L@F z?dzHnyLiq5R>sDc?WH7a1*MIJTX|>3)}4m~l(sQl=*uh6u!S&j46h&z$3T!eMCG7|mgu|K8p4+wYVd1?8 z_L8aNDMeW!?ten+EW!2<9*!njQc+?xnG61xU^2zdJqP&CozI{$p{0?re8Ie^r8Rb5 zL;G<15JpOz?0R-utsFakxrpguW8y&){z za4Z*{cLKNH_3M{J0Y{AhP%Uv^GwU$&VJyLj;)2EfoZLG_ODSmadGCVXGupRpii>a0 z^{eai3|n&{cdMlx5sN5{=zt)?nHtI##lt&Bn(V!$y|ZX-)UEW_w(;i+I}h2|v3Dd1 zbau3H#@b`J@3CjtH8SZGRsx`dgVPHaFpkxtT^jTC@qz(^DPi^Ml?b4u!plxSoA&lj zCMU+N3FW@)$1MoeEaS3EF5^$G`2cHbA&Af)MlO07oDW|DQMph;;=8nF3Yul&dHV6vj{$gDoJArOf|) z!~MMaf|s#sL2qIk#Tvg9;RlHC7uwq|iKE#5vPnQ5F=~YS9(xW^wy(p>Pdb*qS_@@4 zL1=VpH0g$<{=Q8}!w2Hd=#r41k{(Bo0I0Mec@3d%8Qf10b~2XFQ7DsBQUuIof%VnY*d`m=xw?{px84#^eS~xT{Nu$){_Npjg{j%AVyS9fNTt>=_od-v#cstZs z+yCY3m+}10eLS%JP)Iz92-V)l=iw(*kua@_&N=^#UfU|zvS|}%oOT*y!s5jX`S3?R z$X|W@ugFnoV<@rBO_WkdS@PF^`ze0!cYc@lo-SJvkU-)*uh2hxHvO|_vwH1XF1!fd z`R;eJZR-}cJhzoc9(kCXZ@7Vto43$X$z94ab}s`BphL6r0m zU}<(#TC>bh$ueGZ{(2Vlx1s#TFz8S)jEXh+*v(#55_Wwyl|!A?vhPmM&iA~+`4QN|3E=9NNg{beh-DtGU}B! zwjDgoLr-kx=9_=TuQqK%iju@DlkE;T6SCxs^aLn!tcf`R&tqr+>Y9-A zJj+?WVkOH~tm5KVUd9JM@)5ReeSxPpJ;mdXKf&F%-OhcFJcMLbXZF~~6Bo1gz8Jw! zn&`L`rI^+w^{JATb2~X{-D2i1nZv9+Vq7XbwRJx?-hMkb-T4UP6H_58Ge&1{ zC@jfAh>w2c8vZwH{6Fe2nQheRz30X`A36;Wruk2`H>u`bKgoK0ji|6%m?-S26 z>G~5$7?g1ipXh*$#krndqSGxk1%eQ9MAj$^{^Fw_=9b%TR=$Q$4KR$hM2 zx!ir%T|D~uMiwnx#O0S?$=UMJ+E8|T2mLp&mY)=%6&SsVcY&;uKdF04cr(i-GEH7lV zcQiVUB2#%S001BWNkl9f|Nn>J8z=~hOl3Uz*kfUCyp~!%ua9s1(>v*{RcWuaQc)QdWymRQ zOANO!x`nTX;n4$p>05X5Pd|K=LYHL9rtG$=Dxdu0D|!7ZPoc~2;UE$bfJ!s!!hd+p zYt2JzRs;cTY&BzD;KvWV$jjCaP^)IBqU6xz7~lEv!-=*vpcLcvDXzW!A-?sKU$bmZ zA7`Dsip$Sg&&p#5=CuA|h3ScS73hxavui-5I%BW7G)S_mA+CyYJ&iw?E8| zJ%=cxzqONga-@W55q3_&jss(X zQMJ~LPuCfrwiSUk4j+-AeI#L~5>7S#OC@wPf7xBe4ZOr~Xn2@wKJ;O}@r`fr{&)W# z=e^<*=FMM7R%^rdPEg4X$mah$3ivPYFBC<=-48rW>|J0rx1Jbh@vMHjT~kp*83mrf zB0CWZ5%%ui!(V;=7Jl&P3t$X+mXoQBbxQ{L1xfXRTWvT0wQe~m@I|E6O-)Rw~wcv-OarZZ{oqnw_!|4 zL&v=o1e@kwCccKC!aRxy4P8wXf=vQ29!He`P}Nr3+VWDu>?9iRR#&1iLiRNZdH9qv#i+I(=r_j||q2jh157m85iXqXE>1_D_ ze7?W&-?t1o$uwWPWfQNxU^!J3nKBf4$vuy6wpDw|*GV{Y&_!yjNg^~{7UA~6!@PLs zV|@S4jg(rE8CY@5Y~~L1($&?0%7l8M85y2n_wFH{+kMdbpp@?|6rU$Vqew%S$#V+$ z;;B?9xFy59gaZ(cG65i21tU31*=?D^#tKf;{pR2#7cH#PVM^DIJLb{*oqdfFw_7YO z6fUk2h-J52%_JG{2|)x za|VZBNJ%pPyr~lE_?1s$vgcVeBRBUs~{vflGwC}HEX&+-SKxQXot$3Zfd^mp*y*PO*g=WbxZ z><)5c`z9FoPc`d8H+N3pnlyMz=(=O4!!woD;#v%MKD3!%J$IN7|L!6V9vtfhPV--N4Z%091ylv_U!M!e0*8yQdzV8fW`xJF8o@-Ix;FaVONB z<9_>y5(K8pB5gD+V3Tc)n`l=CJ0-$oBYs{Q=r_acnwsLLy9%D3nhG|45GX-isZgTn zZFtK_LM3aVlI1kYDGD7CfS3N6D7PJWOtkSt?AgFz?ABp37v6E221MEHu}Vt|wU#PV zBSSp$tNVHM!TW7Cpt5myZG=XtnVzmArKYQ+l{s_gFl+WKX3w3&>^XDj?;oJ6yN{mk zE;>8gY3uA}=LY5AnXgyN%t$1?Q|1{WxbtZuqLdo?#Qh6yUa8wBZa0x+Uw!;oVgJPw!z*EDprc0293Ep5a#%4^3lla=j zq!YN9XCQ^G&@xToH|&DAyl(%#Ho~+v_z!GPuwdPj%&+moVt7t ztC!EBv#SlQHIw7x?AtfQwml=fI6TEf2`!Z>Wm!-`9h!7%+mKQR zl;a(k_MR(N&Lzj#oqN;d8?n1KRa?6G7~Qog*}_hM{b@0U7`LIKc* z8Eb|`>G9m)BvVUTs1^;c2Q7_-Jdfy%%bew{#P)Lc3rIMVAVq!2tq)|0(M%K|Ni`zM z@bfJPtVT$slds+O*YiPViG?-dwlZtUGA=r6EypjL&DvuZ@uh3;;jV|D!RRtp{(ytoc!=1RBWG_|N(Jz&5J=c5=7IK{OHW#Y zLL+7AoPwa0eWuv{ArYeCm5KlRaGz%c5sdP%-2369d+p%x7+?SHLmYqXY*sB8K$#LX zU2wq(OZk^izL`J$#DB7Pc!Yuyal0$|y9Ijm&l;X8hu@TO0E9g$o>i{7E_ zqD2wpNB|SQCdLZAER4b!TusAER|96iU#D-h^dED?m;NUml4TSl2W?to2ze1Eb-FBA zG0;V~DV$@^5{D0+AkH>+#OS~{8%HaQ)C(50<*e>7annqR1OniCfMXE$YvHl|b$o-% z$nz;P5=|AOTz`qE#q45RxSc7*h84%~p4Y#ejtmy|)Oh)+$1zL*|mZ&5lEpO&1 z)wH;=S3n$x|9;xOX?pQN2Mopv7z=+`ocRt1~4{qZx-+eAC z7cE33nsm`XFR#AjIK<>^+;o8HMu`$!6ApK8ZU6R4#NR`?YuH_tK}qI@?X|NVaV+L) z&SAhI*HjtV`ONG&f}0sbmSy3(&EZ|U4nwfYG zpZxMq5mV4evcJ+^2LkqZ>7Jh zg<7o&+K}rKg)Ndo1fzt8QVdTPys-TMPd>ek-#oXA+wXpged7&kxuVR3@w(<6uQ;AR zd*{WhnAb~1#OBxs?H~20Nq+n@c#R*JK7GJ&zJ0^P|K{MgvGMTCihU~^bf|0`8Xx7g ze|9|wN9)}Al|N!$e<#Ygou{-l!b*fX1*4OOeFw+cKQ_%oqhN6NAo~Z0*gH7Jb6fZE z?4}*;n3|#`S5z~VWTaX@k<%eWlcf1k!W^VRJy9BxIE-=XEu1e7@g@k?I6)=A@I-TG z;G@n20LVJ};NXZ09a)cmTI>DffpIQe&_gQ?M?BVs7Oz80ngM42Z_V7N$~SCq>BiVl zqBcpkD1b4HHhgB8m)a5uS-cJINjbr85dRKsxS_39Wy9K~R4A>Duk8K=otffYm!HBw zZzrGn${p+-JV=T6xI02I&6+-#0yDyP-UJFmz~(d5wICXH?Vn)xf##m%iJ?OGl>wsC7`!DkxLOCsTMr(ONU! zXfW6i`ZCL|g@N4mPj)?gZKx#=#G|NXE*}6d9HQx9v`Jb-#mS#8lTuChe}J3bmtdMG zIly->FhZAO3>Ths0>{qpr=sn1xyn)yLlt<{>C0I>yN!>0@uxhsbuSGHlm_jwjdL6! z(JzwrOpxRmFeb633B=|71-?b%c%gZE+aOzZ9OP&BK1H=!p;l{U_0oBqzH$M-bHyoi zb=I(*X$@kg$uQJ%L-)LHR?h1U+9)qetM!A{_HpYZijjE1{du8O*9|{x;NX&BluH~6 zQ=No-{o>e=sNd_r1fea!RMFttTQ;JM;nH*0k(C9urr({eykNHtJAH46&d!XH#u%UY z=q=O>&6;HkxcKaKoO;q)7S5T)+@%H?$*A7&;pSt5S)2noMSXoLRBedx7C<8 zr-yY*XLIVh#jIX3kM7po-PaSXYVHkywO_?RiA1Nr7ed68?9^U&Ct~w6e5lTQW1@B! zW80cFnFhi4qDeuRWGb#hVsJeB+)nP?xSQh^b+cya0=GoUAwOrT=n`LAY>d5c1>rqc zyo?s9@aeDL&896od1CWU>R-E+S*?n*Pg~E5Ws5j&*?bnw?WecDmszc?ET~nHfo^2k zJkUbDFih!!>9WCOV~VM=LA}s43XLu`nTuRy3MzR{o@KPR)@W<3QfsNvQpu_1wzH5a z8a5MF8yZEy#PkF^_YHAibewwm+t3u$9a&osdU!XIDc7zzFF!fx9=7?&dI#%c{7>kOLL z)4}h*gl|K~n7@7PPOghNxBo9=l8x#!murDnQeIA_B#oO0q?7R~BqUVkrhdODcZ-AZSB zjrNwD_Dqqf7BXe6{LI*#5AUq?KMtzecLj_oF{P$dLS5j%$RVD3Y9|jrv6-L#;whd# zSWwBd^=r*Ij#>dAc?I3phnha*--&uhV5%|2-bO2(`4pLP?U7yR$H%TiU4Ri~r-C-aPZM(a(~=MWdDLD(4k*Kw=WSqaUn^M=H zJr0UYY1)-=!TQCl|IFLC{g<2g>h~UC_r8PFwJ%HpP;|Fc_>-$&&XpIR!ob`vOrws{ zu3N3~deB713lb+vE^ihnPl&p7TZw1k%rx2@Ee#VOx4))I-iubdzfm%|;KKJdRO$UH z;WK|7S4$BDMRI=7*y%n30Y}(1J$PuGoA2F>=#q=hIu1+&p`@V{TX*l{ogexx7oNG4 ztIj)-iYc7w zgHNvjPw=G(?U^%rjfza}nVOh>>&aXr)JvCORx0 znBN$DtFsvL6Y%>w#AbO!(H#N4z2r>EV#lO)!Q;>DV#nYFr>w1HPt_B17sIkV9&huiwgxb4v}P_^rnDkiUtW*$ei0LW_X z=)42U31UT=ePAVE8g}nK1+l4z%}*mRseMJ8D$uG*MMcfrL{SnK!Jji7_NXU(W*bua zQzS5h37ouoF>B`ay0*~q`D{}Y56PW^6J?Qs@ihV&nSs7mIDOe{G_zdV zfz86pGXY8vyL(PrI-Dwe4~Zk8c>jmf)(J9bA|rDo;15D1K>Q@$ZNP}{b{Ws}m33ij zooHk~fp|Bs+B zB>Wu(S2MT~yN*V%J3xt>@8%G2bM>eNPx>W>an$V$)O-li(eIU%GyN=K9osXTa|R}m zGIxm?j^BNMb=SDjE9KUzM)E4vY_f^TJv>fRJ8ioxp`i`h=cId0De+`ah)wg}1g-6O zUwi2(bhfn+TzSFlATV4=d`Zq#;)G2Gk_nPotx^#oS2h_ZK8wNktW#J=y7I4q42?pQ z0hxQ>nVR-<6VHibaU&D|lfZdA5xNM4xLl1S@!#lx!{QkIYpt8+Fdze`y_?IG6V2Xq zn21)IzG}y?=fEHjKD!s{1?QY~Jeg^rndX-dZsK2Vc@onodBepUXs@)`J`u{(gNcsT zu&e?o6pGvwEbedNlOMRsb|^|1xjtQYvleMmDW8`BDvORfB%a&zysEpk8 zNHb}#f8!QRu%2)Ql?rs%a+In&SQ_EKKY~6o)&wYZ46zwk0_s#8o?E?@o9??8G#=32 z(!yCMuOKs}0~wBK5>1E@+n8$`$?&mm>$r4+Lq$;)I;Qzh2d)KLc$k=S>KV`17tCa^ zW{n?TnDiR~GR4k6X}rq&@0Irhh|RBvU2%0V<-Fka=mD{2P#i;A3-9MR4$k`ryl@ZB zR-Y$t3`PkXpWnmq_%tW3Ud*zE{fKEWJi4FHeCZAfJq@BbW&P4{mmri47*jfzgfr1R z5^zpR1*}`v%Bjm{ao1CO5fSPpWd7At0xP!;Hyg+ArI|dU9$6l(( z!%;5)L}jSX0c3P1+Vx~RZ$USUlq(l?1Z88z3Dw}))fQP)O~%Te0?8^s1B1qhLUas2 zk=SMip-hsGJjaDA%#_7v zH6}Lf5R%Vk;8p=pvFa_tgm4(d$xSCHv~LsUEDvY@|HrLQksCPY%yqO^TQD-kPwsw- zU%hx3h47m5Ph!c!S!AYk_P!UUNurg}v4vYAWQLT*HplTEyRK{P=9d5+kdY;a@329|bj@YLH5 z;>YK%X>>AvJ4u9D_lZ2>pDo@$HDtYU)C5u7bK5FE2_Xqdx-J_LUfgq-`#0@^vf!N4 z){!Zg92w?I*WQn4LuN{@xbP&Dae^dBIn#6+3;}=h$bt9OF(^C^n zjt;YS%}TES&ULI@v64(Fa^iOP%Au7^Y~IG{XPnM|-tneiL1r7b17l1rx7pAmNS5ZEhM4~v88=iX1RDH!KT_o`bGA`erLT%eiHnyyJQnK&Wn zlXIF56;5^_gC?x*nLb4$>8mgYCi%2k2$*Ehc1Gj5u}adgeeWU0r>AMtRo1Osh*E|} zpWn$NyC*O}mRC7$;T&?~x1#sVA1-Evw)1~P=a22=lV7=)Tq%5&UVCeefBDMS znVOj7+wy4}H?T|$fiYc@C6^TfqN#F%j!wUiXJ*|WXAAg=4 z;q`Ako9@<(M&l5--Sq?&CpBMn;R!69-xCXqjBcJkF9g8lYxp!BMJ|Swi&{B-{ao@a zbCBJR{hQzXCLjIy#~2?w%#tNb_~);GgP+~;Q$BFbU$A_|GJ1P@=RZYZqMQEV6jEq83P78Sw;XRIMNHoGwh7yrCs1(*jeapzqZ?i5(Ia1q!2 z?OXZLJx}q8uieA=#1yW!kZ*kL8|;4JMLzYJzhmi&Rh+nC11E0Sz@L5K&lov8g35E| z%$aRBZ1LdA5E7bFU=@Ma|EpL4;8j<@2Hw&9-fs;8Koq8}AA>>bk{dUVF;0foVjX$f z5`8G{NwlJe(0Q&|UYVp6TRrGYMJ=?pgzah3$6Zs4y-D4t+Rd|@*X|-r=n5NF&ZS~> zLeF01d$?-+yYAzJp}ZzewYv*N1p(p*Voc-_d?JtcKAVt68=u1`ytvM_33Lu|?~ppA#xaG#_Q`{$(4B8Wkr_japJ%^G zh7%5@u~}Ar9ZFBAhJ-<)Mou-eP0MFJO@#*eb*3`%p$a9bLX&RRxe5y z&CH%Wqj6@F(H^m=kZk5%h6+W7uxwy}554O=uKSxeani~Gs;Ytj6VsEt`#taH%2&RU zJ8r*~!-o#pt>Hb<_{a1RKqtc5FyqGrMG$^;V)hxslaD`k1ReZV2>_|oFk+icVc?g$ zhWXV{&NRNr#c3Z``z}D{W6;K+6l7xDUL#HeIiG>Iz5Im6UU>1a>*Cvv#4Pzhqt3%C zBE0OxMbt9i$0cDN_dVRb{GNectRT_ji^RCSZ*CbB6wt&sL6tbIXsL{l0T`kS_T8X; zwZE@K$R4g6Q9^KXrdm4D$o8(zC zs7TH^CoJKcpLi30`Fk&?J+IhubYs}~#1mZo`Zsar*)QkI|L2Q5yXh&Wr>F2}$dtA! z&}eP_A==pO$C4jPjrgBbP+(EdQ;$B#```IT%shT;d;owYn${l7#D2F1hTC?Hk!2m6 z+M81?8#bNI!CECQ$3JsuKpV7jZNecy(h^%+keL|9D@E+ampC*L)Tuj6lK-DZQlJzAmn7t~kacGK;t>y1*Fz(ttN5lBaL_6~2>xEOuOxAx*5W30}T<9iN6A1eByH zy-~Ax+0wKYq5=e;IhHi7I53Ox^#f^$G76T^AvYvQnPf)om{I|4=Tjxx(kA~*)a%^& z;PX@k)-E4FiU##^iWl|_Ijt=mzvdWJ=7gJr_I7#g8plU*3@*4%y-vw^ftozGZw1%e z+0Hv(eL82KvXZafa6dQP{Upk03Sj5XoqX)0ALo;mPqO}m6FBFbGdcCNGg-9o7D#R^2{QR#D&SJNp|dfkpPK6cE6i{a06fb^4B;xJjBf7w@LtjH3N## zy{`6Kp>@e^JH{~5#c7@5QduSJ6JY7oW$TI9j=_%cydW@QD0PPIK4jmU(%DPgU4r0= zDX$L01?QfjC^W~;nS~1WbhD;T&U69>??p%;IFZQwRf2aqe%^enZF~!b3hfyN*x3#c%pod(d#*f-OnH;|`VQQu6{t@kni(&|q8r!#QW~TJMjlRaN`6lJI$ds}2cKZA?vXqSx!iN>+}3f56#=vm82nnEUVj zF5mj<*H|A8W4ic=l;$ZY0Ho7P_A1dHu6@I&j;_+VU^CZmS)&sdPnD1-W7%=4R1}&! zUQH8B0Edg73<*^YW;T}D{z?cXZ@7v3som-$8Fc>H&=9X|GTzBz) zcFu01@*$Qa)tf9#n=lW>c>)RLg)gOy?u({Q07?NNNZcBncJP|(ujB>S9po=R|6Shm z!P_{yxW*vPd0N)0!>QAAoIX7V+>z&^FpDx(xP+>_1k<-9nbGSh!h0LW(qa+ zkdGbfbH-266t$IGFf9^~?Q`4wZV-?}N`w(u*H{88F-c_77n%}|u4E+n|sX&n$T%xaxlt8kB zF@EeMFv|T$LSoKUm+TA7=p54NGCnzmisKm_XU;WwF#<`ay0Ig(O%co&NmQWVWCjn)s2vnsAz&iJO>Is0V zLwCnT(G-Z=e@K*{o_kK$G_IExQ8feyrO;KS&>X=@xa!09n=OJmSQwB3io%^yLq?4h zh_|4Wh&r4I`*v-mDz?ID-D294geX$gVbX9~=5x_P0aGP?)b<;gtWgrrQEVs1Mq7+; zZ6pVs7WZi)%J8FP0MZ;t@z|5avKd0kQH>TmVT_y^8c17W$vN11Z$@_+H91s;d%ky) z2Do_dEM02U3zax_ZQsoPZCluX!7ikVG?P*)10!i`RwCvw#8G@UDzu};0_kkOD9pqV zr9&!5rxG?h<<-x>fK9z_c7T$%7VVU%l$}s4t;Tf5XKQ9s;Y2ob(LiqFEka=#iHU1qc_YL1ES}pFoOhw@dr&Xz z*fN82zPR7E`XU6UP3$3VKZGu4V4w-v81osyh{21|03Xx*Q3H)S6!V}&Xn1>D`A%cVHq~atk{P|oZWwt&NH{umFrNz{E{EMF^brNgM!)9xe4o9WHgUn8 zu+QIkPp30v|L)B^@6uVeO^@MRt{5dn`wBS;%GM^KKu!HC1DRr{!WLtkFNqA9`)bP_ z5~lX=-p{H$cDddJo!J8nPd$vr zVu+$pQFCOq$L@)+2cKv?=A)}NnGsd-A`HBvg5ufPXcCPWQuA};IK z@H3skSTIKF;W^N=WaZGJSU+th}i=kB=$`Z5s?i%`=zk#M54CEE5w2Lm4tr!+DjsIb(}r}IDoaZ3isC_MZr z0xE3VvI(oG+k&nMl0?yBX31!iQv8xMYte^78>N3Gk0j-!Nk~x;V(UIE_Mr&&v8x0? z#W>5$W@pq43C>0-?vpmd7af-NERM*SLZFpUynuJA!C7{4evxi(l4oCY03FmRnoAH~ z{ry+-gD-gw6*VF9BZdx}=C?j*fyl}z%tG6W3FL@6lTXJ4Q_F!X?R*j^R0vxqCiu;N z`gi!r*S-LxL)SSv&czU6$z#L>W?ny$P-Unkt|c5xHhMj!1pq*2YAcLy&L0RodUlby zW(H9o&vws9z_yqm%{2*n$(7+^viOCdy$ZtBk~LEGqY?_| zo`NQDVa#E3t%b+l<|M&eYc85K;zm6CC7LLaS7cJ_pLydSJGIEv!~~b@-<8KFir^Rr zCMLRt-0(#fBD4meN^kqGlJ#{)9?k@AL$}_On00P5=HU z_@S3P1Fscb932rlPU2aE4j0phbAVzryo$L>=TwedPgxTnT_SY0?4v&YP$qFzj@APX zjK$M-g(4~t5>qIwILEkZjOq^i@@I#hdf1e&NOpOm!NTs!%1PKiGegf+BiyfTEn-ed zuxeg`SW`-3dUO0?a=ZwARmHaN(k4XQkItv^=69FDD+yYcuS)N0M=E4t6yB-6p_L>Rfn2FPsni?kVh`*xp9FPJ>x>Izvd!-@hxZh z>OF_~@|_Ry*WY}Y_2CewJ~{UOb=yV*;&X#k+!bbc)y}=eS?^7qZY{U^$lDBS}3bwe$JOJB5 zG;LeZu0qJ^KZl+}UnCJ{@wr5(l42d=psb8o)co1@jAZYNtVA)7w=sqx9WzNJeU?y# zX>(V#giug&n)y@OTa4%MYMgg;lnD)IngX1 zObd*Sb+E!6qk*p$*_JZQVxKZpFEm^vrt+O4 zdu#kzj5I)Nmne{2zduGh7T#}E^0^CQ=qYHgEF^rC(Dq&IQe2nZ!Pck-1gN6IP}Ck_#p>(&GM?}U&Ax5I>5d? zTe#o{eyLpM^G5(k)kQY#gq7offUmi0rN^r#L(G2z0hXy!RgRhGX`1!}axOrw%kE0td=w69B_OX7H5C%l=BeCaF+rfk zTBn85g88H9$>^{U?4qP(r$`goGK(n7LZ-!sdIfb&Phe_X*tu^j&%9t8Z+_)-7{n;R z@!nWCFVHtFrDfMs-U(P<)#R3t-l~en^NpkPG-KmfjrX*#9>Zyy%CX|cX<~}8N2paf zz3P*&58l<3f0{l!H(omsR)1KdG#P>yIJm`(v501>BS_x+P5)_bK84|y3aNN~>=+@{ zw%xb#@J%C1eKMDEIW7|taqCMXLr1KVgjmQ)kMB-n3I)h5jW&e~i(sX~tc|u%kQ7@V zxGnl3JDb+F9dEh0fG>SXAWxIB8%H~Dd;Hf3S_4yX)ZIT+KHXQgPWsOM0kvqI{YrcAm&ft-w(QWd1U&A~b4)O4i(#rkQ{Hy2;$ z$fOabDt=KpaGh8M+L6l2GqU8x+?-ceH8mSO)r!|4_bfEj(v3V+FqaA|Lr1@cLC6C{ z#Ie>WO;e|GVS#V5XN(jsJ^%6pRuSc=BI5qoBa+=CcpX#Gr4jzLP~oP=Rft0p zXM#crM_?HmAR!rz-rHm|n^P?@kWb^R2D(y47$0GG zS)0b>3Lz5Em{rqSs`q8%#dH=9&_W1=9UW5y8fi?EFtC#1u1K)5(MT~Z<#pZ(05>*? zN^pHB%2$uhbEX<6RQZh4>P^Ci>8yb{-FpC!Qj zHYT9mo`k?4%@IUceY-pu5}_H>v`iiAS8{Zg*?eH;hLns*DZ`8#+nbF^NTj-V?eu6h z6C+Jo4D~HgMY>#Mv^Y$=FO0y(YuL@+C&>|PbWm>Rwq62H!QCjcOr0d^#l_sXXaud+m!9Eu7c z^qfbuVHl(Gq=J*f2>%lVj2>(Nl&zgEZfJj=D{(7nIJ?xRY1zjkmoGi^h4z*<+%>LD z%xWe_YvoJEG+xYY=F$lHxdi1)DvB`P5NuJKG|dB1TVc(mE@myLn)_HL0p;C_*n#YY zYYCQC=`|Bj$uCjb%eii!LiXAhBg|Lm&w2yPs~ah|D+n=rm9*!oXrkQ9PoE{sU3}gW zRMyu#M6q@YUqpV5>3EBtv;Z?HG(nuRWKK##c^1|@dYzX7z>QC#>XU|89c=L6vI_@5 zoAgwri!#XueIMWy9!{+LWRC^uUL{9Mqrw!9F||m(QuAq0?ry-@l>uH{$-@+CH{Pq! zEY|#8^7v?aCfse%(>QJiYYS0ra%Qmq+jlvY_rHuk$hG?8pw!~Ka>bNkNaT#0DfB=Kc*Ah~Td z)RlorA^&X$={zV1@;AA}b&&3K+M@E_^W~H4)Z^XA%wb|X-ZN7*3>qJTfJJD0CQP$= z!ynM-gKwIAJ|N^iwGOeDLLitQ zAkKNJ5ESR%mCjOoHq3_56hafs49cnBO0Aw#i>s^*2T@xF|4$NqRtTi!Pbnc%oC_1A zlIcSWA!vRA8%v=9G7$4wP$$#J=DCD(#jl0}LqDw8M9vElAJFXRbzTYpL~!GqOyK~^ z@ugMnTNZ{$3WVvP>>dlm8l=9^tJ=|78a1*(&tB!2==G3-d`j+YR5@{KnWh=7(vqcp z{yV9vR`)G)&h)${CN1rMO$smc&4vA9i5W+Uek5x-imkRplv&^fnUe`G2?6KGK7h<< z21+DTHtIcfJ*4V(qd=k+cvOhGa#r$3cGjLL^7L$eX?wN=T8vBKcw&B?GYbP$ zd`ov{A(rR3wPvk1j*Ot3lTv_0Cvl!PkHzv!L?>Yjw5U5lb`mE6p9GA(x)3%Lc_1Q$ zdiU+?{1gCy8=ERLh~jDZ{ELCT z(}us2cMHCA-%)DUCMBR?J`$|VC~t&_3TWTnhky({m5_K6m@gBw79RM__$BWr8#vsa zZ*7skX|NJvTc1YmkB&w^?4!QHbvh&)URuqP_SehTrnV$QZZtVBr6o8=L}q$S3Z#)U ztAYttF~7LN{9+%KaFTKg4`;NoV*IoKS|P=B1d(VPNkJN88Nre3Hipkl$VE|G%xm$B zKt3=g23RH9D|-JV$w23?02mJ^rJBP}6`ojLQO zQ@_R#UeS7_u;vKd7f4z;k))v;&1704;9#3Ku?wRIerViw)65g($Vp4twMqclM2QR2 z(&n0(*T!p6F|oC*celBcKAM z#5CVh=302v1m*yP~xp9t3iwQb>0d9aUEoAQ&B=G z?4N%2&@v0XaT)?c_g07Ooq~;Uf+n-mWATWvVlO_lhzJb)fC*P~aO+qh=(D6ppxf~r zJ9`EL;JF9dy5BUF7F$*=EqjjYp|$@^x?fsEZ-G$uPwbu1d!F@1K{QD*Wx>>DgCf{x zRA)xUPz2ZMQgwULkCutF-0~BVc3lIs7zdfriW7zN8;fF#5yfOhX=5dg%c3G1ZFua& z0)s&xO>9wW<6=Byd=*|b>VL@nPV;2%jQx>v5(^#Cc{WC#V=X6eLCG39Ewvm20?g zb|Rh7lCL0*D-n(#p9{x}m-^&M7)#TF7q25TXx>tbw`G1M6JTbbK+`#JL|P9U;gX)q z1#CvOQMkV)2qOVY(N5}(Ik5y>+W)rn+i1_WgmKpR+W0Kk5XxiCOJAl52n)1HjF$(L z7+;F{QW4e%eI7b;mf>(c!|c|)OP)jPqX|&SuP7!z3BHz-HZ5K$LW=daPi@Jx_`=pV z_M?oyOeN6DLMo$kf6m*^X8}O)0~n>44)Lnoc4UcDO@~H=o+!Jknqd_jUE6y@woO*& z1chj1=F`i4I^wxtQ;5e-cbMZwLt)3eA9#Wq7oyUX*5YXTUx1H6l9YCJc&FW*W7z!b@+ z1taUooEikAXuCih$$9x?hn^-APEtGhYzeG)j9%xr0O<6>AtD$PN9_fC`_v+j4JT+s zs8nNFaOf|tbLF0KoVTTGL*SGBhQ+l3J#}2ZW1I?-peXCI-TU}y4jo$vbqK6ONv*o< z>#}7lonMk^oKZ%P;l#cbXkaO}N-KRwm_LpZYq-=9U?FXd1$i=jt-CdQZat zV*TSb-dDP9jqTK3C2z&GXS)9-(Q5?AbX3>O&1kig93TW0P<1ieonh zbe1AaTe$$l-31XT=BN?@p@-=JKuay1N0)h+bl-s`XFb|wuq-o&5ju|Skt<_Qp+G;E5h^Y8U z%8s;tN&Y^e1)GmTAS&5rPxF^Fd2FLVXF1}NqNanrL)*_knZJf}uk%{~0B$@d29-6| z73J9SGT)jPyaQ>V(m>AB&48Ca=U_NLF1e+x5qR)yA63upsfwM`V`-AT<}Elc!tM7w z%rNfRCI*W~V&!5I4%=q5it(z)+Uf@X_Wif^VHzbcSIVo++Eiz%&#AXWStQ!Bm!ua1zd*N}>uL==;JA66v99Iik} zKC;=6{M6rh5wkOs#Ubj&&oo!|&%P}8@g>84Qw}2~z*E|B zAzX91v!>^h@GW>h3nQPuXoX2<`YInzD&grspmQ&&I=IPMfD~X8=rv4a;|JV)XoLRb z1VZo!bi8BJ*;734vVEbA5{?PX)yj#b4P5QHe5Ui{<+T7WeZFzu5kiRpGvbm!Pa3SX z<6zKLlHSPQnSdfn|Crb#mVrkRY!Yqqto4nNGx6nA*uq@Uf~-W6P{G(=B$)uB#WrLl z!|->|U=_k;d$;qhfAWL;!`D3%Mc7c`!(aLiultqva@RwLXd1!SL4bLCHVU3>(-sKI z6n%p1;s41E0B9ww)a(4w2fo5hw>^S*<=F>z^2QfEBlI#t_;$cgx$Rb%12L0B&*%HgOs?m5Xr6t8!$1 zk#8)5PWPyk@NaH`mtA#$UUw`v6d9<}ng=uI#7JWUw!_5Hl8#A zCjOp?A!h)jcL9P+)ptb5I|M0t1ynS~g;?T}X|dQ^f{~e_O3$*vSXIS0O=}Om9gSzr zWnmFKdxf?$kq}f89dT@*n&kg_(~Ee?bq7G9X_O;REbt@$>Lxz+m3tU^M?I9tz>=9L zq7)N(q3QDcL>sQ57{FD`udVW5Zu}DO{)=xx2($dHN7D`fA2J2+hzg; z2DzWlXem|P0#SpfBHq?a|s^$wf+YG>~}xT zyKej}bE_Np#-Y9nTZK}^x_34nV$1_sLlzDM6=5h9kDfTgJO15A`TY-l1E&qw9@xcu zfAhz=?y>_^PC^~V6xv%zkzCWOrF2_9g5&|r=44_>Ew&HK^>Qf!h0;r379z=WT1cVD z)d4LQ2|;850~(Q1*{}9h0l!gxFgAPPIX6AkFL5rMp*~m*e;bq|Ycs*~(1Pc>gIkzf z>r;8fFR!p=-#+d*x=0i2{3$^g3_M&gRk3GG*fb80uQZ%puOm{;BHM{_aMyO8dHG&C z$ZMRo9V|0lw`MpL?mHC#~RD?7(T|KHZFpb3fQT{c^aIZ%Uw%5S~zbFEgN769=QSJAA_gN30a zbex?`gQjM^8t2N{4!yN-u3)EGWAkNK@Zh22#mPcJ5Dc4&XKm}!0mjD1xaZ7(6582o z&YW50^{=>&i7x3lXvkrOmZY&hj7WoJ9*;d3J)GRl@OUKoIJbChi^@6wi(=t>HrQ*=Z1^)2A-^#E5(dU?7>2vwsZT$Ox^aK3NTVBD|=`lJg zF;lic3|LZB(apk!PQa>!=jKl-&|0g0fD|aHXe65uX*%+{3Lu)+Rv7t?{EUwDvE69+ z?zjH*me$u#3xIe@)x{6i(Rw}nZ4j#@WZ>xH2Gg^%9PHLq{RZ6_ux0NIhZmKF)zy-^ zS*qc{RF@qcn3?QybX_>R)^EF(1kNn2@sjH=Xa9~#Dya&DXJ$j8feqRv+s+udXcI#Y zrhVfVBjw0L`(^NnM)X?Vt)>r4C>QGl>JhrgLpMCOn-tpTX=Ii$# zr`PN8D{p!!zxL1Gz_YH|&xC}$1Pcht$yKEo$#dKim7|(mMsLrifl0ueC23#z)~k%M zbA+iDpSk?15vI;GP|!*eWRfBkRsA^vprD3u&0O{(&ezNL*BG39FglhDT5ERNMTV?8 z6a4)1F68osQ}~TOgK@`$d#>XBx7|hK!(ojgL8DzhGr?Og?$Q;<{X^wX?p?xbQiJx3x=v7(si5Q<2cE%i|nL0;mN)=Dfq(SqsZ_Z3-VW$+2s zT5+mS0U+W7+9t#ZJ+p&RQk0>@+Y`cww>JWPuiXF06a4vSzRh3Vb}wg_*Fygl)G3`# zILYW`*X-w-Yc6Bo>}ED?nxs+B$%O^(zyEPQb=!T^0^%xOfBhBw+?!v?6&G%$+Yyw~ zw90uFrjN@k%>;i`i@7f6OcUxW&8zY|;z>jq+DEjc?EoEnyQJ^qOqYkF+L9LYs;vd0 zg=B0Eyed;K{T0gVX#p^D4bL8>SvifQ69S2AuW8|(6L!vQ=Izhi#`Li{w5i#+_(DGV zM9nwuf0(8~4PDpaZI@1Q$)sb@b-e$Ph6m>sXhs}9g2-M% z*q$uPCnuQ~`&WC9cW~nDDvv#Jn&YRI`R;cg<=*c-!QASQGb;`KrVj1;8XAxH9tYG~ zQLE>5FSwGQ{^1vM?UlQzs*0*<5OH{Ot`c`pO6Y8oY2?a7vt1G+4xfdSlmfGuBh9Ad z=o(4UZt){oZRwzqmZr}N!UR*>#IwHTJeNjc)63cd;Ji5-@Nar`w(P-gETO}7T;)Q1 zJ3rN=m@X6=ox(b&?M`F^%O@?Ys2TBXxMj=FfnX+ z$-WK`%?sjlp%4+Fu7}+8neXt7fAUhgk&tZ79Rz5r8Uk-zm8nJ`mlqFkp{+&Y=Y`TT zcTv)FML)8T$;~SvE!seSa9C;9h~)o;dM1TgV5mb3O(c2|&{8bfidew7jyiyMvmR8o7U)|vJ@)BnjmRVlxbNb8zM;|-MRR=EMMbEvGOE24l zlZGm`tEsHG&!GOCaiouvz)LB{rCc!XG+}ANY_y^BPtEsOgl8cE(u}vv0)r>^K08Aq zy~;XPBq^z6|BppfKFOxv(+J>6E-VuN-5eNk~4u^a+2n`Z!-Ad_D#iSw)TYFLLX>y|F_o5j=nG@3- zpOWS!{T15KY#!K*TG{dZWW2w)v*iG6&3l31im~QLM;|N%?8rB*b-3EE$^eegz$*+~^)EH^!TrC3Iv z*Mj+zMl$mt#sX-Jsc(vELRIT}~tT?d@QIibQ+`G72t5ZmBmB2p@v8tn`zn9Cq?vgISv(lqYuyi4i6<&FU5 z8kE(6+8dHu2#z!#rN74DdO6oYTBrHR3tg;(YKnPKTNBA4*&+AAadLi{(d%ge@V~gK z$<1`OUxKd#OijDI$xe&$_4SaO4lQzYY#O>9rsq!a_nvz>om{B_fWsSozOxv#*52+q zFFi0FK)P6wkbu+P_sKiB|L{qgSZB{e%TCVPe}oZDQH9QhpVoy!$XLKkQfyIUht>+M zo{(rfE3hQY@-o}k{*K#-IfzBtk0jKP)2~5Waq6iKLR8dF+h^Sc4X*i^vN#_qAwbAe zg`bl3szZx>j6yRD8OFCJv-sKiO7d5Q=@7aQw?$h5!h~Y{PutIiFRlM}-{>{6)>%a6 z=Su;RfR_oBihk4Z=QrPRPRmbk1O9I=*PDRu1b$;VN#ek?E+aQWo%^Hfo~yTa86P%G z^csc}+c4i0NW-j9$2ba9S-t#kAU|>@D(q+{<4&l9$q6EJ{PvS zMUn+=PS#=&991qqBT*}vaciGtO%%q{E`n*0z5LrmL5bfVRXE#^BYCfDG1OKXL; zv&_!^{0R>4!Y1~yIuWEt5MZD{d6 z8<)%T9{^+#{#&+_)`7AGa^;xh7%Z~Kk{T(|0C8-F z5+oD4U11YI()o9Rk3y!KHcd1eEbN!)<0wp)B!sMRWgJ^b`wQbOs@w)g40+74AV?s2 z69UAvz^S!^jlg7$_5c7BW&WWQ5EnolKrsK84yO6eH1GT^Y0}fI@o{ zB?-Imug!XekadOD*Vf7;r(%9O3ke%jKyNPHpU_Ex;tJa$zo!tQYL02KXibmRoD8WD z!Ui?({qwJK`vXVM6(l@u0{kB@KUl+`JskF#$2~~Tx5J+)$l6;8*xP>&x z&$TiE)AW|vhj}bo2pP+0Z4hq##zXw8|MHo1K0`f%0-hEC|C>vjn)=kkI31*FKBZEH zsOcmSmpDOv!^11e{!K93Rd#Pz9-8m5wy~ZFsjr^(q2tOe9kz`rZfb^yPOV`l|Jpmg ze$NSh_~n-}GclPVXEZ*g^h`r5B2V-j%57=H7Ja7C#FRaNGnh%U0E zF`|uyOQMHbt)`$6b&P8$KtmK zmWUFPldB})C($_RSnrm$4acW9UK#X<3 zSrD|4Oe_(W$DZfO)+&iJ6BB$2Veof*0k`8eBfDZ0*42 zEn|G^*ao3UL~Ksr-ovN4`qF(|vUeu<3Mk*H#5h5cW6H%6SjGAAB{3!vZfP{KE-|R8 zpdJRpn!#X*>s0i{x>PQon+WEf)B+JuFsx+@O6aHL9;BKXX1^EjHs;N{Bhn6ePGQLT zooPPGVyO0A3pq&^8urS>P=&@$bC&zm9$RcT9mn3D+x%W>%}o*@=>ti2zf0yq(N1;GFDs#oXH#iKYEGXkEZoU$>1 zLAi3lY>}4hhT|)aE4Nnc*`#dWKFb3qSCDYH7~Xr%ZopNWh3ykc)0^VR{939H2%y^V zo%^5QmEU(Io2SR(mUUo&);3-VmnHWjp$6+W#&B8FB-_=7q@Z5u_lKxL)$P#fI4VdH zis6Mmy)*E6tkECaE)$*-gK0EhqQ*|BTS|wUroNZikS40UHZ4t?khVD(uCWna{0kJ_34MHDv5T#wg@RLJ`@s}#90zGozchA zpyu&KxN^43fobKy>@SNr~SDWi|gK1h~I0?%VdS_kTI)IZryph2a^IHfT zLrR7yBw1QnA!MME?n}R$;4<^ghET4T8XAlrrie?MU$gncx($GD-uEbPfA=R@AN14N z5CU{M9bSLYG~YSdjs|>M02G%tHN%q+QAvZ>3^iN(wuJ;fC(gTAQ2QK#l|jw1CE>Eo z!k(VvvK=#M({Q#Qj>OvC>vGBXka6c3pPu5Oxs4pI8~4i}IyTRascD{Z#ZD@9#Wr7t z?xu~!72RD3!WA(*;8rrTDzzZeXTOy-O^ZEQ{YTQ%2p0NeU2LSahCR5HJY zv!YwtKTd4Bct>oc!0yJZP)u`MJQQfcgoL)ur?f_r#+m*Ts1=T$UgTf@!KZob)Y+J` z656bQtF}$^4=)~P^XazzZ{Pn$`N8>$0ESDaaBHW-9|ECBqmfRGIg>!zF4?PX>F=Ct z{ar3DA}sa?JhtMvZ09)B&5#Lg*dpM3WF+@*+z+})g= zU*^&SJJ~cbk#;$}!EX#-XgWwUY1Lvm%ugan5vgZ_FT;LI>?y;Ifhc5Lp4<4|A||t# z#{$l$28!Y*_EAA9s(B<~>(WKAR<4?%7D;`wC`O9~2*Ey%Q>*K|^FMu>FW&Vik!pYt zeYt09l7DpRIQ!1_x#sOZ#P5IfF3Rg^0RS{>i|E1;#E~lAW}8|vQnUh{h7L<+A}dsg zi`g=d!=f+s2OM321G5uM`i82p13jRTusd+u@tUQ6osmefzjbC|g@yS(FM94JbUQAH zrXnh><@L98ThlCseVO}Yf9G*{fpzWk-~RG;-gV<&b85BE-10hiJb0WB-EuEq`r3Ug z*N*AwF{WpxB5_wS8OMd+UB!B*!=tC>dFOxnDF5R#cOqJ&QgLaw#|`6MW~E}I2^y@5 zoOa)#V|?&a-(cs~OrF&_Llcz*rqBqVjUNgbvs|}aD^+oKs_A37UpWNDN`n(qae%Pm(dju!>RM&vG zvdtz^g>+LT9pLChQaEYb+a0bl)l;&xK!L?U&G9wI#k1o~&`<#?%Fx4x7d~^mp>FB| zxn~WA2oFAXg2va}aP2{$QwW{n-IPc`(!mmKWGOa84BWg>rPk-Y^zI*s& zh|^c$P1`1T)8-ymPET^(bdMKK_PA!EM?F-|3_Tv90dBqHVeWnSQ7+lPgB>%|$xLqT zY82+NYGxo+7lc6+f{O8I^pT`>Ho;eDUI~K0vNSEZC}{zTcF4OwQhXQ6e?`F+L#Dk# zUxZ`xOT7QXf6f2>o{zF+Q;*9I?4~NmL-9-OvoF?PeLOc2VYxr#zkcX;{>xu|9gSt? zLf(Z?RXu+Gs!6WisJZC%&tv}$&!aPFc-IHM*rroPM9%qC5JY{$@YEx?W+kS)W+<0( zSsc9K!b`c(DgX7zAwm;_OKhsCkjZ-*1OaPtgrx@3%9^$@3? zx>1hxmH+(k3Ih#}ND&tcXPBn2AeLF_IkBD>N zm0^swaa9N)`o|Y-o?&te*J%N=)@u_ z%9iOVKKq`ZWAFB9ItJaty8=8Ccc>B-rp;&`&ytFwU_T<@DM*@A#dMa_6I`XyQ^_JiD16f5Q!obsV|=Bhgi( z*hXgy{;OlTsrkq!zRhoZ;Bz7KvOq?a2rt?<#hdpI*thROF8a||(d&%SS?j}~&%gWg z+gn_4-tGd_OJ{IvXCk8|BQn|b0&JO_;OBPkrgQixeP46!mT7)s_a5Hn`FryLP7 zhU693@*gB~(qN=%VG}X}N0(N)@jF9)?3x+2c01g)6fyvPaSxD$lI;tNfcFD_;SX+R zyf@C@dg0|Xbn+n-619mMWR`>g(pFe%oGbxNn_55Puik~a`@|ahiXb}4v$cylPt%1B z?^u(HiP;Odcyb$4b&np-dFXxrqkyYPPm{i^lGIV)a-VS zS9UvGzh#EI)$@hrbsk$;<=5WxF*a|W;79+~b9lkCuVCkvP4vck^ihtST;S#}+{wp3 z_icuCjc7=R{mui&_^Ee(h*v-7ApiPj-oWmiTj^*Goshw3#{t;7rzuZpF8-@3@WnA? z87rk7p)l39^@25u7v+|(KfssoJ%%l+bB>>X%S)J?=povecOtc8`4`dE5q4d0tPC4I z_L+P5*MIsMv~F@xqzD}mu9%tN$M)9joSfy-x4eq6-Xxv%K7P<|?OfS)UYY>S#xi>L zQPL^1m~@R=K^(5r;s3tyVy>P$iyv&zG#(Yl#DTs1@$wS4ojOHb98l?fv2Xt*m!y#0 zkUf}7bO*xQyJ?JPUO2_g_s)mh0|L|&Vi8dF(aDu1z7gom2qh7OHol2wA%t~v{gw7t^Vr>Oz%LatovexD@4RQFgJ|Y9Y)u3S@1XApGN6s#vOc(BG@Wb^gxVZ{*vD zPbFn@&AuJ{#qazK+oyYGS z7p$-1RyUF@E*@B4<>0Q(+`h2JAVutz@ZVk(;h-3-Hkel2fH{(2x!>^csSO(Mi#7}S z9Boh|vhw+U-RIW3j&bdQtz5WgYY-GMU?*>1Wd=_^rgSWI{Lbg3k!;#%p$&_1RF1`^ zK97C+PO2uj@(rbURTeka*(X! zAu{EdsT{5k9TCR7(yJTx<9JT5$Fr&q+q?@0v^K(cqg+D8i^eDU;qAM4&7K`xw{3 zGVxrt0t$bGiWG;YglFcK*LlyMe~tA)n8!_HJ>K)HKgwl0XX!{yN+%ad8KG(SQUz7V zQr+;ukAIVQzW1)!Sd2%$Fh9RK>WAIFb5>t&yFx{CAAHUz|Z}6FK9^sn(+c~&*TL{t#gKIG_ z_G+KUZ-@ayL}7WHcxR>2Yh*9kEb&b=GK<^_5;V+ym^9NuN$o?t2?Bm-3PQ-w}={CaUZ3ygz+9c^!Ob2 zA34ofr{cGN;SId<`IpkeV+Z~yw3$EtY;Y{qHGg{3*Lc?lZ>6sD?vT-L&pBSRZ=Bcf zRW5$n4eYq#daB03@;rX95uAhyiaSRDoL4@8;o=Egy^_jt+ZCWx@UHKfoZ-!zH`6@E>s-5ef*XnZ*NN@5ZB(_7-$^!|nc_)=Vb!J639#FV;!?*X`3lTiT^=D8_PI^K6utwB z1Rk$6u3^c;MA|Y@Xo6Njlq1bD7sys7w1;G{6yEB6u$R4nQ^tLtSD)yxeQGzqI5@=b z&7WfbtUjUhu-aKtkL1F+V{Gq>L7 z?m5R~rwWck@A=c4zs1)cc#L0t>&qFN+{`y0ILcq%{52jswam+(caZ<^_8(#Uwi!Bh zs3{Tj^0?0cU*8Gm!FxV>JRW57BSd*0U=bP^h7zjdy2Oo zU%)lP;2$Wqj6gUygD`n(;!l_1G(HI!yThlQgmY1ZGgHHgT_(m2nAKGiyz3`l!jJyI za~K=zQgsD!6;)AiGdru)csnE+B}b^ntu2iu#tTohtDxKE&U^3UlmGH&t{tu;bzpvN zG;N8gcRZ7A9FT3e#w9_O;wU9(B^+qwPzS!(6pI@cCaO*Tz{_Kx4HoF72w#s1cRMh;@qv0wxy5sEqyX|ej^8x|*!8)>Z zgd%q=eC|EAcdE|u6Fc{E`SJpt!H}S^GNT3i-Y0D42Mx~l_3hpf``)h7;a7Z`V1Hoh z;2aFw=B7b%##?$`DH3ory(*alDrmjVul&iaJh8aJ+urznY@O=S?I}%F;RLGapTKNc z0V{5rrHKQHwfjcOj(JsvgAKm$^+TL))(a0qh~00*+HW}G7uZv6qUXj6B^N_$qDiGH z!8CA!>VRkZF7KVXgg=^D;$y3akY%Y+)Yo;MZfA_WGZXyekGzn*2WPqQFYn^7?|GCDeB$f8 z{qMhoN~;LV0_&M@PvTn4UN^r| zL;U>V9J*=Hn+T*NIM-ggYbQ6<8&s=(8ddPwv1dnCxp+ScL{D{s{zcoRph??r2IwU? zcBJHAHKsS4p4dimw0( z$7%hy_)dH%q?RO`_^*hIS?rg)(i!WsMs>`TQ{K6bMs6i@Jx@?S1 z@Zj8#cfbGBeDSV_&f$-zv;a`=X%-$wntp<>79g7^Rk&)?EU)Qy=`Aec>jq2K2(XSK zFvONgsB!s}7$VaZfj$;sV%j?hhk_!^#*R;y8a}^;z~D)EbqFTQR+-A)JX8q5!Hw{-`S4u zdl)q6FdTN}=;PE=d5_Z=x*PdPoj?uFc_vRS@V0Hc`S#RKZeDu=D&faoel5TLbFXD~ zc9N`lVD)wb80t`HEC&_J{a%e{V65@ks%BcJqVk}^??sUTE@m;hSBAcgc6kTXG1 z+do#%(KB=W^t=8ifA*<+Sl?Jj>xL$J>wSF4N|GaCCq!LtPm(|kD8W(jz@w)TRZb6U zmMf5s!#NjDC5yLu0j;1f4PR?caJ;)p(^a$!bWD?xHbeqH#q9*|p=oeUO*QD#SzV#K zxX9S@GGiNSjQ@Y!y?3A_M|JQ2sp_7YJ2!{jyE(6R6;}x*5JE_R0108TG0(scgAF`* z#^(9q0NB`%@Qg8-?8gIx6TyH?Pyhi!pa4p%gd|qGT5V2uZ@v?|tA2k}?74RZwn17b zSk0ZD?&?bCobL&BDr?ZyZc}b&l-kOA8U!L22n90NB$-B97o-Aur;hUUN-w#PoV{r^ zfBL2?Sv1s5DHGm(ClWzPD9%_n%KP7PIoJH~VRAh~jP0}^=y>+s{8?kF``w?xD1v|A zApvc!D@sgj&F8PVhyU@us~De|Gl$YT?~NcLenCklJZ()EOGVD=GuP8Ux&j(?)LaW> z7tO9A9+=E|>qoEU9iRL zdSZek%gB|0R)WjcDtLU+nfv2| zMPQAEnBNTH35yP#u4<%5y;0-OK64$9>^sU^UvWOY1AV0KAz{250)v{62~wt(!Kg@Z z2&+CoB~8fyB{UOKu}qZ^B1a?!nWRFJYxBF3P*WK1R`EkX}_rmCJ!=*ZBSnIA!CQnnL0h!w8|KH`UvkZj4j*yX6oOoo7^^k-)R%t1C%=3%S=M%@ z#vluXMB8Y=M8IIVi&MLD7L`+$o__+(Oq0%OblT6XsBq04KjodD{3ergb0)Ej29Y+J59cLLE-A<@ z=_!LOB%q~4C=H1w)tX(|6uZBG2aJ*!JtHKwN9{6N*Y@JT0f?kO86sm#3rujpvYK!l`97iVu;3R?K46(&Y^&b6DU zuom3R6qtcF=F*lF>^d~XyFUEyeCN(>p7F&f4?yR}Kxz(4lAN_TWr>n3+p?POkrR=% zZknZphmTD2!7pCN*KWEWWp@XfgJ3F@M^8YcWjf2R9RtuRLr?Aom0JkxTqg#N2_cYD z@T9>-JQGcM%ESfuT$0|kLNiCu<_PsXWx@!kV|N1Ka=FOM0am6r{G^EB0Aw8pWqSHuyaO#MW zPiJmi&I_KlnQ#8^L9T7)oQh(jtdL-mRDdxEqCg~WgN*>CQ7Y$vuCcdWCqdFriN(6Y zpsdm_OZ14;q&>5!z@_~Ts**!Z5tAYwVEZZU&N`{d(A=$$vO7t6+ZAU}%~Paoc_lbx zNb&!6Ts2E`-=mr-AWx;MRNh@K+!G8V~L|XbCmUb^O^CF@Lgm+s0ccG= zc>tN$qs+S6{@(`spjp{B$ZrjF(K9xIR=M~01D1{yiImnCFT6Tu5jF}zL+b(!`&Y$_ z$Q2Png6AzB`%ZDJ--uwpa1uQbH4q3sVj_m&NPo@HkNZ34&TV^m-TS`I2mkPSY*{}{ zMJq^Cv=sJG(s*G`qAi0yT*hBF zo>CeEq0|EMoH>;bC@tNLJO=T@uNec#XO57xCQLp(9WiD*2SPxltIDef z`Wc;=L1#Hi2^-9141Q*=4fiz`@#3-4Xbq{P2IhRc2;TWEyM-eBW6tZ~AgYtr^PY*p z1%c50I+yX@1MUBgb!gB&Jk|7FgvDqj)AoG_`0aOmiNF7o7jW*$%jhB}DS;wEfIXVa zwluN>2q8()oVcQg5B=$jc>TNno$a%;d@WPFw31M6M#40aR;*+Fov zHFe#hrkfmApsfK^B9RDE1Z7gnA|VmxTHs))|-K0)s6#|tjvv!jTrKOvY zrDGF6{2DQUygq}d9VE~5A_Vi2U80kOmye9Hu|9`vW#l>5;t$>x=2otQ@g2knfE3h3 z^qY-vnMeCTagjK}b%ZcamblyIF@?^31-_|~%2G^F8FYW5W3yeG9EzBzP4QcQ{slh% zw&(NAv)51sD4BqvI4%f_h?U)yCCuYWcR*VzO(lzlr$U5 z2_-F!I^jJPCU)It6823Bfk;vcn|@E&EJEgcB28UV8fl+MNg~Z2_*4p#M35#DnF!KE zkfwqp6{Mwvxe|OjYf(!DuX(}KSv}N6B2=XBhd2z+?{yTmY!Q5H_VMKE)jl7yiL+M- zdq&@QOYr6IY~>H$`$hJRO%~k6e$ESj7lj7GWI4KZ>!bYWmisw8F^v|=BS@9&C}sdk zqbHD5`xjhW&GFrZ@4xa4Kr6GuPpF24?dH0Nymrg$=D|h0vZtGY@kvCk%n|nXKnfq` z>!c74h!Ga6zoyA5DR(7;-E&QHzdBrl2#drK?1Buz-X0l!VksW02=4dzGav-FGG&3N zI_o#jx*cmVvor0>RnB+se1xT=!)#hPOv$PmUfQ`u9UnhtYmh=STupfL+3T3BXMFXc zLyU`@)x8xKcUNgO6)FdjV65`Os^8jtHOGV)<{<3>pHd2Y44FU*X(Rk11|scPBm$9` zHp#?1M*RfWywCikO3GsmiU;vn3r_ zN7_5Wu}UWc_?1@yvdII;Y{m?ng$*J^efh-G@G)%zYg^(`WJZx1AV6?Zy+h6rGCMWA$bMsHR zqg~^vl?JCR?q`LRRI{9}riMlv-Og}Yb735O!^4OtzZCvZo)&IlJHDL2?&?{`U3LTG*@_1$+tE>h}3a?_nV z_~Q?JmHkI2Q7ZQ=*XavF3UnUqNU;G~Dc7GO6PMPmqg38GbR+{SN&6P_A1S}m3?Q2w zN7N66Wn|%|TNFYHM4Iw@OO~*9dJ55QljquOwKYN$2$Sdu*6Ea(`U*xsKnp=zYjPRs zhp|MCB)5ZyovxyVN-;UfLP)_bz{q0}-4VaOfF_DXcs*9Bc$1P*Wt#0KfAQ&WlWEN> zE_J#|1;E}yNdSHU~&}^H3`0@|<)R%uq zQ)LBsE(CVmMInonj_Psu`ICO%s-OrK~8IS=`slASuHlrP@}cSqs_D?A`?BGNQSufkYyNL?B~w zjO*)j-1Xot?{*YIaM6}^oV0RhUWkFbCh362B5PR z+1O4Jp?t89BMP^rRS3aJ{lh$?B&dwHjD=Kr{0PKCz{wb5D)tlO&Y+7IL|bWcm!i*~ zSMOYMF6fBpT|OUe=tl$!!o7j$kL3yQ5ni#)Ao^`#rbFbWH0~mI8jaDZ!+Vv|v~`2&KHSpj83fsGWEv6uh=AOJ~3K~$P$$HWHBm{=*3TI-_IH*(F#UeBY4 zC%J3;A#T2FCl5cekG%&bX{!vhLTSaA){JEt56>+jblL{)ftEhu|l zosJ1N-plWFQ7xdI=L>EzE(ZLF==Uf}&)*x}3WWs|#|IQ*1+;Bx#4rNmSzy1KdscfE z=PD^kv?BH~*VR6OmTFg#_rt*d3g6h4ouV;o31l6*J8HbB+tyT)^#-dv|^ubK`WAv zTAP>x?cOKsyqOb+HNxiihl)&i=Nq2Omd&e4WgN^C62eB4?MylWmU|%)2?#q@S|rp2 z+`a7}fBWfc`Qg1g3_SNXn@C~^taAUdSKT?gKXQ#9trB^g*jX>b`KQt>}uex(>dUY~}U1AfwB+nHp4;EwhA4!12&dKZi{dhxJkeE7B9kkE};)N>(Fi|kR z>6qXGk#_p^3(U+^f@3%_lPX00iG>$Pp=d{@^VN!?o6)x((2-5R1em<%bKfD?n%{li z8T3>Hx+GCjS|(~N|p>JB_nXTg!??-K6$( zB-142nV(-j5wXVWsvyDbTq+XkGU1K~_wqOY_Zn`0Xt$5()6p23;2vo`EF!Y%2Vvvx zH9|=vk;Qe=S%f4VSx?$K{Ilo%=PbW63_xW~@}oORWH^co%yLzhn+gf14GeOHXj7eT zqLdB^C*p0|+9?XLpEVNoo(>~p9c~GkO4=^`s`K zYKmjXZXc(eGv5>kymdeYfbr`~_KeT+uV24|kA3k*blxK5=naC%p+0xqoK`ML3iFFY z1~J1~s3cvKM>ilVJ;%Q1KT&=q7=X?*vawxAp)BzWoT=aC!~wxTrH7aG_s}=#;`|L^ zcWk#O0?%G97$_TGkBX;9yEv?8zzYWLV*Bmw$8f(H`Y29vU{XzeC z*R^+n%)dX5B`B7FgtQ~(LL2RN;!N|QFMOZbMw7R`>?!n7LY7h>FafO;LZ%+>3S8`g z=y;=pxpr8EjWO`I27MS2dK9B(AQ&XwJ<6o}GMl+vWl?;;)zOPcC~l9ZcyHv(g*ox) zhFc%vy`Q+6M-GqMaNT&EVua;ZR$$=fb@ToDom;^dDxz!1==%$7=l!pi*EM;w~qJwrqJwkZYFJi*eMVPD+tK1WnnX6z9B%-{vK-4w^V3r7060+&jUizwmvoy5Vlxd1mrVbc}OAZqB`@ z3dm9j7Y^;#iDS7W(`2a>WH>FrQTeL}9G~gbcvZBOaogV)hVFSiJ5_(dzDB7~bt6c_3`hakL}S zKs+%cFz+Z5dC?uHiQ#^yCn0u4nkL2pD)G3Q#VM3M?~u4|v$+5D+FO~KZStPqeL5q9 z-KMS5g!KB5SuN1^AkrXp9RY_p1}7C=$^{oZ<<+8S7(4l!j>pkWjtIEU4yqk~fnykc z-W)^K?pA?D(n`x5X|(wA)j#GF|N4CEdb7_5}!IowUSITp+P=rx+zjXiJ0)!UB#ZJpQ>(|G#hEV?lsu zvBkztt+junTfsg|*ypB;hy@ds{*9ZqGCnoMhu(ZS%SQ)Iu0Lx`mBLe0ko{7a(`xDkqTI4N~!`=E;6=4Nh*{UZy@RFUEs%GY&mWjfND2r zk3B+SqtkReTG~l8=&x3J`A|OtN5>)0$#ZSszv$3p7lH!1WAPLbIGsq4?)~Fl?!WqP@Z)2PeJ+ zxl-J8?+#x3f4`}OGfmmHZ-UQ!`G@?=)wdzB=SR*P<1ioIAZsJP zw6l5GmkFEiU>?w1V6Ff}Wq|VHb-xsSf1z@GG61bG(Z(vrOyZPoPMy&v zi8*u%0|)sn+?Oeb>us*S{!TvdiEEf@)d6jGdd4VHX**U9#ycy27{i5(tY!^_ARr&H z+EHZRQc6QB5Hgwf+b^pemkc1AJ&I^eBBV6Co*a&{j9Xw9(sM@^aYnO2(li-;wKDPO z$|{rEOPZo2jY(9*Ulu4D1KpBHc*gl)91?L%AokP8Z;Tgg5Te?n8Bf#@B$_S~oQofK zQq!mE^U|#|47fnM3#t;ulumUsRm1$Dtg5 z3_vULse`0R5(ZnCHDM!A0l^9VgFL&EP&rzIEJrKn5DJpnOJ6VE<1MsAOrnUWy};In z8C?yke-I zq47y%mXRwPX(a@4AcyQUxPX&yp7@~y00<&gz&z&>vNK!}o-2m^7K^v6N6fTvw1gVIet`qf+5`tTv% z`O1qqb^RieQVNN-rxeHc$6g2-jjzTiT8_cE+9S1~z|3MC;0MC7YqMcX3zW^vw{N<} zzkl~0KJX9Uq1|rU_0?&QFG9ltISA)CKzCU8d@rR#h_wHErag*zlR;KyUU61m=KlBy$j!lxeW8xkC3b$QX zdgc^{!Y1gn#2ve9ojs{@+)eMSTGBCJvUdrk;gyf8zQ0g8{un@gnnc*72?*~2aA%@D zd2pBu^EPR{<@J8Rs&|F}T{a*W{~rt0qUN|j(Zw(G!g6gT-p=F_I65fqJP>wW#g7+Z zeAqNYbe~5o+U-qZkfGW7B9C4f9ERhO4_gg3-MX1X$ z2AG+h;BBA0n(J?>0}T0>_hsi#lvaWpxoA2DcjoY^$;P;+?4lllV3(J=bk?4#>YMW8a zwpA1ALx&iCH^5Fs@cq}G;JmE|vv#zWG?Iiz4%hhSuiwJwufC0XyBVDqVaHF$b7c{i zkJyZut2fkIhUt!#w+$~uXZp2Bky*+TrA6yWx(DXX!xL4GtE8Z+Swq&w!eH8yafJ|w zG~qXwEaCK8gS6SQ)>J3u1CtOUNc{zkTTqbT{!-vKL6@_CO5t=lbMH)9a$}=OQ@fpI zMdDg$H_Y_<7<&9FJ7F%o(~X&qznfEuTC&2y z27KxId-%h@{vtoRcRQ_iJ7UtV_0F9r341xTSM8ij(Y4Ktt@fX$Dp>>~ohZV+veZj? z>88gexaYCTah(-7pFRY+@xg}ZGcy@y3=Q$Z6nf^GsN6__c(X?kv`#jf--MSOwl>cw z7H&gqTq_coxvqs~wvupTv*j5;$nRfZDf8>@xaJm_U1#%D0%r$_b#{MGRFxxoBhdn3 zOA-6r7cSC{k+55T-I;=}JKEJR9i$B?!K)#@@1i(<9pfM*)EYHzylXpOzV2S88g2TA z`|0cNMcRyCPUR@3=&~JlF&=i4mtz77iP8z}q|AhteCLjB{OR9*g)d)sJGDl`9Qfj! z66Q4#k|jfZoV95^dk-Hi!1%%+-bUgWT^y>d{aEXGeBxo3Wh%>0LOxExJ&#q6+pNG^ z<6@yXa8b+Y!`W@7*d>Z*2nf4fG!m|OEx{65M?0eHMJ6Hq z4JK8!DE#DDjEDSQ2ML7Zm_=w|k!Ye;;3RZsOn)H=hlo*F^dtPZ#XAFwDu|a%UU)kD z0l_Hd`(*~hBN5k6KY)(d4Gs@@r~?vfC#*F>D~{Br_}Ev!%Ll)B124E}GZ&q`nUmMA zVZ+J+s%3$+Nk$W`y;|X2d|t~CXqnO$l34|J-1{j1_?4UZ-jBDTlN^C{Bs!an7S^pR zsH7!c_>41n!%LpbR9@%u-+kDsGAbGu?Z?pxBpC^X&M7N|PZwZ8KL7sXq#QR4K(%TJ z-S#?~GbBl&xO8NYwXF=%G^h9)=x-L5gQtbSF+HECI(2EMI|k!hP#YWtxcKfE@&O1T zNxY%jEy^OH6~kynVS$({^U*+2AH~%;xh(ab+P{JcK`VUO6=>TCA>mge7nuIfJA0|c7$g=Q!=wvR6mQXqT? zy6#}KIoa${N&`#gjqMX%jvodvHy%M&XW@oCE%DS+Lf3S|NEmzcbRfJao*oCwi0;4> ze6XfFOLrvfIw#%S2*Lz*BvH_c5Ry~`A`C00D7kF|ErLCU&VgHW^9`3l|EI_h&>qfs z>5FwyMJj+%A;JlBVWUitZjPvx4)zw`A1krvEocIxbgGh%iI31o0ZrI9DIMn5T{T_H zDG9}cyZ7_Z?)_*>P+4w{(yqvao=S4WyO`T@Gj`S`Ws8AKELW;L4s7&rdbwfj&MzK4CNx9Zu#E zV2zqZc$rTfAnhGNB*zWO0mlgg(0Lo`lPC=QH&#|N0hbQ;vnITF^2)|n3@EOg`hRp;+bicJ1V{GXwK5^Fs4fEILRpH zU$w~Q#*O>$I4ZxKECc_+lGkUD-jxz92q`(gS|y!rgV+5XkpoH>_T3dFe-SFj#jVL> z3S|-MaLmJh)kc~mQU)US_lpSn2RL77mG5Klrx&~dk5P0)jq^MTxc&qtSh&Z31gRf> zH=pZPE#pDV_=94hS{w!2k7%OZfT+U&k}gJAp0~iBkS>&s?|Zt_YrT-g>e; z)G53gW+8-@Xe4Q_Ddmd(#vHF&Jd74eQML0HUH5nBjha5RaBlx6up9>nK%?iz&^iyC z*CO04J$8ce~;Q`C7Rox9(xzY z$ESJfIcs>;OE2Q)+qdz_&s@v?gVRWrk=y&x+J1JnP5Wkf<0Sz`Yry;2J?sz2!Z*?9 z6%5lC)D_1ljd?Q>f<%Zyf)**=XTpUiujU=UcLk@Oyn=GpCe3q{kk-y*+OD*w*=X|F zf4RwGlwd}7+K^%T0wFYqNl8@;l;DJBgG&a7xMA`r?T%Og>6l`Kcyv}bfo?s6953Yw zcLS<+6Fsxv5FdD*UPyTH@O z;QRrx#nY=H(Q{drao=6Lxcq{(oPWV7y!i6-ShsEk)6;VtIW$Rvhz8tAIim3qmS7^) zz}2rcVcT(xhU`d1!{TBJin|oeJB{JiooZ|Y2c@~+94IPTvv`DeyzVmo=yjK~ZfOq{ zr6Rs*6+x}ZwI)aKgWGrTp)cJGDvQ>Iv*nl;nRhFeE?dv(wL0ZIhi1m;&;UQE*U6Rg z?nc*cDWVN(u5WqU9Nzge*1<2U9CvX5d2JHenz54K#9#{`O;VmWw1|<(S%fwK(t&z6 zfleH{t3}8kF#^vdbm6YJ%vT$%#EBNTlcepQGPmU!N1Lr6eSJ;3Kvacy#Mbx)8gZ=P zomfu~KL-{U|K>g~Id>zkd(Cq=bIUp&+;)I^t!^Q)2$6T4Z4`o;T9Z4s?%~o?monN{ zW%K$)JoD1iIcv)awA!$5{}@4r3kqk~*?Ofrb+?nDT50Nt+e2g>P?;(7Pf>C+9T=aq z#y!*DL`X`d3NOFxJl_95U(7{kt)(Z$rUZB0)Ba^zo9#vujRt@Ev2U^e@Hn{&Dp{B$ zr%svcn>Vgv&EjEt4oo7*=}~Ru&>;8C%o3wLuL^Zeb>2jF4?S)PKRU~C#{ks$F0^Xl zgJ~=_-_+C3Wt9q**}BpF9YNy3G7uJ2fY?Rde<3NnkgDw^jOQ2~k$}D$P1aN9cAayi z?ihgkT}S$atw#&LSVIl-34I~S?;6{w??)9yQZ)(`0`A{_h|ME?Jo{N^^NgoIiFz|* z`;Pr)lwv84Atq^$22;S;OpPDizL#^?b}>5GLl>}mX)l*tcq*4&dL})UGKY`OQERlV znh}CyI>$E>@_-FAiu>n(i%~|8Y!~q5i$+;LJxe*)f4n7lCT3j`#+ z6c2AJM&AKZh9cJ^qwAYKyM6VFJMP`h;#70t1sl2el5^O&aTPzl?IBbvGwjU?VDGYY zAA%#Zvs{1sI43MhSh2K+RJEvz7K?hjxZvzfJnz!8Iscr^%+9qqJT_(bWoXMRMf6$h z&ts`T1*4+xacHMNAf+XK1Zi60oXxBGo43A<*T3Qt){OShqjRJ+DvFq?3OAaD$tju8 z1pe&rzRsij$L#(Sr(23*#;98ye5d173G#}xy}>(hwFBrZbE9Gh&U=rc!qSU#PTYHf`+PCbYuzpJPqxfev& z6v0@`B;1u49TcITUz8T2eCG4-&i^SvFu&}T;pHcd#(0tdY`N+T_8{zuwq->;T z2Ag0}TIE`C%l&&8Y&SUT#AU4Cw2VtHJ)46EXW6&^aIi=hhsC#ct}(~g?l{1bavvL3 zET$qAk`{?-&{u+WOMAHdk~4VD#ZO|(X&afHX)r!9Yh7U$$lJEWwhYnvU3OgWU;@(C zVRZb2a;e0{XP(G=-ug1$_?wq-;;I39MVmxB%Ycq%(=l~N{^m1B@S_JG;e-EtD=N<- z{oNWOoo%5oF3`?0@~q86%{p6Ftz%?jiUiG2lC!I8n8WpHYogIs4bUW3B`QQm%F+{( z1mw740NK<*L|(U6V(k}qlB7IyxQ~&UHd5Pd-4R`N2HC~3_c7#)|8Mc$z!(Any3p51 z_jc82jp{0Kuhi_Fty`mHRO@3L*X8RzhD2OYIyx8`AslZ5w2(+TLnR&X8)N0Z^}$1^ z=`qgVyp%=5-JJ8(Q|Rs)=8iibMn(s$`0)|Jo1*eIH{8FQvGE!wZCFKrIYnrRkeSiD zb(@hM$ti1x`HknC%N3WL&bgx9O~1;ttG*nYVp30-@vv# z2d%CijH-Sh{O+)#8fM}l6!i9SdPP&7Ym>}1Sas4mzH`KQv^)xMb^wPe9iwT@k@SuJ z((?Tus~kTJKr7l~k9c@&FCv7Xl9qY;@Cd`xHKcZCL4t4<(Qdf-S>|i~$0`o?7p{oN z$ml*rm^|#eRaeUWsbJSk-6r$Z#RvTJuC|{K0=wVih`eLoUqC$4FVGO}XiyUfa+P!E z_9IO1J;=EykFvO@i&M`!m6J|6g z@cSK1_7A@r?D%NhX)qyhObNm55A5gveC`I6Rz8Z)d7upZcZ)4VOcs%#V8?8Y(-$vc z@#Gw6O{FzUYiNXrXQm4C6g?6ZjVO2jmyY)S&y-FE&?z+NKjFg1r6H=_q_yu}WHNuh zdQVq3Z(qHNHG2;ta<>E2PGVs6UI=>Qq5rV(JzQRZDVTe7$M>LCF#m6DWM$T0;R{vC z_4|*KX@#rmI{!gK430;lHs#(EV;y7_;3qk%G%kTF$$F z|6&%cUqh?f!$U_0c=x;hA6xIfkERW_kvhaO=8>)?g&-;Q@;lFa3a|Z*vsf`GNVI}P zgOnaUNXN28iWUiqgiMymWQp0i24fS`OwP8bHCr^>8M(?$-9pk;O6ln;G1yyW(eMCW zr39HZNChM)WPxovsU2k{3WIE5w}VS=eF(u=y~*#s{R{l?Cy#~@ULhhzfInVb*!s<; zvamB#3W*ewb5@+d8)s+eo0>)o&F;->`HP*8GTn?%vMSE4iw+c}9xBUEj$p?xzf3=T zQ{np)h5%H%fto#HxvNb%g$Y-cX~I+c`x%(2`O{)d2|BLN)!sqnR&Exgc<1oOdVY{Q zu@xXjBm`-Ul_{y@r)9~*({;0*#xp4U{A1`NK5W;2U-+JIJ-DDc4TM4Muy58ny4R^2 z3Ak`z0XxTLx#iA7T(GK((Y{`W`dXa-jEiXHT|D@}c7)A??_F4eaE!W!T(#Ny(?|H$ zk9M$R@iLZ;4pUA9LTNuK=2mw|ibAN2M72osIz36o;+_(#hO2BC?P1f>J~l7yXVa2? zPFT{%+Qq%B7_KtXlTwu#C0e9HSyjcoLPy<>$H0hN9kl{YFa`=qOXPh1+I#ujb$5nL zKpl%nT4tKaghVF1;gy&2;wvuT+dsI^8=RdBbMNdFTQ+TE^x!zD)|6F~(#qxBd+2Bs zt{p9jc>Yv|>>hkvU4qAr3ZUB!)ZCcSfg)YoEO^QJr82|Kw%Nj|g@^oxJ5!MOe%T38 zAm8GzVbf5|9_G_uk-&u#liz>S zm8@U8oUeWDM@-in1w*VvQ|%hyq&%bCYNH!%77bLmU6!de=H^AFy7}<_QCTLb_8)8V zf8pggV*p3ZK@k=Ocu23|+}X^=ET^8dij8MImHX}i>oXM0-^R@JOw=~VrLauazE|Zu zdf*8E^6k5MWZwjXBZG_#3?h}Z5ZRKa25r?4H*uaZSb{Ja;5wLwo3kRex9#afhC$l< zWuXlcQL@CGgzw+=D1Z3Z-(aRb8zC^)CXJBNdm7GIzk<(v^sQWZ`2}<*CHi`M*?-^= zx81Y7IQBxYv(@6PCCeC`m?9OBPS4S`b_I7GKH}4w&7a#R#u#|~Fo0GARU0p)R}N5H zv$opJ+B~OZGrRh@eIW|))QLj(q}z!ZN?;7JPnm^oAwW9^^8}$?1`!x>y|=5vJu|bG z0ocimjd!kILcKy3Mg2k^fX)OUVqRb3Z=&#QLHhem)4`SLJ8x;aoi+LHwn=LHra5Qh zAibrWwM#YUU-Dx1ADU$MqkF6o7CXicO&EROc@89s9lQ7Q`RniG)~%1ypu+H?0m{{G zlFVj7cH=38W$1RC3g>Qh^v}+F;PYW}g=GTfpNElnNly8*fmq^%PVy|3q#O)Dw6wI@ncx>Nq~-)=H$0AYTFYSTM1!sbSe zN@fl}86K|kpeixZn6vydictwN3ebp3FS1Q<(vYc!OgRPLp#tBkU-@zN5k zF{lZ9SZ4=QaNo56EyFeKb{odDZ&8JiWI|F;s~l?O+`0V#U%dKG-uB)v^Zh#>B2(=G zYI0+h2tg_&-CYLqzwLj#h{c0_CQX@#bU8!A6~1-dk2x|q=f~2Oqblc|Wvl5QpES&5 zVw(O9>$&C70lPsfRMk13S}C(X;BhF&4+F@WMg{QJYweLHz+|R)%0QXkrjfedSSNxW zA0WN)kt;t<{R- z?xdHLK8U7pmZ#3SXWMT6{Ra>5*=ug&@Yoa+Ek!%mkd{f35_#M14wM2d67ba|r1bnlYYkZg**%O%Noa&&$o_HZ617K9ITYM73C=i(O69Op` z5}{bJXepoi?`Lx6nH$MUC0gZfc29Nj@qf9IuYB_+^1O+%$9NaBH)%R;DGs_j#z`vC zx?`??wF@1d`|i%KHQK6MAAgxT_2&oXA}b;f6FOw}?D zPSn_Yc#5s}ZsX=V9;Q}nflW28bDKXP8f%}U-)|&>G%0b#)3)%gKY1nVR*sl+3LUp)%95l!RnFayfvw??9dT}Ry3sM?lU&={=4o6k=a~)4E2GPsJ;;Id=R{V%F?x&fas2B6waS_d9LkVkRXL7x^vu((p;PnHg|WW0fFs{k8a zqqQM+bFz~Yb9e?|tn0xT=!9OUDxjnP25b-@e=MD)Fc$H927CDHLkG#xrp+g$mwKj-%Q9|gDPz}}yc^3E-%ar%8bC}~9-sGYEak7&u(9S?;>CVr?) zn^mqLsZd#Y8u6(}zl?I+!~uvTC2!QwS<}Z{cP`d?u1Kq8HuhF1HFN9F^|%#nhpxMAl}O#+s$HwphR<|TH=RubDj}JJuCDxPPnnaC>(oy{4*ll zd5qiVxwASJ@G%XEmQbbl7?{Oh&zoF#&k@dCRbkbNWk``wl{qIYALO!UoKC6K#eLh3 zpz@{-L$=k$w4y15`^u;v0u#5VEQ~kNcsZ?h#%#0A_-vB{lXL7kGQ;k%S@s^CV{E3$ zTr;DU8A+-z$9ManTM;ooDS?XGN zl7B(vxUm6%VFGGy+*6`+8M&g-Y@ch=H{8qG?lMU|E9~&n5yKb4LSH+$E*Pd@AdBE! zc+yUY7h};vjdXNyi`rr;jJw1Hvv)7Z#jt7w z+pE2d%}!a~Wal7vwEcBo=^%$7#zya8WITtoW7lQr6<#4Q|DR2DkXYp5m_DWVP86-hl zLto7Nb@U#hg<@Ef5Q4$QgFJZu!))Juc;582vW&H>R3u zG}A6YXtTIXjI|1+8;KBSBlI%g6P2?x#Z&KyF36%_^fD!hvJbmT&HIZAd+gJnub&of zEf$Y#gVgIJ^dd?K1VIok9rxN3ge(-k;?nbY#d9uT<>D$My}gvGf>h@u%cVkZ{N>7_wVNZNA`2*@HmrGH5x6G@TH}5 zO3q7R+o)u5KCEsB+H5ICo6TTa2&zfKi5ph2X7zHGtXjd!6^r=Fm%qo|4?bu|$?geo zb1MSz_xJSh=Wl%puYA!(bd^d3Vc?*Lo5YR@AZix^6v%eQ3$A<$*L?rp@O(6JH}2oZ zlh&=H`p7P%mPlD*-P|;*hDO;vdC0C!9VM_fj3v)ARAcsWJv;CTPYNo_Rg%6X@>3KQZMu0nIykqLIsHTdn-qnuJnDNoFi7@9|DjP*BC_X~4lAy=FTLlHr0LX@0a z5B?+}@F%_s8Wvnyc7_m|nYlUk>^scOw>-cDJCAVi@C4&?nN2}%+NiW)F8$Sn(M5x- zTr|YFr=7^A4Qm)09YR*hB>h!(?mWm<*WAe64?bl2r$E>PK~UPn@(YQOg4N4L`RHH1 ziVH6|jgr~FSkyH-B|s_40etkW%tk^Jwi~$Y!d6G-Z-SgZ;eb`4{l?3r^wW zjVnp>oRl`Hv~l|e-nfcz%6iyfYX?``*nWG9#<=ftC&jgm9ZX6zni(^-22+iUxt5}p zYqCt!RW8v}Ez@1?qSRHPoK|RNIjt z1RT)`vtZ_1&;?rM+<$b6>E1rpE*_>lGZ$%rwmNfbhb;E;yzqBXh&!vf4J(eWxlaj9 zb(Q&EqmEW~JCN1^GT1hF17dUy&thDA+;5`rxuALw>!ZR~xPWTlZVq*avkaYa&OHnD zW|JS?yPeN{;|{iNeTcbSl8JO> z0aUw5HnA67pMZ$4gVOE3+bk_2M4LG&CV=7I9)5523O4PZAg#5c)gOpn*(gGR@F&I= zUuDU{@*YDlfmEE~ObSh^HG7A9_+R4_)*u5lM7i=xH!Eb}*iJgONF{ zWWKZrW!^N}XDM74Ld?70jb+iu=#Im-%mhhUR#?8cpJ$wRA}5}>oOLTl8S3q(zbm1) zTB4E)O4h1xPbKl=iS44&3Z)gTwxZE&G1q7_*KBiWy3XE1Q|#EjkDG6Qn4SA(Xy8~*syeDRxB4d@u_GnOyrjnz^5ckQwH5;S>V%JnB~;InsaH7b!~0+FyPi4v`L z(`>d93F*k%U)WxOP8Hw@K>%9iWHVzhz0b%E=~PRz2$d@OtIYz6^i9lSatSey&d&1T zNB8oY)hl??HJJ?P1YCHzNZ*^!9d9tyW0W1f`+bY}078IXXVg_|zOnre>IH zw5ZjZ)S4~wT%&|J^u>qob}&jQg+B!E_YtS%k>Q#&(cT9-uV3;TOJZ@bP5;S{uLr#BPLY_ze;r zw;*J!YKm|@g2i46SS#vmt;Q!Gew5!{x0;JYLV9#A0?FELD=m5fiZazmT1^N1cMTE6 zH6k>mLeRGNX{Us`AEPSVBJJoYE>LDcUGOmsd!5iRE=A%G^(>@ncowB~v2Ct?LWs6| zB6lYYD--J4Xt$Y|t+AVAR&wq3hwW?a94QS#BUMHt=>aukR9Xe7IokX0 zgX$3FMeBZHDa9YRl%%RzBOBWZ6FWdPe7-beSJHN^6k)e15x0)1Glt3*ZnyI`|Fm;A zH}oXrLscC7cEly^l6G_I&40ov3q^+H>@r;#A$y8D>a>wyMQ_VVqWn%y=ArK05reSWJ_MWY@#`ioXI{A6aFWC#A&DnpG z`;gQ7Ob&of_m`tV>2%?k0R%W5kgIdgxscz8AOz$(=O@!O`j-x}HUZhl1CnqY+DSzH z|F?JMF_sluq2VAg;@C8t-F9LFhAbzJ<2VW!+mIbukxeZlh>Iu=#o3qc>Am|c_g3YP zTJL);jm*eF0L=w@dGFp^%c(l&{LZOUryTP}n%HVACpcszaLg_`)1r-9#^>@b?M~O6 zPv;);W@3aKgy<6zF*E!A_@DA~q3_XT3C@CGafq#-DaR04Ve2(pkgMLYCrnna4=kk%oyfO9N**ylC2lkAo$(PT-0hpt_IdPL$}M;Z-(KQ=zx#0(Qu zM#ql_ZP^d~%d80Ql%@XIg7`!D8<(rKGLuVL?M{p~j8G6!$|YZSZ}W92cBs@)?UIK^ z_nlyI@0jDmTt7^^+=eA-4+71y3Qs?F2haWFqwE;2lA6HYkTldQdx>6KLAP6>;~ow4 z+9Ns$Qa65nGL#0-|0@yfpWDfJbI7(Y9(RpW1+U~QFg=VGE{YP8lZ)IjJYG6pJSart zud1gNR+MH$!w0GHvtuKSIXtVN$h#Et-=uZwII6wQTe-fs2taFedlk8K4z+d`I_u;r zFur3lqtSZT_uVC&BJ0zJUL)xMrGcJuf+qRe@&?V(L3Sqs*^UA(1U|b^j0SXs283|Z zQTTcV_&j&*TFU2@Vzt#WAliiuYkVD{H*P}q_qRXJA@n1@UxJF!gxN~l_iO$w>J#({ ziKtp{HkCfbK*IgeuDcdl*{8oP0_gh`6hR1?Hf6b;h8pd23YwVyjAwuJem?fTduUb@ zlVQlO?+b4vczmKk=bK1(EO$>owrpigyFNNb<0}P?u_j-8^#m_{p*4 zCGt%ZM*N*(2mV?%1L>lR+*m{|pGK};qR3kmHpjfy4o2EZiCZtW8dDgV=#Fg`B5c7i zJYLqMy;qp*{oiY?IKI|m+f;*XIV43~fZLD~$@d5)2nUm08%uLS)2U|sZ=qRiwQWY6 zGNOs!3n$Dtgi}T&y&59l-_HlwXZ) zi?|6i_T)|tmD>fxTtSv1sW`GcaRKotrI+IIXGF^B}S6x~`>>TAUF3d+` z6exujBqE{HZgX2&HQ#I4N5+GL160wxp63);2V&8tSiOK!iljEYh2Z*LngCj(+Utnr zGsuNkDOOI??QYPfFrH#hCheD!>?Z^Uf_qKo4rK5XN8{bXLfL~RlRicXA0pe)Rb}nS zqUiFkPA_nLqKd9rL{WlVrY-K!Nk6>83Mq#Sqw-xfwJeRcC&%yWa+@rpNt<;xZoe~> z9zZz&02sVUL_t)E93#i3L!U1oP}GMfhwx*!(t#BYl8_m=muA{~*n9isCoW~7;AmB% zu}3MYe9tk4XMWd4g|@2*LI}V8-obju{0~rjW5Bk9T%nfF(K`7h zv($ct>#r;Tblyg+UnX664SD%>inUAR-42B+Yz#ks@;d?wds0k_CN-lUX(W>p%yiz4 zh6utUY@1a647~8HGv{=))R-mg;%M0NpFL3O5If+y#RWb- zJIU0kWu#IR(r67Ah2>YABKRmpXcx|u(HfyOwKOenRq`k@hMysLIruK3hXr0^^xF2N zFF&r|`N!h={r3@LdsEK!$xnk2n^A_*Wr0KA zEmNM`kR^mkRFWiu>$gqt{Il=n`nee@ZjijP=qbnvC*L?*wh#t(FV7m4TR6|xQEH%f%0vX*nBEPw3@&! zR%coGAmr&hJAI_<5$DJ;cQgX-i4j$Qi9q-va$753y9By~nwY18_@&==8 zn@nux%yr?&P>sK_W0sjlgY#WMtFVVtI`|h@KJu!%N$(tkTMe9h-f8MsTME`XUCxMv z!&5`lR@yyhz*|Ojnwd~0A}k9EtI1WG@N%=piOWkpra_O!D`_+<6g2B1+>P%5zJF4$<@?h%5ORVpGN0 z{7E8763N{+T*EK_{U^BYnklL}s@wM8(ah1^{r2XBr&H*o5CR4Udq7T)hWAL|%9juV zsRaXrRet+3f5ygU+m{!{8rF4}yLN6PonHy(S7=Q(nDecH5iYE*L`^ZYO|>G)>YQqA z@@VDC>B2+-JBoyd>UE}Tl9x9-`Q{nqxp~C$8oJd%s2tfLOP* zsV=OrS83j{V+S)c)0|jsk>?$I+HM#GrxjwsV8{~)8(&^)QJ!!{tH8yL7Tv}W2O4#< zwU#ZzWUP~==bcE>K4?TZA*D2VDtLW-h;Lk4wDsZ{W$QqlerV`Fm!X0AUTcd;1wy)1 z-;v`^O4pi_AQ0A=jz9O;S#DZD7*;5VfF|5S4)$xUZN?pZdt5(Ca*iNGzSHG>4FL9( z#y0d{CY#J2ci;>}fTUI}@ zLb)YkTIEr#rJTJq&zFv$D9=?p#tR!A4$aIky|8RVyEY0%EOr>UZkjKgo5u@i;YNK_-0yU_h;-Hy6;|7P%@)P9iA;DS|y? zlRSRy0iGJ2;x4V2IeCi8n`cSa)<_B!G=kTr0Vz0Sh5*&ckqejE*Dbhh*DM=Dqnut` z2+~*d4?-+asf7?E!fd)pOaebro9a6ig4FH$+d})t z4!+PX5rjsMVCZeTceh=EsmuND|36|$f6tIjl1M?8Bs_87P5j))9$|W9kQ7M}X!x{b?`x{ToxGL)=)+ z5NjP1oNULlv2BtsEU&Pc=cVF>hC)M?j7gQVNBq^!4v+=x*D3F83~;HFb5fOk34H<} zO_I`v421Eq)UzsgZrja|9Jro$4GuAP;R21b=cq2Pl61Rvd#v!bw0C4^BaOVyu(p_p zj{M5oEgJL7+%n!|X2&jGSzaYCx@crX{C*hO>!pqmuKnK|4W6KG1I){-o9v!$utRBR z=6$G;-c|-VYsvR9aQfYIluD8JpW+d zG~UMX11}O*2#vHN(tE9S@Z1Zn zk%?riKEMYadOPpB?`E!>n`N*fNs2Z?X~dm3@bnXc%PVV~Sy)p6v^pL6Lh?vhrk@MD0OonW>8~tBvO*4DSzkv z_wbST-OWfPL2Buwu5UBwQpz}AhX-gXxH6pGhn2_Lj-(K#56kmV+g|d0*oJ{!ii-xc zTwm$3f?h+Tn(_X}?%}y#`rT50oq{^Iy2i=M9Q*YGiBMi)iurX8?w;i{GDQ{L5+c<~ zBWo$IZz_rulC2j6-qO|An|i&D6oP|0=Xi8tn(eI?)st_Mv$%+y zh>okUuoau-CtflWZUF7qQV7;}&G1>3@&|98prboJ8H8h?fH2A)Z4WFR98>~?t5f*z zg)lC*@%jLt+OwUpS1*z4!Y06Sf-9gJflZmMK`TXp;>APT_!nP2fp(^n!cQ7!mXu6M zzohAM@neICqBc9Ufzia7Oqd;O@DqRgA?|qFey$lGAk{fiV(PV(nYkWVu#keTPB?R6 zo!8DS@MnMV8o&3#mswn0BQMN*g;uyNwHg&8Yusdyg+tjd5U%n{P^>k}LQs^qdE(Gf zk|b2JjGuY>0e=X zfB%1P9dUD9nU?Na^OrBb#$AtnifWek3D*R{-P^C>Bb9>m%!)Aslv%QDUAv86T+cav z_RX-uW)-YRYYep3_(WrfJ)O6{6Y#z3VoxA4v=JE=gc^e<|?;*Dx z1%I%lN8P>=&XMMB24|J|ZnK-SR8KfKHA1?ui4ayxI3*)QPzbg&=5@`*i9!DSqRsi{ z*R?&^B%ZX+FH(ZYQF{XX7A8l3nsV@(89w>U+$bwsjL>&?^_l>E0^lD{&N6x8O|tpRq(Yf2 zJlL&_7O%u%?<%I0h1b!%bl@o1=<)Zx(%Uk$zywLKvB}Q$Rc<~o$N56Au)bD8*|DAE zY&+-J^2LD2<-8urh7o4E&d7~~K4ZYSj z0yf?xD?D?!v*{BQsa6aolARNy96qpvCyyQB;iEUOZ*GS5)eX)ptdq(zbNhBj8Zcfl zFfv`+;1}~*M*WPV2Au$O=RcUJNEoWu`6nNJlqVlJ%z)5Hk>E~w_BMZPrg)Sj!n9MA zg|HiYD_q^!;O0pzgu89z;4mTyD;q&@_e|IxW)D{sRVD;!n$qg#{P#cpax@=;VrZ*^ zTegodcD{|2CP>cZT+|KC|5`1`RX0>DY#Fk`LaWXF{}-nRT~Po$)iK&cTYE`cXPpC= zv3BrIpdR5FE$Vni_vG}n3#GY3BElVEClaWlps~2b%~O-K(i$h%H&BsnCPji18otbE z@ZDfbDS2{Yn#V>5xvnC)1mTPzN*!{P2?4FyrY5xvXu6X0@BAKv}g|Ps$ znomec%;51#frcJhm?bUg8O-eaNTg)AUgw|wAbQ6$5F;(nOQj7ngfhlmtVS3d@}~57uj>>Pqd|`nsY3cwe=S*213Kru+Kc=l&25 zcE-|D#AAR9?uhUCfDwpJ!ci7?A# zZ*Pq75DP$Hn%<-+U{|R#<(ePlMU;gPQdHBwKRHZYyjKp=0Pct{l4DS_=^~LlIP=vI+ z;=~6j*;Av!R5a~Y-8OQtVY2MFmt5mr`K1m;9o$ktD4HWxPMy5S%demD=84}Vq~T&a z=iXgo49>6FH%$BGT8EMAcJkTNXKh?cFfBU;RO$ol(*=|Itz`?oq5ycJGUU&D$M&tn z^wxXtS=MQZc!J>sgOdPZiN--lKaie)_WNi7H4z}SAy}d%)l~6ncb%`U*+?swZq~M? zY*J{ui3H~AL;U#UBtw^15qTHU&Y2aG?bDOIxU^ytPujP>wzkHdd#0%^ZXzQy!8z?b z))3Gc$arC+gK|zlz&il}NjP-Vh3J}7c+KXPTlekc?|twgKKbDXdE52dX;g&K_%T_m za4iM6gg<3eC8C=VqkBQ%(TSyy`yfm*?*z!SW@5O`E&FCUcJxLbdFLS}M(QlD zBU{bibF^}k&rJgNh?VrNToIQq5YjNeP=@MK31p+r7e^C*_1rS5D1!GNaL0kgLcnQ) zX0^u0W@eeXw1_MUqiJ-4+U&4BmCTNh@#U3O@4(#53(g9`+opy|7F(V!+G{r(R3t%F zD!kC{kQX^FG& zYk~G!)QyL5r_uWHiOdDzo()T!S{PHuWIk3@B}_Hy+;(s;kG}H|_uYPgY9={*eu+-E z@MG*XuMA8eoT=bORT?2WGuq_&Pd>>#hj&vIAVh+6bHV8o-{xr2c`fSZV4#8PgP&2J zQ3DMfZJl2yR#a#pZzBgsB40o>r#<8#x}pY_7{l@el16iYfAi}vklXOvQfRt>R<+KZ z;~6X&Mwe)lZ*SDs}!%w){c zjE`>H$$^zsl6KbyI0=NZhkmp=?5rn@H=BHAb;Bes5pZdv#p>V?hlgv(<(6>*x`DIY zDW#yOB>c~AmsZ{_IlOQKrZMO0xt+}dc214)JI{ZVI}UDVC=n#WElD{BwWflnjw2el zlvX9jQgq&5{DRxF;BIPvT5k-%de#6}pa~ zzdbF-+NHvdgcQ!DV6~_;W=kR@HC?c0yuxEYa1Fol+*AD4FMNm(J#my~W0(OcsV0d% zoyX*FaOTeV;1K`rAO0|R9o$9c_}2@bxNUKlwfV6*^}|bn&fc8yQ!Xk%M-PHg8j&Ck zkkrsZtuCSqcSx-uY%?!;4$75Ul-x6+0Z5hNT}N+5h}5Sv3vE*rMThePk|HzXR3K2& ztP<^7FSzrX+0y7M4Ing+L_HMj7SIA1`jh z0QkSwPoV=;cBo!hq2lOUk(y?faNF(~KJme${J}5%D9?WM5vH0W)RK%WG0r}LV0^H_ zuYc+T962ycrj#wq(aQ~Gj0c@Gb+=*$3l2UJy%*-56KsM0B}S*`abK)3zTD-dUZV89 z7t=X3HLk}grG!H_?q~1Lu^{bie>6~_`IB>($##q*2;~Vh`i%u{ZQ9i%f;s6zl)upa z-Uxs)rLSIBudCPh)%E}ET!5?B)$8i@|KD|009?JUUf;*pRRM7Ix_W&dU;hVx$blt@ SG8(i10000Q!Uh!zIfM$C7~+6TRLCHRw73w73@Qv!p~8l>w1tbwzpJ&debR-@=-Zi{ ze`nsC_hwhX0_)-;-14&oe8HYf7Rfhc0UTu6|I}?JmxTv?>{I0Z{{E!lm0g^jow0QU z;r<|m(<7|T5HAhhw@Hr-h(+9I0s)9<6hhY_Qb~wR1|pw_Fbs%N38GqsI6Z}EHX+)i z*Mk@gAS?^w&W57sh{Y0ETT5YUD~;{#4BoxVV`s-eCR0W}UxQ)PQ7*SptMyQ?572C0 zqusWlD+&^^7*cC%NN;T+`}Qpg$s~%qyC~C-8vUr#j~4yt(vK_pF>Ew&cX5HJ9>wd# zYs6D==xH5^Yyzo53h81R*>Vp+5#?4HwQdddt2$cOEp+d?$k8{0zLg6ns1+M% zyuU#Eq>o->h`h0bgVG)jt2w+sJ-|ux5UpMf-9a5!RtwK|itz81@OiF^0OvpF`~dg% zoO@g1-jtSwSeJ3P$dL5O1!tf?hxqr0mg`d1{gEcs$c?uq5&8MFfl+n4I~mkJPy2i#WP|P z=2bAif_WCqx!@TP8KUF*8o0Uwx?P~v0`tgaYXDON;{eEKfxSH-nF5$b#NPl*OLR$C z^p*P)+@EOE-&2%C2|1BNQX~-*F+3CAfu!r84Tge72yK8i7!Kf&&<=7WL+CzsNRlLo zPPi4s2<_U8|B&(T_ZcU~ztIq=RvD|J;F%QMzCbc5pzDHXS0EY{2n2+;$TnMN;a%bw z%M*i?2xAGxl-YXvM*V2HYRe{geigUicH zoS&cL`1lw{M@Rqp{z7_O0L2~P7sPAn&chOPzAQj!*$ImGVR3q1Ss(k{o}wvEJNfW< zn$s*tO!rPUU5S^9|6#cen_8Fy;g0I(gCFRAD`ILRzhCV{X6yd3)`?nv)r^j2&i8Ak z`O+RmO>KOyzi=IRVNLuPYpb1zt(lrV(II*Md99+EFIR({AM$kX0qMTg%#MoSs#ck! zM@*HwR-*HC*^QjNGL7EE@O1qRH}dh7ijzCqxVL-XR^(tPWI$b~fmu2XwbL;plCzAX zSDviDKH5}GQ`)pA^F7(`m)rnZD{-I1vmr~<_<8a1!e@_d`}VdtvYmtQVg7u+TS*#+ zM?Pt`J{pgu6)mDkl9yjRTHbF-KFLtbNYHn$)6Byng{2BqIp~hL`+umS5?0~{WMiI= z=yC;NRo!?rYkIR0T$b#Rrm3On(4)@A#tKv;sK|44N%mnJGz>$2G;Mk#Id+2~S^k)= vQs)_(SzNzWWqGE^!6*CLpZDCH@iX8P@_)+0 Date: Sat, 13 Feb 2021 14:59:36 +0100 Subject: [PATCH 062/314] readme fixes --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e9cf57b8..1a4d65b5 100644 --- a/README.md +++ b/README.md @@ -156,16 +156,16 @@ inside the game. This was done by replacing single functions of the game with their reversed counterparts using a dll. -After a bit of work then project lay dormant for about a year +After a bit of work the project lay dormant for about a year and was picked up again and pushed to github in May 2019. -At the time I had reversed around 10k lines of code and estimated +At the time I (aap) had reversed around 10k lines of code and estimated the final game to have around 200-250k. Others quickly joined the effort and we made very quick progress throughout the summer of 2019 after which the pace slowed down a bit. Due to everyone staying home during the start of the Corona pandemic -everybody had much time to work on re3 again and +everybody had a lot of time to work on re3 again and we finally got a standalone exe in April 2020 (around 180k lines by then). After the initial excitement and fixing and polishing the code more @@ -182,4 +182,4 @@ Since then we have started LCS, which is currently work in progress. We don't feel like we're in a position to give this code a license.\ The code should only be used for educational, documentation and modding purposes.\ We do not encourage piracy or commercial use.\ -Please keep derivate work open source and give proper credit. \ No newline at end of file +Please keep derivate work open source and give proper credit. From 4907c562317daa0c2ed78f9490e04c91b87b2c7e Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 13 Feb 2021 16:10:14 +0200 Subject: [PATCH 063/314] Disable RANDOMSPLASH --- src/core/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/config.h b/src/core/config.h index c051bdbb..760d9ef3 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -203,7 +203,7 @@ enum Config { #elif defined GTA_PC # ifdef GTA_PS2_STUFF # define USE_PS2_RAND -# define RANDOMSPLASH // use random splash as on PS2 +//# define RANDOMSPLASH // use random splash as on PS2 # define PS2_MATFX # endif # define PC_PLAYER_CONTROLS // mouse player/cam mode From 02ac7c309ef7b4ca280343bfa63e9114633dd7ba Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 13 Feb 2021 16:16:02 +0200 Subject: [PATCH 064/314] Disable RANDOMSPLASH only if loading screen is disabled --- src/core/config.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/config.h b/src/core/config.h index 760d9ef3..6619be68 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -203,7 +203,7 @@ enum Config { #elif defined GTA_PC # ifdef GTA_PS2_STUFF # define USE_PS2_RAND -//# define RANDOMSPLASH // use random splash as on PS2 +# define RANDOMSPLASH // use random splash as on PS2 # define PS2_MATFX # endif # define PC_PLAYER_CONTROLS // mouse player/cam mode @@ -267,6 +267,10 @@ enum Config { #define PS2_ALPHA_TEST // emulate ps2 alpha test #define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number #define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time +#ifdef DISABLE_LOADING_SCREEN +// enable the PC splash +#undef RANDOMSPLASH +#endif #define DISABLE_VSYNC_ON_TEXTURE_CONVERSION // make texture conversion work faster by disabling vsync #define ANISOTROPIC_FILTERING // set all textures to max anisotropic filtering //#define USE_TEXTURE_POOL From 8d27dba4cdec4d3b39bf87ce5baef5962e58312c Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 13 Feb 2021 15:50:56 +0100 Subject: [PATCH 065/314] glfw window icon --- src/skel/glfw/glfw.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index b44e5750..baed9000 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -52,6 +52,11 @@ long _dwOperatingSystemVersion; #define MAX_SUBSYSTEMS (16) +#ifdef _WIN32 +#define GLFW_EXPOSE_NATIVE_WIN32 +#include +#endif + rw::EngineOpenParams openParams; @@ -1560,6 +1565,15 @@ main(int argc, char *argv[]) return 0; } +#ifdef _WIN32 + HWND wnd = glfwGetWin32Window(PSGLOBAL(window)); + + HICON icon = LoadIcon(instance, MAKEINTRESOURCE(IDI_MAIN_ICON)); + + SendMessage(wnd, WM_SETICON, ICON_BIG, (LPARAM)icon); + SendMessage(wnd, WM_SETICON, ICON_SMALL, (LPARAM)icon); +#endif + psPostRWinit(); ControlsManager.InitDefaultControlConfigMouse(MousePointerStateHelper.GetMouseSetUp()); From 2183e25081a50e55a9a7eb8742e3253382f2343e Mon Sep 17 00:00:00 2001 From: withmorten Date: Sat, 13 Feb 2021 17:16:51 +0100 Subject: [PATCH 066/314] more readme fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1a4d65b5..d0e9d727 100644 --- a/README.md +++ b/README.md @@ -168,13 +168,13 @@ Due to everyone staying home during the start of the Corona pandemic everybody had a lot of time to work on re3 again and we finally got a standalone exe in April 2020 (around 180k lines by then). -After the initial excitement and fixing and polishing the code more +After the initial excitement and fixing and polishing the code further, reVC was started in early May 2020 by starting from re3 code, not by starting from scratch replacing functions with a dll. After a few months of mostly steady progress we considered reVC finished in December. -Since then we have started LCS, which is currently work in progress. +Since then we have started reLCS, which is currently work in progress. ## License From f372420dc05b32c537799fcb9bff18dbd3e5b67d Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Sat, 13 Feb 2021 20:07:42 +0200 Subject: [PATCH 067/314] Update invite link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d0e9d727..991bcbcc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ re3 logo [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2FGTAmodding%2Fre3%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/GTAmodding/re3/goto?ref=master) - + ## Intro From 9f575a70c165a842db7dbfab583f4753da75377d Mon Sep 17 00:00:00 2001 From: withmorten Date: Sun, 14 Feb 2021 02:35:29 +0100 Subject: [PATCH 068/314] even more readme fixes --- README.md | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 991bcbcc..cab6fae5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Intro -In this repository you'll find the fully reversed source code for GTA III ([master](tree/master) branch) and GTA VC ([miami](tree/miami) branch). +In this repository you'll find the fully reversed source code for GTA III ([master](https://github.com/GTAmodding/re3/tree/master/) branch) and GTA VC ([miami](https://github.com/GTAmodding/re3/tree/miami/) branch). It has been tested and works on Windows, Linux and FreeBSD, on x86, amd64, arm and arm64.\ Rendering is handled either by original RenderWare (D3D8) @@ -27,8 +27,7 @@ We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in to - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) -- Copy the files from the `gamefiles` directory to your game root directory. (This is not strictly necessary but very much recommended) -- Move re3 executable to GTA 3 directory and run it. +- Extract the downloaded zip over your GTA 3 directory and run re3. The zip includes the gamefiles and in case of OpenAL the required dlls. ## Screenshots @@ -93,7 +92,9 @@ Sorry for the inconvenience. ## Building from Source -When using premake, you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder, if you want executable to be moved there via post-build script. +When using premake, you may want to point GTA_III_RE_DIR environment variable to GTA3 root folder if you want executable to be moved there via post-build script. + +Clone the repository with `git clone --recursive https://github.com/GTAmodding/re3.git`. Then `cd re3` into the cloned repository.

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 l-~&ek{sDXdA2 From f3bfdd78571f9335f2274b047b127747457a8e79 Mon Sep 17 00:00:00 2001 From: aap Date: Thu, 11 Feb 2021 20:51:13 +0100 Subject: [PATCH 043/314] imrove readme; enable screenshots with F12 --- README.md | 116 ++++++++++++++++++++++++++++++----------- src/core/main.cpp | 13 +++++ src/fakerw/fake.cpp | 37 +++++++++++++ src/fakerw/rtpng.h | 4 ++ src/skel/glfw/glfw.cpp | 1 + src/skel/win/win.cpp | 1 + vendor/librw | 2 +- 7 files changed, 143 insertions(+), 31 deletions(-) create mode 100644 src/fakerw/rtpng.h diff --git a/README.md b/README.md index d56aa7ed..d3175662 100644 --- a/README.md +++ b/README.md @@ -5,26 +5,91 @@ ## Intro -The aim of this project is to reverse GTA III for PC by replacing -parts of the game [one by one](https://en.wikipedia.org/wiki/Ship_of_Theseus) -such that we have a working game at all times. +In this repository you'll find the fully reversed source code for GTA III ([master](tree/master) branch) and GTA VC ([miami](tree/miami) branch). -## How can I try it? +It has been tested and works on Windows, Linux and FreeBSD, on x86, amd64, arm and arm64.\ +Rendering is handled either by original RenderWare (D3D8) +or the reimplementation [librw](https://github.com/aap/librw) (D3D9, OpenGL 2.1 or above, OpenGL ES 2.0 or above).\ +Audio is done with MSS (using dlls from original GTA) or OpenAL. -- re3 requires game assets to work, so you **must** own [a copy of GTA III](https://store.steampowered.com/app/12100/Grand_Theft_Auto_III/). -- Build re3 or download [the latest nightly build](https://github.com/GTAmodding/re3/actions) (You must be logged in.) -- (Optional) If you want to use optional features like Russian language or menu map, copy the files in /gamefiles folder to your game root folder. +The project has also been ported to the [Nintendo Switch](https://github.com/AGraber/re3-nx/), +[Playstation Vita](https://github.com/Rinnegatamante/re3) and +[Nintendo Wii U](https://github.com/GaryOderNichts/re3-wiiu/). + +We cannot build for PS2 or Xbox yet. If you're interested in doing so, get in touch with us. + +## Installation + +- re3 requires PC game assets to work, so you **must** own [a copy of GTA III](https://store.steampowered.com/app/12100/Grand_Theft_Auto_III/). +- Build re3 or download the latest nightly build: + - [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) + - [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_d3d9-oal.zip) + - [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) + - [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) + - [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) +- Copy the files from the `gamefiles` directory to your game root directory. (This is not strictly necessary but very much recommended) - Move re3 executable to GTA 3 directory and run it. -## Latest standalone executables to download +## Screenshots -(Put content of selected archive into gamedir) +![re3 2021-02-11 22-57-03-23](https://user-images.githubusercontent.com/1521437/107704085-fbdabd00-6cbc-11eb-8406-8951a80ccb16.png) +![re3 2021-02-11 22-43-44-98](https://user-images.githubusercontent.com/1521437/107703339-cbdeea00-6cbb-11eb-8f0b-07daa105d470.png) +![re3 2021-02-11 22-46-33-76](https://user-images.githubusercontent.com/1521437/107703343-cd101700-6cbb-11eb-9ccd-012cb90524b7.png) +![re3 2021-02-11 22-50-29-54](https://user-images.githubusercontent.com/1521437/107703348-d00b0780-6cbb-11eb-8afd-054249c2b95e.png) -- [Windows D3D9 MSS 32bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_x86/master/re3_Release_win-x86-librw_d3d9-mss.zip) -- [Windows D3D9 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_d3d9-oal.zip) -- [Windows OpenGL 64bit](https://nightly.link/GTAmodding/re3/workflows/re3_msvc_amd64/master/re3_Release_win-amd64-librw_gl3_glfw-oal.zip) -- [Linux 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/ubuntu-latest-gl3.zip) -- [MacOS 64bit](https://nightly.link/GTAmodding/re3/workflows/build-cmake-conan/master/macos-latest-gl3.zip) +## Improvements + +We have implemented a number of changes and improvements to the original game. +They can be configured in `core/config.h`. +Some of them can be toggled at runtime, some cannot. + +* Fixed a lot of smaller and bigger bugs +* User files (saves and settings) stored in GTA root directory +* Settings stored in re3.ini file instead of gta3.set +* Debug menu to do and change various things (Ctrl-M to open) +* Debug camera (Ctrl-B to toggle) +* Rotatable camera +* Xinput controller support (Windows) +* No loading screens between islands ("map memory usage" in menu) +* Skinned ped support (models from Xbox or Mobile) +* Rendering + * Widescreen support (properly scaled HUD, Menu and FOV) + * PS2 MatFX (vehicle reflections) + * PS2 alpha test (better rendering of transparency) + * PS2 particles + * Xbox vehicle rendering + * Xbox world lightmap rendering (needs Xbox map) + * Xbox ped rim light + * Xbox screen rain droplets + * More customizable colourfilter +* Menu + * Map + * More options + * Controller configuration menu + * ... +* Can load DFFs and TXDs from other platforms, possibly with a performance penalty +* ... + +## To-Do + +The following things would be nice to have/do: + +* Fix physics for high FPS +* Compare code with PS2 code (tedious, no good decompiler) +* [PS2 port](https://github.com/GTAmodding/re3/wiki/PS2-port) +* Xbox port (not quite as important) +* reverse remaining unused/debug functions +* compare Codewarrior build with original binary for more accurate code (very tedious) + +## Modding + +Asset modifications (models, texture, handling, script, ...) should work the same way as with original GTA for the most part. + +Mods that make changes to the code (dll/asi, CLEO, limit adjusters) will *not* work. +Some things these mods do are already implemented in re3 (much of SkyGFX, GInput, SilentPatch, Widescreen fix), +others can easily be achieved (increasing limis, see `config.h`), +others will simply have to be rewritten and integrated into the code directly. +Sorry for the inconvenience. ## Building from Source @@ -78,21 +143,12 @@ Assuming you have Visual Studio: > :information_source: **Did you notice librw?** re3 uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. ## Contributing -Please read the [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) Document +We have a [Coding Style](https://github.com/GTAmodding/re3/blob/master/CODING_STYLE.md) document that isn't followed or enforced very well. -### Unreversed / incomplete classes (at least the ones we know) -The following classes have only unused or practically unused code left: -``` -NameGrid.cpp - only on mobile (a player name grid, either a very early player name code ala GTA1 or a multiplayer leftover) -PedDebug.cpp - only on mobile (debug code) -HandlingMgr.cpp - debug functions from mobile -CFormationInfo - unused PedAI class that could be found on mobile -CVehicle::ProcessBikeWheel - early bike code (only on mobile) -CAutomobile::DebugCode - debug function from mobile -CBoat::DebugCode - debug function from mobile -CBoat::ModifyHandlingValue - debug function from mobile -CBoat::DisplayHandlingData - debug function from mobile -CStreaming::PrintRequestList - debug function from mobile -d3d8raster.c - only on PC (slight RW modification that we don't actually need) -``` +Do not use features from C++11 or later. + +## License + +We don't feel like we're in a position to give this code a license. +If we were, it would be MIT licensed. diff --git a/src/core/main.cpp b/src/core/main.cpp index af0d556a..58e77db3 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -1,8 +1,10 @@ #include "common.h" +#include #include "rpmatfx.h" #include "rphanim.h" #include "rpskin.h" #include "rtbmp.h" +#include "rtpng.h" #ifdef ANISOTROPIC_FILTERING #include "rpanisot.h" #endif @@ -354,7 +356,11 @@ RwGrabScreen(RwCamera *camera, RwChar *filename) strcpy(temp, CFileMgr::GetRootDirName()); strcat(temp, filename); +#ifdef THIS_IS_STUPID if (RtBMPImageWrite(pImage, &temp[0]) == nil) +#else + if (RtPNGImageWrite(pImage, &temp[0]) == nil) +#endif result = false; RwImageDestroy(pImage); return result; @@ -373,6 +379,7 @@ DoRWStuffEndOfFrame(void) RsCameraShowRaster(Scene.camera); #ifndef MASTER char s[48]; +#ifdef THIS_IS_STUPID if (CPad::GetPad(1)->GetLeftShockJustDown()) { // try using both controllers for this thing... crazy bastards if (CPad::GetPad(0)->GetRightStickY() > 0) { @@ -384,6 +391,12 @@ DoRWStuffEndOfFrame(void) RwGrabScreen(Scene.camera, s); } } +#else + if (CPad::GetPad(1)->GetLeftShockJustDown() || CPad::GetPad(0)->GetFJustDown(11)) { + sprintf(s, "screen_%11lld.png", time(nil)); + RwGrabScreen(Scene.camera, s); + } +#endif #endif // !MASTER } diff --git a/src/fakerw/fake.cpp b/src/fakerw/fake.cpp index 366dcf3e..1d4c881f 100644 --- a/src/fakerw/fake.cpp +++ b/src/fakerw/fake.cpp @@ -945,6 +945,43 @@ RtBMPImageRead(const RwChar *imageName) #endif } + +RwImage * +RtPNGImageWrite(RwImage *image, const RwChar *imageName) +{ +#ifndef _WIN32 + char *r = casepath(imageName); + if (r) { + rw::writePNG(image, r); + free(r); + } else { + rw::writePNG(image, imageName); + } + +#else + rw::writePNG(image, imageName); +#endif + return image; +} +RwImage * +RtPNGImageRead(const RwChar *imageName) +{ +#ifndef _WIN32 + RwImage *image; + char *r = casepath(imageName); + if (r) { + image = rw::readPNG(r); + free(r); + } else { + image = rw::readPNG(imageName); + } + return image; + +#else + return rw::readPNG(imageName); +#endif +} + #include "rtquat.h" RtQuat *RtQuatRotate(RtQuat * quat, const RwV3d * axis, RwReal angle, RwOpCombineType combineOp) { return (RtQuat*)((rw::Quat*)quat)->rotate(axis, angle/180.0f*3.14159f, (CombineOp)combineOp); } diff --git a/src/fakerw/rtpng.h b/src/fakerw/rtpng.h new file mode 100644 index 00000000..80f29020 --- /dev/null +++ b/src/fakerw/rtpng.h @@ -0,0 +1,4 @@ +#pragma once + +RwImage *RtPNGImageWrite(RwImage * image, const RwChar * imageName); +RwImage *RtPNGImageRead(const RwChar * imageName); diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index b413a1ce..b44e5750 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -204,6 +204,7 @@ psGrabScreen(RwCamera *pCamera) } #else rw::Image *image = RwCameraGetRaster(pCamera)->toImage(); + image->removeMask(); if(image) return image; #endif diff --git a/src/skel/win/win.cpp b/src/skel/win/win.cpp index c00d6075..7317356c 100644 --- a/src/skel/win/win.cpp +++ b/src/skel/win/win.cpp @@ -259,6 +259,7 @@ psGrabScreen(RwCamera *pCamera) } #else rw::Image *image = RwCameraGetRaster(pCamera)->toImage(); + image->removeMask(); if(image) return image; #endif diff --git a/vendor/librw b/vendor/librw index 5c953008..4c77fb57 160000 --- a/vendor/librw +++ b/vendor/librw @@ -1 +1 @@ -Subproject commit 5c95300890559c85a2764bc200361f904cd4f9f4 +Subproject commit 4c77fb57546e89da1e6f3bad3c582848de9f5c93 From 9e1c048e206d4e91d03ef8978bf61a6af654fc3b Mon Sep 17 00:00:00 2001 From: erorcun Date: Fri, 12 Feb 2021 01:49:09 +0300 Subject: [PATCH 044/314] Remove version text, add toggleable debug info(with commit hash!) --- .gitignore | 2 ++ premake5.lua | 6 ++++- printHash.bat | 26 ++++++++++++++++++++ printHash.sh | 14 +++++++++++ src/core/config.h | 6 ++++- src/core/main.cpp | 56 ++++++++++++++++++++++++++++++++++++++++-- src/core/re3.cpp | 13 +++++++++- src/extras/GitSHA1.cpp | 2 ++ src/extras/GitSHA1.h | 1 + 9 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 printHash.bat create mode 100644 printHash.sh create mode 100644 src/extras/GitSHA1.cpp create mode 100644 src/extras/GitSHA1.h diff --git a/.gitignore b/.gitignore index 44d3eb0b..b4f221f2 100644 --- a/.gitignore +++ b/.gitignore @@ -358,3 +358,5 @@ sdk/ codewarrior/re3_Data/ codewarrior/Release/ codewarrior/Debug/ + +src/extras/GitSHA1.cpp \ No newline at end of file diff --git a/premake5.lua b/premake5.lua index a0d54ea7..64dc8767 100644 --- a/premake5.lua +++ b/premake5.lua @@ -313,7 +313,7 @@ project "re3" filter {} if(os.getenv("GTA_III_RE_DIR")) then - setpaths("$(GTA_III_RE_DIR)/", "%(cfg.buildtarget.name)") + setpaths(os.getenv("GTA_III_RE_DIR") .. "/", "%(cfg.buildtarget.name)") end filter "platforms:win*" @@ -327,6 +327,10 @@ project "re3" -- external librw is dynamic staticruntime "on" end + prebuildcommands { '"%{prj.location}..\\printHash.bat" "%{prj.location}..\\src\\extras\\GitSHA1.cpp"' } + + filter "platforms:not win*" + prebuildcommands { '"%{prj.location}../printHash.sh" "%{prj.location}../src/extras/GitSHA1.cpp"' } filter "platforms:win*glfw*" staticruntime "off" diff --git a/printHash.bat b/printHash.bat new file mode 100644 index 00000000..ef1cd9d6 --- /dev/null +++ b/printHash.bat @@ -0,0 +1,26 @@ +@echo off + +REM creates version.h with HEAD commit hash +REM params: $1=full path to output file (usually points version.h) + +setlocal enableextensions enabledelayedexpansion + +cd /d "%~dp0" + +break> %1 + + %1 + +where git +if "%errorlevel%" == "0" ( goto :havegit ) else ( goto :writeending ) + +:havegit +for /f %%v in ('git rev-parse --short HEAD') do set version=%%v +> %1 + +:writeending + +echo ^" >> %1 +echo const char* g_GIT_SHA1 = GIT_SHA1; >> %1 + +EXIT /B \ No newline at end of file diff --git a/printHash.sh b/printHash.sh new file mode 100644 index 00000000..7b4453a1 --- /dev/null +++ b/printHash.sh @@ -0,0 +1,14 @@ +#!/usr/bin/bash + +> $1 + +echo -n "#define GIT_SHA1 \"" > $1 + +git --version 2>&1 >/dev/null +GIT_IS_AVAILABLE=$? +if [ $GIT_IS_AVAILABLE -ne 0 ]; then +git rev-parse --short HEAD | tr -d '\n' >> $1 +fi + +echo "\"" >> $1 +echo "const char* g_GIT_SHA1 = GIT_SHA1;" >> $1 \ No newline at end of file diff --git a/src/core/config.h b/src/core/config.h index 73c29f15..87c31a0f 100644 --- a/src/core/config.h +++ b/src/core/config.h @@ -183,7 +183,11 @@ enum Config { // those infamous texts #define DRAW_GAME_VERSION_TEXT -#define DRAW_MENU_VERSION_TEXT +#ifdef DRAW_GAME_VERSION_TEXT + #define TOGGLEABLE_VERSION_TEXT + #define USE_OUR_VERSIONING // If you disable this then game will fetch version peds.col, as R* did while in development +#endif +//#define DRAW_MENU_VERSION_TEXT // Memory allocation and compression // #define USE_CUSTOM_ALLOCATOR // use CMemoryHeap for allocation. use with care, not finished yet diff --git a/src/core/main.cpp b/src/core/main.cpp index af0d556a..363087c0 100644 --- a/src/core/main.cpp +++ b/src/core/main.cpp @@ -70,6 +70,9 @@ #include "custompipes.h" #include "screendroplets.h" #include "MemoryHeap.h" +#ifdef USE_OUR_VERSIONING +#include "GitSHA1.h" +#endif GlobalScene Scene; @@ -86,6 +89,9 @@ bool gbModelViewer; #ifdef TIMEBARS bool gbShowTimebars; #endif +#ifdef TOGGLEABLE_VERSION_TEXT +bool gDrawVersionText; +#endif volatile int32 frameCount; @@ -1089,13 +1095,58 @@ DisplayGameDebugText() #ifdef DRAW_GAME_VERSION_TEXT wchar ver[200]; - + +#ifdef TOGGLEABLE_VERSION_TEXT + if(gDrawVersionText) +#endif + { + +#ifdef USE_OUR_VERSIONING + char verA[200]; + sprintf(verA, +#if defined _WIN32 + "Win " +#elif defined __linux__ + "Linux " +#elif defined __APPLE__ + "Mac OS X " +#elif defined __FreeBSD__ + "FreeBSD " +#else + "Posix-compliant " +#endif +#if defined __LP64__ || defined _WIN64 + "64-bit " +#else + "32-bit " +#endif +#if defined RW_D3D9 + "D3D9 " +#elif defined RWLIBS + "D3D8 " +#elif defined RW_GL3 + "OpenGL " +#endif +#if defined AUDIO_OAL + "OAL " +#elif defined AUDIO_MSS + "MSS " +#endif +#if defined _DEBUG || defined DEBUG + "DEBUG " +#endif + "%.8s", + g_GIT_SHA1); + AsciiToUnicode(verA, ver); + CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.7f)); +#else AsciiToUnicode(version_name, ver); + CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f)); +#endif CFont::SetPropOn(); CFont::SetBackgroundOff(); CFont::SetFontStyle(FONT_BANK); - CFont::SetScale(SCREEN_SCALE_X(0.5f), SCREEN_SCALE_Y(0.5f)); CFont::SetCentreOff(); CFont::SetRightJustifyOff(); CFont::SetWrapx(SCREEN_WIDTH); @@ -1107,6 +1158,7 @@ DisplayGameDebugText() #else CFont::PrintString(10.0f, 10.0f, ver); #endif + } #endif // #ifdef DRAW_GAME_VERSION_TEXT FrameSamples++; diff --git a/src/core/re3.cpp b/src/core/re3.cpp index 3584e226..80e89ca4 100644 --- a/src/core/re3.cpp +++ b/src/core/re3.cpp @@ -508,6 +508,10 @@ bool LoadINISettings() #ifdef FIX_SPRITES ReadIniIfExists("Draw", "FixSprites", &CDraw::ms_bFixSprites); #endif +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + ReadIniIfExists("General", "DrawVersionText", &gDrawVersionText); +#endif #ifdef CUSTOM_FRONTEND_OPTIONS bool migrate = cfg.category_size("FrontendOptions") != 0; @@ -595,6 +599,10 @@ void SaveINISettings() #ifdef FIX_SPRITES StoreIni("Draw", "FixSprites", CDraw::ms_bFixSprites); #endif +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + StoreIni("General", "DrawVersionText", gDrawVersionText); +#endif #ifdef CUSTOM_FRONTEND_OPTIONS for (int i = 0; i < MENUPAGES; i++) { for (int j = 0; j < NUM_MENUROWS; j++) { @@ -985,7 +993,10 @@ extern bool gbRenderWorld2; #endif - +#ifdef TOGGLEABLE_VERSION_TEXT + extern bool gDrawVersionText; + DebugMenuAddVarBool8("Debug", "Version Text", &gDrawVersionText, nil); +#endif #ifndef FINAL DebugMenuAddVarBool8("Debug", "Print Memory Usage", &gbPrintMemoryUsage, nil); #ifdef USE_CUSTOM_ALLOCATOR diff --git a/src/extras/GitSHA1.cpp b/src/extras/GitSHA1.cpp new file mode 100644 index 00000000..3d1cd73e --- /dev/null +++ b/src/extras/GitSHA1.cpp @@ -0,0 +1,2 @@ +#define GIT_SHA1 "" +const char* g_GIT_SHA1 = GIT_SHA1; diff --git a/src/extras/GitSHA1.h b/src/extras/GitSHA1.h new file mode 100644 index 00000000..359bfaff --- /dev/null +++ b/src/extras/GitSHA1.h @@ -0,0 +1 @@ +extern const char* g_GIT_SHA1; \ No newline at end of file From 6580ddd6cbdcf53b631d21ebeee4cab1d51182ba Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 12 Feb 2021 05:32:44 +0200 Subject: [PATCH 045/314] Recompile GXTs --- gamefiles/TEXT/french.gxt | Bin 244742 -> 244922 bytes gamefiles/TEXT/german.gxt | Bin 240680 -> 240860 bytes gamefiles/TEXT/italian.gxt | Bin 240166 -> 240354 bytes gamefiles/TEXT/spanish.gxt | Bin 235132 -> 235588 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 2cbfe948020dbd0bdb8d3e970cea1d5614466e08..ba1f809d3b1f5e6287852bd4d81a6e5408e581ad 100644 GIT binary patch delta 24173 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 delta 23833 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 MD8dcDv0e1E^+ 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 H^x6Lf&aD2v diff --git a/gamefiles/TEXT/italian.gxt b/gamefiles/TEXT/italian.gxt index 00f6a9d06d3a574fb7cbb205f572850c4607c117..cf07b6339775d88ca08810f0024dfb1254ebd48d 100644 GIT binary patch delta 23036 zcmZvkeVkQSb@$g?2oi(|5;7qp!O4V-Na)Snm$~y&GU2}8J9FPS=iEEPgmB4-NRePf zL?p<;5ot;hF$aNCL`rF-6sO661S!Rcl%_~2MWi%EikKp$lwul5N_p`4t^M{_C!c)y zp0(HBd+qnV*FNXIdam}$&uZ^;x|6f6ee=GT+;@)FP@p-`O!#a1q2K`X0?9$I$Zzcf z=K~LNI+QsErF@{uDLFs##?^HA`bT<&nnvHdAM%#eq0+dNtOhw$dzcCVi>(#aSY;pisRti??{~l__X3Ac$;6!lZbmpaSHM^PkAeRes^>| z2ZySh#Dt@4tf&B5v%;9f#_d2dvG;R{wZvFz6?b= zc!G8EWv;r3f2$ZK&eseR-_r~e=e(tKP+c1|ql(U-MfxR+lO+Esq;ChjFAje+cwn70fzc?Zf92KQx6Cd4 zfeel!__SsOk2)kp-zJHx&|^yZ9cbk8UeCpUS$3{Jts&5F5zQ@$?cX~-8V&OknA zgOq0=e@$@~@;i#Vz^QLY9q#yZMJ3DrSBnuCwZq=e-!4Idw-I7st8 zq2(dE%@tl|Yly6^h}#pL#q3v%nxr!yhfXyfEuefGB^UFh08Lp7{c0Q>r16}W;1JE@ zQC&?v7|rGa6#E)0rNBWt^fhnrLv{7ngs2p?ZK6d*RAbeO7Sc(&Hr2cIp*lCRzlLJb zf}KewX^~*dig(+zVjIgHR0@U%%agg>ta6D?{=f%ztSCC}6~i%_d|1n2_jSS5E_8=? zFcxB|Y@v&blK`iCGDQrFbCSK!k9@S#&pNrR?O-f4{yE|nqfWLEpf?Q%Y2#ik50U>b zG>7TUA@B6a#@ZD>Wl^DwLel92-o24^P5m86)pl$L=IllV(jb^S*EfH z)csh+Ih1(#G=hG%z^lmFFTs>-0WCn3coOogGpi3pnv+60xxQi%W4ui>`q33mzYw>h z73g;|JFPkH1#3irBLW7weT&gJkN2@nNVJ&CCF2g2uu_7H`M5=IZ}+-t{q7}BqgZe( z*x2_~<`SCTp|fwpu3`zZIOgsqmRF4xDJ@;$2x&=R33hFhu2H4kkx&u}}f(;R80?S=z%!f=o- z8V=FBhQl;+w#qEhLSe%Z>N4C)FDiDMBW<+N1hms(&8^LJ)-Z;X;ULvLr!r^_QO0nX z<{56G0mJB9hFj@~;Wm2vIiD-XYim2bs{`85x#p-0+5$AmaFD`=LzFWdrp1O^Xs6)_ z9WmTWR}Ew1TGi>h?bN9s+MCHT9H2#pgY>fD5Dgj*(_4mH=$hdOjhL%4Xm6#7hTAA& zxScF!7qeBMxtW%!0Gy5J6~jT=V>m=_8V=J1!!7il;Rua;US=FapQm-&Xp!M|+MyW}*CokrA`lGF zgiommn7ImuL$u9snBF$rLX+of{RquB+)BF*WBxGQPE$Xv^f7U*G#sEapLTUXkS2*0 z49yV=(GtU98Z_KOrwm8vj^S4Fi`9(dw$Td1?Q~T$CazUt0fSCBK)W@&VXRJ{QAUJA zw9s&vb{cM>y@n%n!Z2n`!)8bA4$xx5K^ia|a%qQo2-6|MEp*y&gg!9bO5+!+j4^Tf z4YyO5W=vcQ4F_ng;UMia9HJwFG5-fz!*t#Rw9vbTBQ*B2DzjF!vEeq#8E&VAnlW*` zY&bxB4F~DC;SgOk9H#eN^Uy-0UsRd3MQEDgR+?eBjVgxQ=|#<$xYijC&_2W1P#eZD zHXNqmpObmHf%X<^R1bmn2*nJy(mca$w9;@pZBiV>#I@IOfKC|>(pAGD@-2~>1)Iav zV7P^*FH!StJiRVHW?1mUc(_eWjIV%4dd|e1(hatT(!(R{|AGu zlrsTs)NdGVtQj-cZo>gOVmL@=4dc|ZOl1%XQ@!C9iWrVi$#5&Vi_JqDtu@?EyES9x zI$=0KHw|Or`l8AV6IZk0Fl7w4(0s!YT4lJEHcNIBL2SA9nSgdWp&2vRWy1lwXBZoh zB}_phZ=r(W2+cN(zGb+Lwk}umf3T&UhI9aCuH%LS^p4>mjrx+x zI1-{p!(p0kxP>Z)BQ#*Rm9`m1fi=64b~>sbFmsLOqn?#6rf}>#^)z!f&pyuGS>{|K zi-YuxZsvU2#u4yJk{JUOJAwM z{I6U%+Xpy+-8n(J#zvHLRuY*tPC@ln9QXnpTK$A%9JFcsLz44$nzkXacr|7vvnfif zL0sj|St~ec$4f*b1+%9HE{7*ki`DLIE@uy;gJ1D3O{^PpScE&-JkFI3Ud^KqXSbsG ziRi3S4pzJjj|A8*;iNk!0gk0a75N3HQ(XLO@P8y?*@BJYUl{U%bJch*g){o|k3Q^f z$2m8Vgiizq+Pa@2lnaNyqY;)TP`)f(Q;cUC2M06DGdRdk68fnG`w2-OYPTDxeyqpy3c5mP*hG)7B;!$C2TL zJ*N|@M(N&IEsxQGf=(w+!H;Npf=(DtQvWzDPmz;%Wd!&*Xw6K;FzAHgAdRrJJVZ+k zhiQVN<(R*0%@JB}xRnO}R%XVIp~L8UT!3ITMz3B`?7}^IM?X{()b>lQl%$P@Q{;O` z%hNPqI76#cO<;zDZ&vEC+w_Xk2_fTE|EA?JI$}6Zv8(9kY*7dq58^>`lA26HDcUs= zZ7Fopv{z*oMrQptq&}SMRC`Txl+GHC(Sm>1@;IF~oS@2eEl+mSJ@b&F&i~K>X*y;& zLoxVg*oYj4XJRTk8Z&&D$D)wuQdxE$?cVQoHq<>mkb$UZSGYenao@ADl_V;mBOY9C2P|K7Dtslu{%FieuUSQ)N2+WoK4&sQ>~a)~zm2e^=cLHN5NnVsc1 z#XR^{DQ0Im{ioDH0qLw{x61DAuA4G|oyc!0=1J`X#q7Ec|CiKZ*Y!cg?7Hs1CFPiM z$oFf>C=0Dr%wzQ(#V8Af-<3L;u4wzaSQ@wlGx1RO-;y!U(Gtb%b33V+Cx$8SNga4! zX;3jHXv+OY%6q`I@XI9&siKAU-44zBZBks!hJAf(~wvHxZl_R zcV5@y+kD$kc~>9b;4U4ifj2V?Hy!S^J~oU}$!IlbmuQ>fP$EOa8>Bo8`PLu$giZow zY*O+hBF}va=^$<@kMpPD0BtsmO^sp9Qj*awxQ;qy0$S*z;Rszf+)5*xbq4SweMB0R z%D2;sCp8ynyE2Zuc1p#~7m9RalGMq=#T`~g7vNtlJvCP*TEJ90MMWr<9onf9!aPn* zswOO40*q8_r+Vp-=2ADcskppcY*KO2ap}Za@9YzP-{AY6ugUM*^(!yf)L4JyE>~f^ z8ja_u`FGd=u;b9e2ff8jb+zYJaLnqaNWJ$;Q=@xPlo2aoJVgU{WbAl6PXp7qT#zS9 zl*1Y-I9Z@OS|4uiiCQNWq)x*jnrk>r{r{uVM8%crRXVwD>ia;*kwHFB$0n$Ne2GSl z*KASjo{F5e>E>7^FF4fj|CHQH(7^wA%Rb)d-l~zoiCCIWj#i9SHT8(*99`FpoyR6s zj)WbgeTGAH+;Es)*7`kBI`yDTCz))2;NcL7}tjZvjwJ5AIP8H%b`$4ZTrOw@_l1`P1G)2~3HHG`d6I!*$ zrh6)zw4I|pe%bn&XpDBLX3xYdDk=R8HZU<&)ft#xkF|u`I8zMKWE~gR6tBp*&sH;5 zfx>mN9NCydM^q!@PJlX9qFHRdDn6xC$WhH zs%CS^6m3+N=2B70Y5ndT?ULQp8#eVL?j%)RIdq?O(`2>eaKEuhS)D89=#XKHhO6qz zVV>*Laji5h(dnaBUetElNJraNPEf-bSt~hAshgy}Tg_p7pVJX~5_Cx!ozE8NurerL ztk4Wqy?Jb(Us2VbN89f;oTuZ4Et;n?&iBNqU>JL0)vWp6A{FXfX;Hq{p=m0!0+z?y z%7_96?;*|k0$orwfvXw1rV=e+%GswnW5Ma6*R*~)Pph>KCd`SdWePn>nmb(PTXef@ zdiBHVp}U**4pWTLwoi4sVj)EJIx>3l0?kf= z`qg}Ap(kI_a&+DsIQMdm+9`*&sb;d%U3B>qN{(~Wc%^TnZ*6i_#&#ZuX4RH9F96C2 zJMU1N>alhyPGQvn?NWh8KCTi)XS}IOZ2CQYi-IjIC4cvvRtq;ho8FeU+`Q>GC*E;`o;m9fLil4i^kSJa&0 z*m)Yf2UinUmxC?A0#y@E8OwkwrBlw)a>M8cI)k1fT~Q;Yj1lD5jGF6JwN);}XrbzK zWz6{ls_o0ADBV?~qmpzp6joJTN!oNy4Y^7d8+A1-dr&KvR9p6Barp_s^3do1eus9+m!w9szuyl{2mAw(xdPiBUTSt;3ZT&^1q z(wbk%$W_8U5pyX3QDOM9+s#u7`F8c$9&$GuS8P znEw;lgiqzpm8j+rd4Y;t!oG5qVk@4YJ<13R%`{!hvk9^cm*}j@fSnt?hAmocxR3mr zv7eaRG+AcM!zQ9Kz-uM+rs5tP1XgeJrUv}J*~h%TK!1sY&q9ck+xmk2Yb0JN;6x&vX&M079U+zk0@oI89_aV|@v z!iq~6?plsb=b=Zrka^L}ca=Pa6YJVZt_(<7d0MBGGU!JMQG5Anu88HFq)tBCOeD6F zdDK>b>I~yT-f)Pf8xB*!FkS>O9HEt(-DoQwC`8Xv;NV$zyq~;mMur?f`-G;+-+;9uMV>m*?RbFQ=DiDVy+nRTkhe7Y8sQ5C7KLeh*C;1`|jGrEL*4+;#qn}#VsVUl8Sv} zp$ex79Z~x1f!yGl2b)$laP<~2k3}i0GIM4%QA`SQlrv&l*jQ~56Fzm-5I)WI8U|S{gJf$nwYdpRel91HiZWm7$&Y0jWx4sV`Nvv ztiX)k^L^H_odmk=GR2pD)54dbQAt4fJ2{Zo}FJj;9kM9GUil-RB0GZS>|-;{i2isotknK^pJ z=oD$(pJ{!ICcO$5CraN}ooQpX*8ydEPqq1}X2l7-eRp<~jGVwbmlwp? zv8#!6lrFy`ec0V#PP`(vE?|@FGxbgFI~Ud5&AA&yhQGO=lg5>6cpbYxWZ zW|aZ&tHz7{HFVJSBUEN_oTrv4c>;6gyQ1_M-8knj93_oQpeF9AbQ0LPEN>dd`)erK z1zIk)I!-l-jBkhu$El_eVVyX-f^i9SPDM_`Eq6sFn#S_hrQ{jtZ&S6B!Omc-irWSG zWTnsVo98sAUHHk>1MiV0tJ3FT#59#CFT__>qIupus8Z%p`gJNUT91y4RlpGobepOb zUWgZnRl}+Bv3G$=ldq(Xa}BvDeaS9UMn#y3gf^;bw-Vj7T$R8=HC|W7@qzH2H?oR{7MpLU~*9>1`orj zEOW|E<8q*WA9V8Km2GO?JsJ*V^-;(CRbJugIld#m?+rd(S3}<4JpEl?X`{Eev#!1^ zC*laVepi=bByp_E+kxP9D%gf-Y(WO|o8 zf+H`(S{TLeVaLAB1_nVyFYfdF&vevp_)8AP7YAX;UQ>))wxQR&foJB_&RfZ;@;w^S zD=WR5&z$rP?(+`MNclGZ((^?-d>g;wbw>R)wcZQSsvEqYwfUZkXhcae=Qdw492az3 zG3U2EJ%;7Vu34luu~51mQ4{9@)?oKtb{POP!1^W%u7 zE|ymbPWIxhaJq^6(v&aez66qV(zt_B;9_92%ExWv0~8z z+>L>GcBlFKeayJmAX++(b*w197@#?0Sk8=n$_DRnd|@#44UQ(h(V#2e=U`mr;&1a4 zLXOu%FvI+vlygID-{4ge{`yN>MR0^$a`R(?xf*H5A9*_xjqct!L`f@;kxs`k)YF-w z7z8^oiqrXA5q>5r;0`dI$4(yx9}#lw^I+udr&(@`?=Yqc9lMg7iI>JPu+oJz#+5^F z!IX4SetofW2IR$9G>*F6gC_xYEHv zVMsHY?wV%QVqZe(pfl~(%(K5{)KDdbw{pFMjKvj?QW~ILBJ2vE9N~LOi z-V^Dk>Qikslz|HYHx{&EKQm6W_**mCTbyoeIyKqHq7r{bbYv{PG-5{Gl`ad_5)XFg zsCO{^)$AA<+KPK=s+HV^sy*hDDYRkaPkunk+aaI+$1;U>$gdm5H9@O4kXhzto`lXq8Sbb5l1HK^H zWjS@o2bNRnuVAm5lE-nGz&u(ueOAgt;N6QQ^F?vzlTwFA$z>(yi{jd_l%tmD=nbil z4n?_;l=D6D$uN2mXMi3>iT{*Jd{I35L6&2V1&<%E7`aV+NHQBV`bE|cR@tD9iqT3m z@pDqn)8a;@&(q>ck-qo}hE6MvVgEt1Z^{U4^+CmK^*zOGb=xGFFj`!6Zy8hTeT*UPJ#9hT)6XR~n z2y9$TF&npAF&lSUF%Rdl?@N7tsbKR9%)(|GlFXHbcT|O(?T6<;v@71=!QTfjc&l=C z^&`0x7mJAiOrD4mF!S;@=YThe;H^JJ*@_mv{K6`FPBN$a;yLe9u5nD|^%}}1q8UUW zpEoA|cRlq5)!|TjP14Ynf(-mK%AN*2;8TWY$Fof2@_dssFg<9NjUTr;UH3<+zbE zT%@|c)^fZxVt6L)GHlT?!#3SD?9jxczpEpc>F|#MlVa{!*A#QlTKcxs;huFz zG54&df01(TStk^8&l-o1=#a0szxWB?(VgCn^Z#RqN z7sl&elFXg(@*J#zkaH)DyyUIw^*5b-4LNWfqOLAtN)Zg}_WevTI`zu)-r3%c?8+@t zmCL_gGgSK*aH^pyZ%{XVSVrT0{sG19;7dxs9r{gPd6wODNZ1$>%kS{{G6k->n@z)z znwS*n)Jxv!SqtlZhd9v|k-?Q0Shc0f87zCtv-&!Gg+KE)^wo{&Tm|!r#cm#wKJWFu zhiea@Gv$gEY{tC8j2SS_fawr^^AoOY-h z-iscaMuvRVvroU`yBmTydQd3fdc?~-6Xr(*-P1M+yHzz&mF zzQddreCLhOZ?Hz@vp~R|vV-NiWrmkas^Sj0jd;lwgMrKnXU< zgv2&^T8mObX>Q3Hb&gpfDRXqcCSQqcC^CE=nKd zmqr)gRS{4c-~UsL(#)5oftffsz9i&gwYj7jrSY#+a%jCGyIeDBcatoD!yBh1Pej;iTry)3JOxKkKAFd_5#Rz3D)fMl z5aGiH_-|-V_&<_Ixz$s| z(o6$bT=RCX@aUvir_Aq{;@ph|8*h{rgoA4P4DnFG{WV=}^4nPOqUtK5N7AP7_d! zLLLuD;a$`aUkvl#w68PcEd=}x|98YK^5^+*AN+xkgOjxQL8MKzj@a={>_C>Nub@ysudxl#mbzbX4=oQ1Q^nqb~uJ=z` zr=1RIhLdp9kc;}lZ=OWaFSZ|Gr2;mR4h{T<Cb+RZ{EO zI>B%+!e_cZiO320QPInsXcBHgWc>15h@7-aS#+-jtwPQ}%0jj1`lY1k`xI7e!-&zC z5K39;g1iz2=h!Lh&^?UEQFv`cyuvK#)PBLZ zMzrW4+oe8^I@rN1zxJ8uN99<>F8+y&HJpxxFPzYAW0-_WRz(cS(G7!J}2!y!6j7#~I(ZlUu!QFNIb znz3-)(;SAYPwQjjG*$DX*aCLw2kiWFnz1qOKk6O*y+-#mHj5VC6BB=f%*X_PO@fgL z{z`(83I494<*axN$0mn%|Ad)6p_t20X~xS>f6pxE{;t!4MWUxAi$rJtgOGnrqWF?dEkiZ9n*0+*r`I!U`Z5G_L2~1VPF?^Uy;7cDL z29{sQ%-_Ird24X~A^u_pH?|l)bGaP&wHBVA$9lh6_*7?jB1(@V8k;vyFl+S2;x9@J#rwWDG9y-A4ZEbbR@{-s#WO z)i39&<-;CYpzyv7Mwg=X-|+5zrm_C!H)Jr+5FH=LU_O3U)_NU_a8q>ETehgNse&_{ zg|i(Wx88b4GFv!QCz&lQJ?tGtj2U&_okjlo(>MxPa6oWbPv7NqrE~DYbT9ToW6c!r zQ!m&xqr4xy@YUxh{Ryk``2m%tm|OF%VooCRC}$KAUb3xagAQ^E>pz$;c4<61iyg;*(9g^SC$Z|H@f*?j;4*(zvi)`D0xq3$ zSap10^k)2}o?*G;ilH%DJ_LBe+$CA`=mm;deowOK-NzNPypIh^I-;XDC}#N~=2WlP zsNBLrU}uV@EG}LTrXbIh_)P~|n{w3yBAn#XV|L}6%L|h6h%25euo@Syd_cNo7@z*F z)AA7QF^q2!{|NG&IQ!6RTbWTQsJS}Dd|@^Zub!|x<)SvGZkI}Ujhv4Bv0`4DhQP&W zH!nvUxHS0G2}qZ?$x31yNUJb*?NTy{-*KW9tdC)dmZ8@$7VT0I9+U+653`OXeno8D zamA?jO>g3-3`77*cISs28A|A7bGf=4OyhWW>@99fc9mlLHE0`Psnk7jo(yCV0VtUIPqI%0a{=<_yDap4n z!5bA@;0ub;PiS0+)Zx+6tGEnar?>)c!+HeMCsol~=-k&(0m>&DFo zk(q@zIiPe%r-GdqHmhReb?!snsOA1gHsaXklw-of=RY8sd&ekm=JLm1ScI93 zf7gx2$r_C7asi*b@(Bn&&vMBYi~9#Z0NdOSXcft#uWeP#slBC``=uZS6nrhRl6^<)cG{B{OyQk>|;k5l6A zp5>O^M?NKY@HW*ryc)*xN+M6Wbx6mOXS$Vts5wc?#uMbpIM0#i*R#CnJ-Ff%{U6|L zh@{1zGpB}T1-gWr`A8pgHNYF)vCj$)@|-#(ImBC+i?fBiiR_XyIAW?s6Y|WN!*Cbfcuy>|}rV8MN<4~_uVw;xC zlFaM-F2$I3s8%HkKLvgnj&;~H7{RrekhiyMs)~`$8O3bSd`vs6!{6{9n~SBDAK0Sf z&nw15Q@><3=!9Z6;yuM|#EYMlI=s!lp&54c&69E-6{i*RG(n$|atsi16c_kv`IaaF zS19_N2oQcLx}_Nzbk66<@I^sqjb<)^W@McCwAA6k?9$A}Ddxg7E|5B0n8je16Xntz zQ2|_~qkm5-aS39Ic`{s~mZecAJo*&vzx3tDd^NQHx9)GB+47gsn#cDyy!rEIw*2P#ng_oB;hJARv*pw? zHIKeAVMfg_pQ)iY{@1O!JME1hf3K!>+?IwhzK7nZeY562p4qZwY|Vq;|FG{rS>=Og ze81&?-*@G|w||I#x75t5`RMl_81`?^Y&jCDxqr*uSk1UMYG>dXn*Z$%3r)o*g;b^} z<;bQC6)8^L)Iccu|0(Cb@_*@vw=DkFu#au|?6-zB)C8Cxs|m_~LgJq%xh-rYo}naO qpwA;i2md!fg6|l?7XHoQKZI@>zG>K#brs4|4B{y2Fe{X}=lp+fxIo$f delta 23035 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 delta 31846 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 V>FXU2YnEG@`R1Dcs@eO@e*?5tBbWdH delta 23612 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 B59j~@ diff --git a/gamefiles/TEXT/french.gxt b/gamefiles/TEXT/french.gxt index 6ba7995d5e11bda11284365544893ac26bdd3951..e5573e39fb8c345fcb090cc6f9edbc7d44777b6a 100644 GIT binary patch delta 24199 zcmY+M4VYC|b@$gDC=vuDlnw+DDG*F1WSILgckT=Xxt}w4xL5Il_ETbCkL5xtB)fD^o+1 zOsA_(lBnr0IO~)v1)|B15+(CarR;b#adI6c3)${0?79^4nhuWqoKATbN)rWP@4&*ok6H>26fMty_X%ggsU|JY;@vgEImqk7!K%7O|MVCRj@CGed#|yjF%Z$#KS3^wu^JcD zdBey;cZBsJhg}B@!&f8j*>-(5WA)-<~ zEpkq|LEhz*4-0c0U*~4%s%A{*e!=lXRWt0pt>mf_EB~P6LB9dTA-lF{IX8y)g2x9; zcw$7LB^=u}!?1ADRxRiJy=EBlVSl3K9gtr(4EgkJTAqjeMd42H`@ugAn1Zfw{|83; zy^lc0t9oT8N^80NsvJAfuCJr6dXlr4mkXm{=)}X&sil)8n7c`HxmXF)pg)3sEe(!P z{|2Q4j?x_NptW2wUkKC0^{m4jp%*j<-}%7(51dq7NxCjNdKXHj<|Iq)SvnuQ4GZs} z^`(*}wmbdjB!R>3Xh*{&NK-pQ^UEb8)Yq2>($n zz@ZV1c{ymjZ~Oymk-c;>mCB>7P2R>_R4!`T%b&jQx1k|h;3(5crJosIfgaCz`}e-tVf@nyYa2aW1f++BvRKayq63S8GKRDh=fR&X_zlWFd!r%=o3a-on-dsL6X4O}j!9U8ndI69=!KfrO6OP&K8 zopsC=)UZb#aKB(UU%1u=me-QpRBoMNd97SRJ{o6(olH}6Q<5?Z6^EnoBrP}GlB9ix z6G?i_a*8@Wt@QnH3@mRo3_(S&q>h%gwaba@?m~_MwH|w49(bmRsq% z;aC&(|AZtQ3sc;3gesP!wA^xxHd}6{eU{^NQn8Q55^JHWHXuRwEVt4K)xx3E+(gqY zhiQ)G2(7XlrEQjDbii^my=@CvfN4~!|^7XYdK8oEn{S}9Hj%6 zWAujQX1ZxPPJ`x1TJaWY684+o398tDR$5`WrHM9K4%0!)5jtr(O7|?sXmm{yXlbT| z`MSThw9;M^kZ7XUEQjf=DW#&VqIT5h3@ zmJ_tcvfoO_%tLDvowgjNYnCwpJt2v;MroYo7`0h$rjq42Ewe&xs}g{<3)RijiG`aYG|F<6nk>ht!*Vmtw;ZRnmRo4M5;LKim?dn0jDtri$e_EwKy-VmU$kEVt4L!*E#oQ~Om z7CLJ=LGM~_r2)$%F?g;qmc!I$IYP57M`^X?7;UrMOouG{aeB)>w9sA437V%Smf1`s z+)7&v!*d<59Hy(5vGTASrD4m(&`69LEMsu894CjF{eL9VLR)PB8kc1Z5{BWqE?5rJ zP0JA)^aV*Q8l{9~G%m}{w8V0pHdt;Ue~*1g&~eMHbipt@*FDQ&nzTX^gX8M39HoVp zW3znBA@vBjOQCS&mYlZUJEm_Jl7czOQm`BfKF1EW^0?twT zcmYep2BqVa%UI-&zRWsRmsfx>UcNbMYlyrI*mGPg0O{!35d6Q|lEG%cGaSI%GZ8w> zkyZ;%7Kt@-@pgMy@_XdPHDg6hvnOdTy6uD@O4m|OHlL%8KSVsTZL>~s)=gKihE>d4 zGDHI(Mf|my`9i_1qa8tU%*ZE?t6(o*#IkZAc4^YJ?tD9ROIW>Tcx{Y72j!7T&Z-n( z7EM#^R(L1pKk6ux%BeCV#qBvRkDb$@lggJ|n0NaJtW&6^3pqLyygg>5zX}WAOcr|~ zh0O| zay%XzLa`z^pG@%!nT}g| zoO-RigEG_ zN`W_9cW_5>J%@YEJi}%YO}btRN_&C_#yu6f5j;0;%8*T4LX=G<3%uw3X7H17 zQ~kEJby|WHZ_mbC9Eun&V7pW??3|Ac!)zf{#TFbL{a5H0yE`h?3VHtxE@faJ(Hp|N z1wQJomUCB331eT7jte8ZwCMjT9lyrA*0=S8+KFFxPruAQ?~X9E~-D>>|^;ewyJ^>7Foe$?fQ`fh0F_;0Eopt%Qp_7F;|lq)-^?UOm?c5DS>JANlJ;N;3xSoE6WV!G5HX3P%$ z&-f{!^}+YYen@iU%2khsNknkz zbWC1$a0u{%u$${8ME9PFd9+Mr(uYM(hT2R5sE#G7cp>j8&~D2P zoxNYboJqCQ@iD@f9lR$AXRzD-dV|O@rJ82A2fkhm%4U0Mr^J&jy42qnCHOYlC&iwH zbr~t@Y^j?rj@6N7U5DN^`kq5K|C#GPUCZ`%)A~~fn1MEk&o&~+uZ^Ukm~42rs&3CE$>JZ&AH>sbml=3N$+Ef=x*Ko8!mnG6XCW@8eI?{Z12OS6- z?xu;qr@1p#rgtTmoy7{xmOAb%&!Xj$OB3kt@Nx0aPqFWE?go`~n8uT&Y-ZG7_?9n{QeF@Wnb7DjZ{$Q!$ zB8--jz)2PDk@!pSddH2f$tri7GM#ZOl0u=4roS_O-SThbLP zIfuqcZYu2=8f>{r+wRjwR5~kk(dZXaw8QA&cyEwYQ^ifuTSgz%almqgE+7NS|5v;M zInt^tD6Ti8=qe~Kk``M*N$fF+p=uUcF3<+cm=vUmO$HSgbw67?qg(W-P8z9O zNz*Mc+O3r6^{B*&(miP8)fCa$c1eys%z~y% zNqE&Xjg_|IRSPuTG7>Y!^_0nzo>D~*dROFCl-$^liT|&bQZ!j62vrOo5h?a+1*=x+ z9o^XuS}OJ3okg)rm+Q`_C?Val2c@z^s`RPcFmNx37^)C5P#Dn9f+n3Hzg3o^o)E^tzh= z=TKY`S|kDKa+r==j?j!L`h`qBO!F;AP~U7&4igrS4vD;g>smK0M`(fQ@U*>CjBuf| z(6FD3(6Pxn0T(xhu3L`Ku2Gyod##wP&;j8}VHTY*TxzE+!miUz$A!IF73%#9E{TFF ziF-Q~_tkP`Ix2<~!WB$3 z77Js`kj99@p$XwihUOZ%1OLBV)n!q&%wrOe!ydypWl#~u z6)7V+9ccNNg$v~jogc;}R743i(GAPE{G_}a%W=QJGEPz~W3yYa&q~d-(gwt7qvaM_ zZ6mGFBFRB99ic6%JKhmRM<%&nQB%&^iz!gcL3p1A0BImAkSd4IrX*#23!^N75%WQWn;~c48C+rq*t;2GR zmI?cA0mmvfAWpAaZlPQ2=VHqQps=pFEZ<1mk(h+&H znyAw<{J&*%UCU9rVmU?wB~EWvGc_^$$bmO2PAMDELiP5A3bl#V)tMdSSuWB_%N}h} zKBJ;G78VJ!|6eW4{(pxs?btAv!Z#$8V`1*0<=^9e z?0Olr{DfiDH1-jXVSD+v+rRTqB%w>m!%UXqV_bcH{8)g zgTF5?cZ4ZnIYRR+M`@E~9N$f5ujhKTjwEe2@neE>G#`1N;4s9}WFHc+4ga!K5G*$jwbT9-T zP;-8_mP95uYJ>QohlZ-vm0L@_9FUIqLh+ zXwiq?Zc>X1^kTT!-75EB>~0JboeWCiu*Ad8r_`d~&A26MXjb!oua-r^XOxriYB{{{ zf|@pgaiF(OUT(*h>sE=h9i!rKk#|6UhFV^st79u~pS;@%`FYV{Pj|yGBkqV1a0j&7$T8^{F1ais_Yrv+)khcA*x{-D;|n6^;rpg?&t9#9<$X*N=99-Y zQbHBCO4nK6NBwmnqCP2JCo_}QOAZ_q;~uFR2gaRj(?!Rt-L00(v`%f)d2rz+YLxnR zQQyNP9v4OGh;iI72T6N!(b)ZaO*&F;jqgkDc`Tn{UdATTAZc7YF6v6c9E9BgEocg@>J?O~y zHxKP0W*o-hjCp->RS#Q;8)XYL+?JrsqtwlrdI0$ z=i_hH6^;aBXXHY+gHO(w8d?#23yYlX!P_%x{-Hsv%V(81P;)eMQd@0-)lvjaK)~drA_rjm|AAb-44ZYBnoC{Pn&~Zr$+isAF6}I zNw#OP@Yu|us_2`BaxT@$!d$AGg}GGgAJ#ftl8c17BwrM61uxTS zHH7(0wEl-|1TF>O?}}E!%_Dra^Y>cL37-hQo1Ws2+o7V4b7QEVq?qf1u4;J;%iqv) zt`{1uP3IKpLJs;_rwB(wE8%I{JIbmL&cOKGUM!Tc%Smr#pi{*91O+rl$#FJ?^SGn9 zjL}|nhvUKsZmK9Hx4Y0qG&XoLGtz$}jo>m)qEK;LvFvXzJNS4GpIE#Kb}&mu4tl>Y zjBJiSDvYA*NP@9D#;3!F4Rc#di5%@^fnk`q)G*9CrrA&N>G0^ZyZ|q`-!K~36~j0V z9GwvzoDMHG45P(3*{;n^kpPs(J0<|-w7gy9@Ffi$ z!YJ62!Asd^@|ST(1z)8gN7&$>h;qm#3)~+j;UG|Rm=;-%&<4x6H)=UX7lSY7rabT} zj@~=4ErcT~@?K`fvK@bif*euW-OgEw6CEjjKwh(uIeJum|3**=IRj)GxD~_WuAT$~e)+ zSpp;Pw0)_TN5LCEtC@RX1b38Jhx^ZIk@KyDZOvNFwY2irS|9C>PH<+R&zBMw#(n*O zc1Ppi(@LmF9CEQ7ejVIdFO1Zdj?~Ns4g4JIM{o%U#tEY`Xy`I6XCHE1^x20jR`KgE zN%so#IT+>sUBAFq9~EY+?+UZk`^V{o+3J`|Kz~B`jxZaP`#i@JRR*npUo)4`d%|2o z&Tq7w(|Ql=^9!6<_YEDui5(N>#D@KcmU9WcqY}_#)Y9cFkEyC@Q#vtqN#v3+C)RLN z>u_SLH3UhUMmssAcs$;_!G;^^JUZI(beJpnf=y0*0 z`YM-JbB&Arii)RM8P|AA>#%Vv75mM&-bD1O1h93Zf2)0Aq%3loNneJMowOtJ%xk8TB@gyafKO1Z34 za`7?mpA@G0?_qSomSZ80#ZlWU|JbMBu$-dBCyYEz1OC=@oY`Kf} zTXyIj%Pvi_apIW!r&G<#Rcf?3?xwe_r9ISW6YixPu9kH2K#ac&!F?q+G%t9(G{v8B zK7`wPVb#v|33EGp=oebf&1{u0SL+R7Zf5J>(K_7B#{Pq5Zf36vb2Gas%+2hD3tESp z**(p{2g?tK&IQfo38CY`Ed0AJ_;UHFNh@AsO>|jIO2+<37)@n^VKkM&uLq+mjiE}A zuS^MT3%*$STIgnQU)O{od%uUQ7P%8)hc#&JniA>@KHW7T^j7fIuA0A+3j(K4{I^80 zE|i5|guJFl#~WW#T*_lWKDSCS=6LW1T8>++xUHoapL{x4A}O7;YWFvuX8nxYj%aV; z8g6GTiy<3}3ixbrUl;qf%xZqfD}Lw8iaCCYDI+Ql$8=Cdq;AsEO3gUyf=^XCyg7=R zQSbIB_g>nC>O}l;IUaFADlZx>+sBbvoO!RM}1vu zwj!Q6!53$_p@YFsW{n*BCU#Q_xIo8$-OmI!W-Y2q{3w{yS06eOe4%e@XZHb)uUT2Q za}+Ga6rHd7U0#j&%H^5tCHAj}PPtq4&C3t74o}yK;;$$#?E1Q)9}lk1c0z9kt&dN5z!|8+ zW3?7s7c-oomBAMtpEBgc$BiU|+uScbK62=FtRFb;7;b_toDrORJm(MpLoMR5`*_}P zl6H>P);A-&$F>`Jn#M~3sp?y!b>bLj$A86egbqEZ_2bA+_awtHnm^ibl5SQM``I`W z$b8rYz)_DeoT1(Jg)A+!a$KL6Vpi*EGz88QuY>3R4&HUT(md|(H;gWP)iAnnYJlkA zy`uvL%L67Z!#@yAsx|rpehyL1b9nJJ>bzlmj`ebgipg9)i7CK2^dzhY@gG{?g*vdq zjfWN}=Isi6dcOzqbf(1nN~88Nw=16i9U2#!DZcgi5Vt*$}{Y|9EO{2~Y@Nctbz%e>zxtX@>oIxI^L)uUhV__8U9V18a=ITU_(p_&DrMpXKz~kxLw25tOHIDEx#&u##te7q0H#zXb4H)?N zV;*er;zwA1GjF6ndKx77?1y)?HhqVgdj-~{-_?xRXz>AI$#Rjl7{-jT;W5$aEYecNIgG;i8KK~3e=xy6*NRZte~Td5QnshYHXg&? zP$|#5L})iNLR2c|T^vu)CB=9^3~!=<_|%>MCT(KIr4;-fzKwUwIL$yI=AKn@aFzy) zK>X!Q8QY9>89P&@a(nR9{QLb;94B_Tc)xM8;%bRMmzXPzua__d<~X}KdWzxTy;SB+ z|2{1HHK&pEn3ISHA4io@92+qT8q~^)^Jsr!qKVuocxnns-V^!|;T>6SiE8E4c{mdGU z2kc|9aNRs$Dmun6tVkK2|{yHA@gF$13k(5uJ zs)+RJ;WgC`uzG+&?-+*GHq9ljzw=7pW276xP@#>g*s-cWz+S@$IBpo3*?OUl%D8vQ zf4k9X%9UX4r{WLBC)80TjBn!LLdIe!R*cSn)X35I&IiBz)RYH$Ukp(NyWlCTQTAHK zhvLD53qRwJJ)=WwO-(e>a+sD_#ziR07zZrJXxiVKcbjRoWsJ&}Tj-&)Mkhf_EaS%- zH2YazdJg)TD4{iVTaM69%TapQa*U>*Gy3=q63cNqZMlVJ{M_i^yA;d#2?4{{hd=fM z)OH2GOqGP+>O0IYl(3A!2a*H&fh)Wup|%eQqhj_>M$1X!1Pp(t;qkz32RvJUIBVP= z&fx1PT7{WcCFwbN+*=&|2y@lNxfdgw9xKhO zoIpl@5?bL%v)FG(!Y9r^o^>jDxW5}1i@^LdS~MN5xsp}BnJU6Aj2Or|`F1s44P$wM z&r&>k^H7Ke;m(-)$f*CJVB4a$@X3!OysL_Kh33PVa27^uvbPg?!Huq zk3%zg{6rD0{3pXHDqJ?4rg8slI71iT4ne=@bMvMfKjVNR?%TlUp_M9z>DRSVrG^AL zj~#VH<#L9sW_xZ0a^)Hudr}Ek|RZ z<&SB`42uR$4~8xoAG#NWmrQu<*}vofeE{2VP%}Ce-MfSAK+dz1{x4}cJMV-4t>rw) zx)VINWMp0Z`CuQS+aCO6$;eP5_|=lBIJ^D*&rW!79CisD>>;2oY0@aoY)jh%n%R~+ z!KXhvHMBMO_GhPz-hjoagN-=O)7g+_)}J&zc<;00@loLYOI_^WeRAnDPc-b}U|!K; z(?OW4aPpsNIY;rXDvG$;I8Ke@B;#u1xc3h=qv_Frv06VKkJBoV^Kx~6kpJ9-A*Yl< zakc$DIr!q|riOL}-}~GIe*w0AxJTm)8k&!4bkq11K1?mQjv{awt3ebvCTkcG`Qs*< zteJ0L(6dV4O|$;MF6f~7@K)PZcp`8Wm*Z&uOUxyl1Q%!{#y(fiL}(zUu{hoJRd2Wg zr-6qs`@x4n-@<^Q9`HirZ^3Y$e4(ITGalgsuCrX9jYfWLI6}`pXE;jrTMXkXx?SLcT6xo@ z7nxBgD7lO<&+aeofpL)MxI16mt(EXm3oSH^{&D&Tke8D)d9*phIm3sh+=Pe0CF2e- zuR>@VdZ$~-X7Ou!v^V(H=dr1HlqHV(;l`#ngi*@%Zz499qoFPNad7eT^-pd_Uqt6D z*6n-occfBoR zdSW?B=Yl7ePn~x&3(an{5@dBOx4drsf&QFM=63#ZK#G48mSDi)izM40MaA{tngOhO zZ8LOgn5AL1{_04`6<4U?7tojOllVKqz2)`(P%O^8Sg%@?9=D9oHTN2Miux?4DQ9%h z>dqK>BuQ`lx#&kybis0(mK%Mv#&i2bCyH;@{zCCs^!pT@+;0NXbj2|8y)<~~3nTr$ zod`|#=DD435=Lwk`KFe0d!8-K4seYy_w=)(&%HbITAhjq*EMM}4q`b@zQ=P2uG-7u z_ZHBB>(I(QbyEP7X(g`)?JMpNjRHm!qB zfvZ=VyTB)e9q@puT8vL^AHiu**_wH#9(8rj$ zw}bc>FAq70>6BNjrK*_uoDUvcH8s2w{mU!Q>O(}-f$oA&AymI3G;PJ`P2(-&=XHYT zR*ih%06GUk-40a5sE;%2U%OZq{Aksb(Fczq;c80l_KIw?9HE+bwR zo$gGLVt<=e8nrhI z-UE50>ngy(FSR(-zky!>L%z?0j#|ng^K4uu%p1G3M6()}R|<1+uNCIvK2=rvJVm8@ zhEYFG71|2sH`Pe74oDCW@PZ$rq!fenjVK!p;A7~vm zVu3KvzHb|b9rNa6Q&y`cTjUc)f@ieV@% zS*+jX+z)$FGgsLeVa`~mN{g38sN&#>H6IRbedfz+UitEx&`%!>*8F_f^WL7&S_5NV zxw9uUc)59;_+zN)ZW%0!E5R5h+DV5D5|*ks?hgB2r8-Qc5H8PbpHQDNa*L|G%~O+I#W|pYK_F z?Y-B2t^GRZZtWko^|!+|uMLm+L5RXl;U>agx8^YO7R?dn3!0CQkt@EEwD(xnAIf=(e^V#D>>J4ild@ zjOsdJ7*%xb7f8Qc;UwvWpCElV96USl1Ci5jLhgoDm3f;qbFJ5XRWsN6^BfmCIq=cT z!P$Y0W6lg?QKS||EiU^fP7aJlxqCkt_MVmgn$0>mf#Caw5nTDHR^|3~R1Oi9^F@(! z&L>39Ij1EqxA7Y8hOX+y^v2IQov7-DSAMJHsu9b-Q1W0vePL*1i8~khiw9we#k>45Z zzdZ$Vuj-X5QL4KNu5#)anO{R&^(5vnFBC?_Q127asihJ{m^)5$sZb8nyU#M`)ww;M>3R$YUoJmlLiFJG)RbwMwFx%h00Wr?Bu%^uA=G z=yqf>H2k~Fl}c*1OIyCq?4g`Qdsv=voH^Ap9Y0+M_9_W<#VeMRG~sWJJVlfKTXC%u z4ZM-l&*qDrDA9-rrD#A}`4n8^P15dv3GUQI)_0YTDei?B~2`^s^)4n5yBeeOu zhNDzGYB+{c{BY33p&L-Q$x^Y3BGQuJH-knuTz?X2x}NJ{{4C_qYA(ms{rn^XJ8)=3 z4~_(l@15}20u(QmNG9{>Yh$-D7nF;d`rS{x_qU;;>)v+=Kj)0s-8RH3`CLcb&7abe&5N9K%b())(d=Z0Mt zImXl!!*FL=&A*rM;Lg^V0JyUqmxH&4Oz`{BXh<*PB|2zOr{eAseEq%*b2gtw6)zEX zP_+6F6Xf|KJO8a~k!QY$iiQK20(st>(+As+{RVQUuT;X=+-w+~OksH~!ChtLC6?DpMU>;UkAW-crsk#uUH+uva5SEvfs2G&64Y+E zH9=*|NxGuh562Msz68XYk~HE|I&!QjMG?zs>a?7pQ_Gc3B#cDgw49{n-7L?fo0`J3 z)pCUPS&q^f%Q3pv?VAYA)NcdgG``2kTd3V~D^)DF(R{<0MAukGZ?ue#YdK1nEXU|= z!+yA#2KGv3VPtH%h2oZ5$+3)#4M&=2qvbH|wH%?-mZS8hd05s6^YX% zJZNsAS(aO=*K!-JFdS{7&6dM-&~k)MSdP*gmSc3sax;zSlf0sFpCb05g}N=b(gMqE zw8n6(iMCn}(^<yya$Uw;ZRrihWjUp_MkEl{Q&!qrHZko9Ke& zFx{~np}}*dG|f?JupFbAmYd159H-TmTWFVWA6n_SWYE$?<1B}1mgNY|wH&2QmSc3lax=Yd zIZih$w@_Wpq~A*8YjwWvbS-VvY64oDsBAe*3oS=zwdE*nu^gkLmYeCa39nz9Uv}MeN3yn^krdV#FMV4D>pXD|>V;GL>u4X?Sj-Xe6LK2EZ zsMT_mmRXL`PRq@7$ucJ4r%l`znqs+?=2>o|7YxI3owbYtKkZB8XoTWw219d1qqNd; zjCNUWrjwTAblY+ZO;8gU$8DvhmfPr@VK}aZY662!EKC~>`>_c1n}=AGdKZg9@LZcL zH`5NwaXM zj^$Pwyu@VIM&k{`am}(Ern#0Qw9InUr;YX@M*A$Isx8Oqre!#gXCyN?uCbQkKMcch z^;!e&G|w;`*DA|lddYHxj$6h8#Bz-83H#x; zW*WXsGHZ)dljRnwSZ<}omfL8Za0HHPhvhJxupFVwmZNmna*T$3R_7IIYNjcl75^V; zij!jlT42wk!qrCXL`G;oz<7H_6; zmgCfExrG*3Mu83c@isczE+v5H8g!2n%9XO%_O0XXT_s=OW67C$W+$D;j(PBG=0eWJ z7Vz3{SRWCvH5{XKDy0%Ox##|sb*e7!04MSGt)h;GD4hm-6&D*oIRpk>toYQ=p^$+7v{b2D(g74l#`{?!B5AI_7`L0 zo6g`Y1c^_&icl^s{uZ>eJdFb9X{|7xX_s&ZcJ@=1em0GSX(#?qXR<{$a@qR_fSp>l zSfKfT&*^w<2u&)0^NA!MA*D--{Uo0m&n-(pEkbYW0LZcMu^gk;$uN#1<1qEGNeHJh zD@Pc4k~SAjIw?A2$Wt)L!s)1U_jS+a(Nx7Fv$b8Ou=`Sur~BE3V;Y zI%MT>>ag+_YW=CsjE{uYy=C;1Z>s9jI8JM->oZ%#ObC-9^ z4j;CT`A;;E>s5Hvyv2itnVksErZNfFOG2q3cx?Q$p|^q;$4?vj+?Eh!k_m^;yt{)R zkDu-2z+9zkstv!x1J`(&0mhofK|$NxEuu4GG9SXAD{Tu2oM!i*Wg zpG=q*st>+D;p?G6L3QF+{jo?Qo6O?~57|r`K-o;97IDjTNI07Apm9xF9)o7!9_!!$xafSYN8WvneNw@}e?D-D~V z4ayeUs2`J|&bUZB#W?QenL@4~yLM=-|WwJ zp^b)9Svvk+t)EI2=$4VE%d`p8Kj)Ro6zPDGXTv_7un!SBXBmf(mSePTkVHnq9ub35 z&TM+^cSK$&(1Xc_%hWl^aE0y+HSE%Z@xn!q?x{lhu&9!z6D9*R$2?WNkoP#W)pCWr zM|9+LGDkDV3S)J!^a;ZbCB?WjmQ*K=yeC0}#Gp*3m&QptnSx8}eNlpMqbXu(2G+%- zsx!rInm0~okZ~)tNHV}J60N|AJ6CC@x0`y=mdx3F1s7q$#T4x}a@=U_l{B;HTdO56 zKU*%*^HPmj+-}xO2H75$j!4Ei*P;8;KROaPHJAR;k*v^a$*cnlvGr2Q4iu)}(fz5T z6s3xZ3nLbqxRoM3*D%0WR_Bu*O;JNARm0T=Es#X>SSVhU>dJR_P-9q^EZ^Ntdq-;S zOqOVoWZYRO(^YBX&e9xOC?)Q!7HIH?wZ4;ZXs{UMBz?ZZ)|NV0ZS`A@P@NjbshX3F z($ms=on(SKBx5I;qQmc#M3WtKM{3T&y~z?IPZ#Me>6lKsN++c`oJ^L^a3OuPnUhV> z(}N|U*$&;4&gjhc=(I5ibIxs(C_3Fa>6i|#d#*|8osvU!#!yssqbVg^`(&whr;?*X zCNI>kf5}+wX6dZ46dvl3^l%4rNQ223E^Wex#n7HKHA>tGBxi*|TY< zl%|AnJXShyshFkxl1>Smp7YWf%ZW5Cl_7`QWST6^TJ{rFiplURW7Dv5kj|i-tETg*8 zQgvli*IKEGGHRm1WY&|VTgGU3$w5|Lp}1v_#!C%#RS{Q46E5>S?aZZe=bcoX`*(UjJ%qp6}}8Jx4TOBrET24JWU-e5&BBFP1Wqd_1==6?_tTcTRfwO zwODzw=w#FM_J<6kX{@|LlPy&|r0 zd};6Q460p*Tz5W6$7NXdpjPfkQ}%Q?v_P7v2Tjl}ZQoN#(G}@WeR&`64Veeb*|-0S zr_{7l>#5MX4=8r=Vh-(9y*CYx(s|1^vu*RWFR6`dN!eeq`^ z$2>CmA{fWXZVh9!|0fdQW+-AJpxO^wcIlnjJW;W}M-LmhIlx|$ZWwuQlG?Q#XDfNS zrfLNT6IfR+QLE>4jTbK-c5;YYOJ^POpED0|8iQ2NM}X5qCygBLxmDy&x`#F!M&vu9 zQ^rzy;5$0eN-9lf#E1$vlac4sw7_ziR%!NYeAu%`0{E2aoaH{cWf%*SV{ujDnu}pm zmJIMJ4c!#(!7BOa9yTJI=H`2;k!vf9;CmLoLkBU+xUgsJ zcw^|Qz|ZI&Z+z;cvMSdP&p#eMe3W= ze5>IE9qe+pj1nCj1$bg8)}eH%Rm-veqzPfeMLH#NK1ey{n+NRFZ%E`)*~2TIIzksV zlous~F05D{PStWAT6@I^Z0@P@`&#beWwzCpBecgd?vX6xI!D-don{&%8MscIl9pR& zvE^1eY#1Hqfi#m_%F!$_6x%~uFKz64m^&Xbf7iF>;FOx>knFM zlyH7ATr%*mEL$(_-R-96oYdAFlz!nbE^$$Lw^hP9xZ4}5$%?gH5ii*Z^I7XuH7^uv z#Z;cUMZcKwJ&LO_TCCxii`rE`U{28(%b2N}bY{G@J}QyDIZbrVa+uz+jG-$Tdvl_+ z&~l7ku#BTwW*;T+=EUi=4QQclHlZ?|_@K_XI=h1|TP{$)Wh^?B&nT;dg+5{S|4W70 z|8EfHvxHs3?3DaV>Hwjv4iIKZ0GIN*YVWR^3*T^jG#kO(L*Dmz6u4d*J^xX|Xv-PL zwY-*0(t%eDr|I@FVH`x9KPsF~(F>Y=57Q9MG!e2H+HVrdrRZtH9ZhuGa+n_dz9iHU zp`_&~Ewzm6JKPztp|y?#tupCjfwRpRgbDA_4CIZGT?Ul$*gerGM z36^G!9G3|<{!-+n9-90u(eFyr(f<&6SC-Zo{Vs>*TAdPYwp^ht`*5m_D(b6sxpdeV z(N(1eb-c#%KAJH}5_NH6ZLG$cV4RVAd77XWDbUAy@cMqy#}qvCjN)1XgI zq|>jZatWVi{sDI`w}v+q>AY|nuU+=;)REJ8xpts(pKdLkOVFJ=TAss!L!CCFmWOY+ z@)ug3$NIlsE$Q5vlfr&MIVdnre0O|Z>o}zh?VP~uBLG`yN31I%g9)NkET!lTF^JCx zZ%PJkB1dPW1THeTBF4EHkDiyzaK}aaB(6KVNcSe{j9r|?k2gB-q*Hxd0CDMEl;BO} z-P{_lV(Ziz-oyIQr70>QFg`I@7-4;8%<+#3W4pdrt@S*G?J>7D{koOB05`LK$Na+hOVzng7^Y=qZw17p&7Aa)`r9UE( z(R?&d%^jXPKb|Yb@$|hyO*USwjP3nVNt16LNouIZJq~ zRAWO-R~PSmopxdLm64W9G*Hb29$a{l4oQ2vXz$HpoQo>GBt~<`+#tre=D1BFEmI^xTuM-%4c8!oG;TwHad^Bq~p;fHVDiM*Mq`kq`z30 zcgHc!SpQ??+93hFa$Wo~JX*ej1J2p><}Wd9!2D8i7T2kYaWHwSte8*RY5%LxaT0C^ zPT7k*sW=HQ$tNj!=B%5;txx%T(2?(NChtR9^8L;3KMsz}m={_TJo4n|(3RkcC%+w< zAN=&m(f;J3icsUrnusF|@4Qc#FK*6#ODDw5x?1#I=v*vmeg0mVN&~C;HT-kCIO7NiH$dMDw#;mQ%=v2$#s?%Z zqFsjZzFlYVtC_W78^6q{MrwQyarnzY<)i27u6{2VH!B-j6?_8UGSvs)oHZ>pIr!+)SCRihJToUH*dA3!x zoWJLJU32i)i8=YP9VktyQovOKdEbCesltwv#{aoyOfxjRi*>3M50`h_z5(VBGoW*K zGAakm_jPxIuH?kWui!d7D=!!fe}XyFi_ZXX=*XQmI%S@@eLX&VM3T9_dNigdxW`G z>n3YC*XmeduGO`|T&wj@XdSM}K4GrO&BATq1v;-OVZIaH_Zl04mjdv2Su5eqBci4M zsO6mT@!&hDY5wq+RMOlQG^{}}w*_6$@)njK)pBkZ8mvv{9O*pn7_mVtz|r8Sd;sM- zN@@(Af)mLVoDxns=|mbj1?*2yLD!TVcT>2JJAjulas_t;UKqifDoV-icDi6h@JxEN ze>8>Q5^kctXw7U;zcMI-mw;g0 zXE}pN4UIt$h1rL!5qKWs8#%%SZ<*cJW zAv`C{2E{+8?Q( z9IHOBnM?UVn5+GQ=y0{q`wG`qbB(Kgt4gO?8Fx*XjhlR*)A5^YY~3RD(5!0WoG{nK zZDBTU)NgghY}{&LHtv`(58Ahd`3;tpOIcsfNjo)jE71kbY(H(9q}o;W8@j6lxBxT- zUzl~2aMXssfx)k5j}8yS8jB@-R@?sj9EzJ<{O!XlZp_?O2mP~V&S!DZ>`WZ`@NkIo z=|l${AFT{N0m+${At`1vm79r?q9>~f+I&KkM_HFwvIaS?jQT~<$q^5Nw+Ph z@S(1er|E{}40(TVe-vz(_v|DfbPGV7%C`T;zf%I8f4herLxFwU(k z7ir{=jT~2$mdiB!f{}O8RLd3Wv+UA7%edygFx^C`(ji;=ZtAoK_0S=kaW9?y1?#J- z$7h@GExMr*!BfR){@s5HQ72pp4}!icnz^4{5$0|-<>y+?&ALaJyIK5AE$41_L72PQ zqF-n^ceB01+|8V;TF%|Y5lj z5PYSp=J#_&;P#3C?kLuk(vMeWJ8OD&T=zxA#XKhDr&lY+8V_p^Eyr7|xJXuvPd+Q~ z3}0ZKlRE{{F5=nf9m6Ua+9Nil~k4Z6H(Lr*@hG?lxV5`4v* zh^@fO-spzd@3I`89W8X!FrsCLiyTg)e{FEbYpgpmG#FPM73vF`t6vR`3Vu|57VZ9I z_r#%3zmIjbuj~k(>7F)hlSsHBZ@n)#&^^!ZI|B2nm1+UT4?2kmxM$!_b`$Obn|8co zh&Pbn7Qp-x3Uy%h&0K~4>DkO`{Yev^t0M<1p&Bav1+U&o{e)k}Y^tblw*J;Wm^Uy1)g?LXX}D{a~9XVekz#PH!2hl zKHoRJ^X7Lry=GD&v^++0|J`siZTk1%!rW1HyJiMA z=T<`5pzW!NkJSy*;jvl^9kJX>gM!aLHEn3`M@=YhA%mBn8a-^y2_wl-|3`y2p33@r z)@xBSEH35^Cur9gZGAI}>+CS{6djQYQq8wk>%=k7j`$&LM?yJuJY z30hxP>}TT0;PMy~kfP1+H=L%Jm1n5m%CpqZy##f~d$@XZ1ZLg`k9-g0m97-e`*RIr z2yZitA$-p;;w`QpA`vj}pRNxYYK{K$Z$MP@D!lpH@lS>$bn3eyDkQS`1eO5DFp{tz z#DCb*{GtwA;m$)h74vZg*53OdPo;}|uC)K#%sIt3e$A}6jr(pfyB<~pbbAtW&3E{Q zder0Uq1c0y&Bm3;EW&!z}9||WB6@+)^L zvzCm}Ev$kx<8!iSaW|kJ;G9m_F#O_v68 z^kfn;?NMeT28gcTE6Fv;2Q00!p(`mj-5{s@EvF+70Y9 zjM6+X46XKuqJzG2+%O8TUl%gU1=#Qhs$k$4-VL%3_*&K~#p(I~lY~%$^M+A^)!HD` z6`BSv4h2xVg!6wZ41=CCau~FLRAy?&u-h;Un)M~t_YoNuZTVACLI-hlXMwz#UQkM` zgIiN=D7b}&g+w35%{6gh+yNs;_1-s(+Kpp#sSHK!ZqWtsc=xDF_Jx&cNAFG0&$&=r^-MR4n9OTu;zN#dtsp$526h>&}0pHZkL+6#T{d5x0cf z3{+x#gOY+65F;=Ky zIkrd*)T@IUBmF{?K&N`)Lp7rFLe(oBe2v( znimWs&3j+KI*PB?(@1o%N(hWZ8w?}Sq+!f~JFuiJs&#Uhj#`e;Ma%fj9m_E~gr#w@ zrq|LdR9=}bcI^w+DtTAJ$7W%TdB9TipizQ#uN#JO*9^nBdxl|Ly@?Cs#u>&u*=`uC ztfFD8vZkoG`7Yk05Ehhvkr(u^s1py0k@0-P$auA3WW3ifGCpG%8DBSyj2{?A#v>)O z1Tx*CkkWiEeihm zlhYn+-5sJbPQjDdqr6}l?@9)bFZ#59;io#Z*3?9oEr)5`B_of}63h77+H#C;TgK<1 z|7i3vD_d@%E0$Yn+-0MK&r&t}8QyxHFahXI^*<9Om|L_Qr5%>>8zh#SDe{KVkJDPq zEp*p%E6v2-o2#G}ZlnE%aSrdiiqZH!{dS74tTbA;Cb-=a2j7nQ6C&}IpJ0EcyDp=hncG`?!9QjBhcrcfx;Yc z-ms6Q^%2}Pmu0ziUolSUvD18-Gf3-CLYp|z49?q;aR-*-;Bp@B?=8$lV7P+k`EU3u%@m>W*Cmy9J8lPp49tc`~n`{&&}sLXe!20C6mDkA{ISZ9#t|q^%dJmbejt9F4FK) z7lq5-#+ggUAtf9Gu&sN9 z+0=#)YB`&_e1>Lp1{(OJW~{L2r6+@7ODBXj1>vO=pB(eo9H1{?PY7dB(ZhF99LRZf zvh}dmVds7Lf3%zzSsQ{EmyWJGyDd0?}eG z4?eN%%O4-Shl6=Xi=H6NO*jPC{w(JtR;j9ptApc9!dxwHV=v7*+=BJvw0=Aur@?=$ z<-A>;5#&ERap-Hxptw5z9vgh&v(rQCg71BHqTh{UA0E;8f`)FO8Qm0qg%3;1t&bA8 zgxw(4u~@8OM#TLv<~Ys#_5}^T&-(Ze`u%0-VC}_6ZD-+Kz*W2)M`?IE7oS??iw+IJ z+~?|*2=&8H;C9znqv5iC2(v$I!ul2gsuK?pX89t`szaxRS-xAd>f39CS>Df_?N#gK zEAaDfN2#30+Yt-d=#DbKjzqEhm@w1>A{^oXI8T0|V4G$)3ZNm{7 z^P=G>?Xw)CE#HLPQ9Ey1wwoE1f||Sh4b8l|e{CO(gFMT_dFfsqfR9?J|1X3wKIXp) zE+uC3Y;&4RgAYx)3lm&2-T~%a2#v+)bjz6xeoc>BgKvIrbi=|EEUD-pZagE5THf^| zq{ea-MhyiYUom~bjSMuq(MwR&Vche&^#}UJPUal{I3S(f z1xqmD@QWlnK7xkp!D|Mv>hNah)UZm!YW?_V$Q76Az!m7r@yW5D2M zlEsd*G_Q41R9`19%G-#GZOn0GD)1UJY_9AHki$oRvSoY4T&we*3Ze zI34rg;CLZErArvbtqFeqtUL2iTub=SctVS2zL{7e%r_G+2=i(x)~a>j80cVYuy|FY zU)QEZ+-s*8Mh0_*c|tfWj6p$@+O>WcxL3FW-X@G5L6?N#i)iX}tzQMt7w!f>(ELI5 zuFtLK@v4g){0Fhp1Y1)x_F}!CZB@b}@jzuNa?4UUY|6ZF+jLLPgJ zsM?pudt=yU1z-8%cRzj!M<6{J2aC%Lt%Q%p&zzRvJ7^`o+3Cp_Yxv0_x-OjVh3R-T zkL4A&j~tPEco}g4-i~K^cN#Av{wdO_=*|9;;G1hkhmHo{Uo*{rZFY!|g!)@CFGO>~ zo$3~0LmzW3%xlZ~k139@S396N%10Te<|=t7E4}uVW>%W1Tw`W?9UIf>a= znWBHAk-&bn52vQ{(0X&=Jy1qEuL3IgrIrc}oWc>nkiX9_=n$n}?yee7vf-p8HCq>Tg{pnsU zXPe@4H1jOHNEj}JUKi$D!!xP?Y#I&m-r!Yr?SKr-ns3fY;lrg}F34g}F5M zg}F54PicLw(gVU=fZM|C?iv?s9UhR&gxTF)73MVC^ce8v9N<6nuQ``$HqY{H3+8 zd}(dyCyxiqzTdEY^}f(Tz@%3Oe>*f}g%YLTU$>q`+aVhJ%J8vu=f>l)DOh`@e*4`g z>lSQ3KW{**k-P%Qn4x%@vAsCE?kxo?9F;)B_J%^;bx0KKf8}biu9(7O`}T1`UF-I3 zAE;ZjEjM7uE8~N@&H<1&Z9lZIZqW9N+v~<}Kew&!tQEZiQTdRHIXE{UwtZW6K!l%O J!PDT+|9?(GEd&4n diff --git a/gamefiles/TEXT/german.gxt b/gamefiles/TEXT/german.gxt index 58cdb4bba8dd273a35948df38501a969cd429162..102866d86c4ab1f0b16cd28152867b8d94f89eb9 100644 GIT binary patch delta 23357 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 E0aEXD8~^|S delta 23393 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 UuU6{|ho|2$(MVoLOwTX+zfxy?7ytkO delta 23307 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 delta 23781 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 IFF*7D0RG7R0RR91 diff --git a/gamefiles/TEXT/russian.gxt b/gamefiles/TEXT/russian.gxt index 026222acb807edb193c032a4f481371bb7c9f3c4..cdef169799dec49395880b93ec29cbf115b212f4 100644 GIT binary patch delta 24407 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 v?gw$CwMcKkk$2xn44ypXcc9Y)iNTk?XKDH+ diff --git a/gamefiles/TEXT/spanish.gxt b/gamefiles/TEXT/spanish.gxt index d36c9e10bef55ddf208aae78b55691e9723c0e89..936639cc9bd3301369198dccb25e340791b63797 100644 GIT binary patch delta 23637 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 F{|5u=3O4`% delta 23621 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 - CHANGE SELECTION -[SPRAY_4] -Use the ~h~~k~~PED_FIREWEAPON~ button ~w~to fire the water cannon. +[SPRAY_4] { re3 change } +Use the ~h~~k~~VEHICLE_FIREWEAPON~ button ~w~to fire the water cannon. -[SPRAY_1] -Use the ~h~~k~~PED_FIREWEAPON~ button ~w~to fire the water cannon. +[SPRAY_1] { re3 change } +Use the ~h~~k~~VEHICLE_FIREWEAPON~ button ~w~to fire the water cannon. [LITTLE] LITTLE T diff --git a/utils/gxt/french.txt b/utils/gxt/french.txt index 60bf9d02..833f4d33 100644 --- a/utils/gxt/french.txt +++ b/utils/gxt/french.txt @@ -2233,11 +2233,11 @@ Une voiture piégée coûte 1000$ pièce! [GA_5] Ta voiture est déjà équipée d'une bombe. -[GA_6] -Gare-la, arme la bombe avec la ~h~touche ~k~~PED_FIREWEAPON~~w~ et CASSE-TOI! +[GA_6] { re3 change } +Gare-la, arme la bombe avec la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ et CASSE-TOI! -[GA_7] -Arme la bombe avec la ~h~touche ~k~~PED_FIREWEAPON~~w~. Elle explose au démarrage. +[GA_7] { re3 change } +Arme la bombe avec la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~. Elle explose au démarrage. [GA_8] Utilise le détonateur pour armer la bombe. @@ -3511,11 +3511,11 @@ D'accord ? [JM6_1] Va à la banque par la rue principale. -[GA_6B] -Tu la gares, tu l'amorces en appuyant sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ et tu te barres! +[GA_6B] { re3 change } +Tu la gares, tu l'amorces en appuyant sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ et tu te barres! -[GA_7B] -Pour armer la bombe, appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~. Elle explosera au démarrage. +[GA_7B] { re3 change } +Pour armer la bombe, appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~. Elle explosera au démarrage. [BAT1] ~g~Ramasse la batte! @@ -3946,11 +3946,11 @@ Amène ton véhicule à l'atelier de peinture pour annuler ton ~h~indice de rech [HM1_1] ~G~Refroidis 20 Nines violets en 2 minutes et 30 secondes. -[KM1_8A] -Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour ~h~activer la bombe~w~, n'oublie pas de t'éloigner. +[KM1_8A] { re3 change } +Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour ~h~activer la bombe~w~, n'oublie pas de t'éloigner. -[KM1_8D] -Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour ~h~activer la bombe~w~, n'oublie pas de t'éloigner. +[KM1_8D] { re3 change } +Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour ~h~activer la bombe~w~, n'oublie pas de t'éloigner. [KM1_12] ~g~Amène-le au dojo mais débarrasse-toi des flics d'abord! @@ -4087,11 +4087,11 @@ J'ai pas besoin de tes papiers d'identité. Je pense qu'on peut te faire confian [DETON] DETONATION : -[DRIVE_A] -Selectionne un Uzi quand tu montes dans la voiture, regarde à gauche ou à droite et appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour tirer. +[DRIVE_A] { re3 change } +Selectionne un Uzi quand tu montes dans la voiture, regarde à gauche ou à droite et appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer. -[DRIVE_B] -Selectionne un Uzi quand tu montes dans la voiture, regarde à gauche ou à droite et appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour tirer. +[DRIVE_B] { re3 change } +Selectionne un Uzi quand tu montes dans la voiture, regarde à gauche ou à droite et appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer. [RECORD] ~g~NOUVEAU RECORD! @@ -4099,11 +4099,11 @@ Selectionne un Uzi quand tu montes dans la voiture, regarde à gauche ou à droi [NRECORD] ~r~PAS DE RECORD! -[RCHELP] -Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ ou heurte une roue de voiture avec le véhicule télécommandé pour le faire exploser. +[RCHELP] { re3 change } +Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ ou heurte une roue de voiture avec le véhicule télécommandé pour le faire exploser. -[RCHELPA] -Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ ou heurte une roue de voiture avec le véhicule télécommandé pour le faire exploser. +[RCHELPA] { re3 change } +Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ ou heurte une roue de voiture avec le véhicule télécommandé pour le faire exploser. [RC_1] Tu as 2 minutes pour faire péter autant de voitures de Diablo que tu peux! @@ -4603,11 +4603,11 @@ LA DISPARITION DE LOVE [RM5_6] ~g~Il s'est enfui! Bousille-lui son plâtre avec une bagnole ou une explosion! -[PBOAT_1] -Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour tirer avec les canons du bateau. +[PBOAT_1] { re3 change } +Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer avec les canons du bateau. -[PBOAT_2] -Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour tirer avec les canons du bateau. +[PBOAT_2] { re3 change } +Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer avec les canons du bateau. [DIAB1_B] C'est El Burro des Diablos. @@ -4621,11 +4621,11 @@ Il y a une course de bagnoles qui va partir de la vieille école près du pont d [DIAB1_F] Trouve-toi une caisse et le premier qui franchit tous les points de passage, gagne le gros lot. -[HM2_1] -Utilise les buggies télécommandés pour détruire les voitures blindées. Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour les faire exploser. +[HM2_1] { re3 change } +Utilise les buggies télécommandés pour détruire les voitures blindées. Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour les faire exploser. -[HM2_1A] -Utilise les buggies télécommandés pour détruire les voitures blindées. Appuie sur la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour les faire exploser. +[HM2_1A] { re3 change } +Utilise les buggies télécommandés pour détruire les voitures blindées. Appuie sur la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour les faire exploser. [HM2_2] ~r~T'as pas réussi à détruire toutes leurs voitures blindées! @@ -6637,11 +6637,11 @@ Cette memory card (PS2) est déjà formatée. [FEDSAS4] ;=<> - CHANGER SELECTION -[SPRAY_4] -Utilise la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour tirer à l'aide du canon à eau. +[SPRAY_4] { re3 change } +Utilise la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer à l'aide du canon à eau. -[SPRAY_1] -Utilise la ~h~touche ~k~~PED_FIREWEAPON~~w~ pour tirer à l'aide du canon à eau. +[SPRAY_1] { re3 change } +Utilise la ~h~touche ~k~~VEHICLE_FIREWEAPON~~w~ pour tirer à l'aide du canon à eau. [AM1_10] ~g~Salvatore Leone partira de chez Luigi vers 0~1~:~1~. diff --git a/utils/gxt/german.txt b/utils/gxt/german.txt index 2f038ccf..cb2a63da 100644 --- a/utils/gxt/german.txt +++ b/utils/gxt/german.txt @@ -2269,11 +2269,11 @@ Autobomben kosten $1000 pro Stück. [GA_5] In deinem Wagen ist schon eine Autobombe. -[GA_6] -Park die Karre, mach sie durch Drücken der ~h~~k~~PED_FIREWEAPON~-Taste~w~ scharf, und dann nichts wie weg! +[GA_6] { re3 change } +Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~ scharf, und dann nichts wie weg! -[GA_7] -Mach die Bombe mit der ~h~~k~~PED_FIREWEAPON~-Taste~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird. +[GA_7] { re3 change } +Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~ scharf. Dann geht sie hoch, wenn der Wagen angelassen wird. [GA_8] Benutze den Zünder, um die Bombe hochgehen zu lassen. @@ -3655,11 +3655,11 @@ Okay? [JM6_1] Fahr zu der Bank auf dem Boulevard. -[GA_6B] -Park die Karre, mach sie durch Drücken der ~h~~k~~PED_FIREWEAPON~-Taste~w~ scharf, und dann HAU AB! +[GA_6B] { re3 change } +Park die Karre, mach sie durch Drücken der ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~ scharf, und dann HAU AB! -[GA_7B] -Mach die Bombe mit der ~h~~k~~PED_FIREWEAPON~-Taste~w~ scharf. Sie geht hoch, wenn der Wagen angelassen wird. +[GA_7B] { re3 change } +Mach die Bombe mit der ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~ scharf. Sie geht hoch, wenn der Wagen angelassen wird. [BAT1] ~g~Nimm dir den Schlãger! @@ -4093,11 +4093,11 @@ Fahre deinen Wagen in die Lackiererei, um deinen ~h~Fahndungslevel~w~ loszuwerde [HM1_1] ~g~Fertige 20 Purple Nines in 2 Min. 30 Sek. ab. -[KM1_8A] -Drücke die~h~ ~k~~PED_FIREWEAPON~-Taste~w~ zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung! +[KM1_8A] { re3 change } +Drücke die~h~ ~k~~VEHICLE_FIREWEAPON~-Taste~w~ zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung! -[KM1_8D] -Drücke die~h~ ~k~~PED_FIREWEAPON~-Taste~w~ zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung! +[KM1_8D] { re3 change } +Drücke die~h~ ~k~~VEHICLE_FIREWEAPON~-Taste~w~ zum ~h~Zünden der Bombe~w~. Aber geh vorher in Deckung! [KM1_12] ~g~Bring ihm zum Dojo, aber hãng vorher die Cops ab! @@ -4234,11 +4234,11 @@ Auf den Ausweis verzichte ich. Du siehst vertrauenswürdig aus. [DETON] DETONATION: -[DRIVE_A] -Halt eine Uzi im Anschlag, wenn du in ein Fahrzeug steigst. Schau dann nach links oder rechts und drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um zu feuern. +[DRIVE_A] { re3 change } +Halt eine Uzi im Anschlag, wenn du in ein Fahrzeug steigst. Schau dann nach links oder rechts und drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~, um zu feuern. -[DRIVE_B] -Halt eine Uzi im Anschlag, wenn du in ein Fahrzeug steigst. Schau dann nach links oder rechts und drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um zu feuern. +[DRIVE_B] { re3 change } +Halt eine Uzi im Anschlag, wenn du in ein Fahrzeug steigst. Schau dann nach links oder rechts und drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~, um zu feuern. [RECORD] ~g~NEUER REKORD!! @@ -4246,11 +4246,11 @@ Halt eine Uzi im Anschlag, wenn du in ein Fahrzeug steigst. Schau dann nach link [NRECORD] ~r~KEIN NEUER REKORD! -[RCHELP] -Drücke die ~k~~PED_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Rãder eines Fahrzeugs, um es zu sprengen. +[RCHELP] { re3 change } +Drücke die ~k~~VEHICLE_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Rãder eines Fahrzeugs, um es zu sprengen. -[RCHELPA] -Drücke die ~k~~PED_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Rãder eines Fahrzeugs, um es zu sprengen. +[RCHELPA] { re3 change } +Drücke die ~k~~VEHICLE_FIREWEAPON~-Taste oder fahre das ferngesteuerte Auto in die Rãder eines Fahrzeugs, um es zu sprengen. [RC_1] Du hast 2 Minuten, um so viele Diablo-Autos wie möglich zu sprengen! @@ -4750,11 +4750,11 @@ LOVES VERSCHWINDEN [RM5_6] ~g~Er ist abgehauen! Zerstöre seine Panzerung mit einem Auto oder einer Explosion!! -[PBOAT_1] -Drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um die Bordkanonen abzufeuern. +[PBOAT_1] { re3 change } +Drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~, um die Bordkanonen abzufeuern. -[PBOAT_2] -Drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~, um die Bordkanonen abzufeuern. +[PBOAT_2] { re3 change } +Drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~, um die Bordkanonen abzufeuern. [DIAB1_B] Hier El Burro, von den Diablos. @@ -4768,11 +4768,11 @@ Bei der alten Schulhalle nahe der Callahan Bridge findet ein Rennen statt. [DIAB1_F] Besorg dir 'nen fahrbaren Untersatz. Wer als erster alle Checkpoints abfãhrt, ist Sieger. -[HM2_1] -Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~. +[HM2_1] { re3 change } +Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~. -[HM2_1A] -Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke die ~h~~k~~PED_FIREWEAPON~-Taste~w~. +[HM2_1A] { re3 change } +Zerstöre die gepanzerten Fahrzeuge mit den Buggies. Zur Zündung drücke die ~h~~k~~VEHICLE_FIREWEAPON~-Taste~w~. [HM2_2] ~r~Du hast nicht alle gepanzerten Fahrzeuge zerstört! @@ -6595,11 +6595,11 @@ Diese Memory Card (PS2) ist bereits formatiert. [FEDSAS4] ;=<> - AUSWAHL ÃNDERN -[SPRAY_4] -~h~~k~~PED_FIREWEAPON~-Taste ~w~benutzen, um die Wasserkanone abzufeuern. +[SPRAY_4] { re3 change } +~h~~k~~VEHICLE_FIREWEAPON~-Taste ~w~benutzen, um die Wasserkanone abzufeuern. -[SPRAY_1] -~h~~k~~PED_FIREWEAPON~-Taste ~w~benutzen, um die Wasserkanone abzufeuern. +[SPRAY_1] { re3 change } +~h~~k~~VEHICLE_FIREWEAPON~-Taste ~w~benutzen, um die Wasserkanone abzufeuern. [LITTLE] LITTLE T diff --git a/utils/gxt/italian.txt b/utils/gxt/italian.txt index 47b3d51e..34f05573 100644 --- a/utils/gxt/italian.txt +++ b/utils/gxt/italian.txt @@ -2260,11 +2260,11 @@ Le bombe per le macchine costano 1000$ [GA_5] La tua macchina ha già una bomba installata. -[GA_6] -Parcheggiala, attivala premendo il ~h~tasto ~k~~PED_FIREWEAPON~~w~ e DATTELA A GAMBE! +[GA_6] { re3 change } +Parcheggiala, attivala premendo il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ e DATTELA A GAMBE! -[GA_7] -Arma la bomba con il ~h~tasto ~k~~PED_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla. +[GA_7] { re3 change } +Arma la bomba con il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~: esploderà non appena qualcuno cercherà di avviarla. [GA_8] Usa il detonatore per attivare la bomba. @@ -3646,11 +3646,11 @@ OK? [JM6_1] Raggiungi la banca sulla strada principale. -[GA_6B] -Parcheggiala, innesca la bomba schiacciando il ~h~tasto ~k~~PED_FIREWEAPON~~w~ e BATTITELA! +[GA_6B] { re3 change } +Parcheggiala, innesca la bomba schiacciando il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ e BATTITELA! -[GA_7B] -Innescala col ~h~tasto ~k~~PED_FIREWEAPON~~w~. La bomba esploderà quando si tenterà di avviare il motore. +[GA_7B] { re3 change } +Innescala col ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~. La bomba esploderà quando si tenterà di avviare il motore. [BAT1] ~g~Prendi la mazza! @@ -4084,11 +4084,11 @@ Porta l'auto dal carrozziere per perdere il ~h~livello di sospetto~w~, ~h~ripara [HM1_1] ~g~Fredda 20 Purple Nine in 2 minuti e 30 secondi. -[KM1_8A] -Premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per ~h~attivare la bomba~w~: ricorda di toglierti di mezzo! +[KM1_8A] { re3 change } +Premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per ~h~attivare la bomba~w~: ricorda di toglierti di mezzo! -[KM1_8D] -Premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per ~h~attivare la bomba~w~: e ricorda di toglierti di mezzo! +[KM1_8D] { re3 change } +Premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per ~h~attivare la bomba~w~: e ricorda di toglierti di mezzo! [KM1_12] ~g~Portalo nel dojo, ma prima sbarazzati degli sbirri! @@ -4225,11 +4225,11 @@ Non mi serve che mi mostri i documenti, hai una faccia fidata. [DETON] DETONAZIONE: -[DRIVE_A] -Seleziona un Uzi quando entri in un veicolo, poi guarda a destra o a sinistra e premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per sparare. +[DRIVE_A] { re3 change } +Seleziona un Uzi quando entri in un veicolo, poi guarda a destra o a sinistra e premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per sparare. -[DRIVE_B] -Seleziona un Uzi quando entri in un veicolo, poi guarda a destra o a sinistra e premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per sparare. +[DRIVE_B] { re3 change } +Seleziona un Uzi quando entri in un veicolo, poi guarda a destra o a sinistra e premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per sparare. [RECORD] ~g~NUOVO RECORD!!! @@ -4237,11 +4237,11 @@ Seleziona un Uzi quando entri in un veicolo, poi guarda a destra o a sinistra e [NRECORD] ~r~NESSUN NUOVO RECORD! -[RCHELP] -Premi il tasto ~k~~PED_FIREWEAPON~ o dirigi l'auto radiocomandata contro i pneumatici di un veicolo per provocarne la detonazione. +[RCHELP] { re3 change } +Premi il tasto ~k~~VEHICLE_FIREWEAPON~ o dirigi l'auto radiocomandata contro i pneumatici di un veicolo per provocarne la detonazione. -[RCHELPA] -Premi il tasto ~k~~PED_FIREWEAPON~ o dirigi l'auto radiocomandata contro i pneumatici di un veicolo per provocarne la detonazione. +[RCHELPA] { re3 change } +Premi il tasto ~k~~VEHICLE_FIREWEAPON~ o dirigi l'auto radiocomandata contro i pneumatici di un veicolo per provocarne la detonazione. [RC_1] Hai 2 minuti per far esplodere quante più auto dei Diablo possibile! @@ -4744,11 +4744,11 @@ LA SCOMPARSA DI LOVE [RM5_6] ~g~Ci è scappato! Spaccagli la corazza con un veicolo o con una bella esplosione! -[PBOAT_1] -Premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per sparare con i cannoni della barca. +[PBOAT_1] { re3 change } +Premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per sparare con i cannoni della barca. -[PBOAT_2] -Premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per sparare con i cannoni della barca. +[PBOAT_2] { re3 change } +Premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per sparare con i cannoni della barca. [DIAB1_B] Sono El Burro dei Diablo. @@ -4762,11 +4762,11 @@ C'e una corsa d'auto con inizio alla vecchia scuola vicino al ponte Callahan. [DIAB1_F] Procurati un mezzo, il primo che attraversa tutti i posti di blocco vince il premio. -[HM2_1] -Usa i maggiolini radiocomandati per distruggere le auto blindate. Premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per farli esplodere. +[HM2_1] { re3 change } +Usa i maggiolini radiocomandati per distruggere le auto blindate. Premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per farli esplodere. -[HM2_1A] -Usa i maggiolini radiocomandati per distruggere le auto blindate. Premi il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per farli esplodere. +[HM2_1A] { re3 change } +Usa i maggiolini radiocomandati per distruggere le auto blindate. Premi il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per farli esplodere. [HM2_2] ~r~Non sei riuscito a distruggere tutte le auto blindate! @@ -6592,11 +6592,11 @@ Questa memory card (PS2) è già formattata. [FEDSAS4] ;=<> - CAMBIA SELEZIONE -[SPRAY_4] -Usa il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per sparare col cannone ad acqua. +[SPRAY_4] { re3 change } +Usa il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per sparare col cannone ad acqua. -[SPRAY_1] -Usa il ~h~tasto ~k~~PED_FIREWEAPON~~w~ per sparare col cannone ad acqua. +[SPRAY_1] { re3 change } +Usa il ~h~tasto ~k~~VEHICLE_FIREWEAPON~~w~ per sparare col cannone ad acqua. [LITTLE] LITTLE T diff --git a/utils/gxt/polish.txt b/utils/gxt/polish.txt index 4b9118eb..7bd3d28f 100755 --- a/utils/gxt/polish.txt +++ b/utils/gxt/polish.txt @@ -2221,11 +2221,11 @@ Bomby samochodowe kosztują 1000 dolarów za sztukę. [GA_5] W twoim samochodzie bomba już została zainstalowana. -[GA_6] -Zaparkuj wóz, włącz mechanizm klawiszem ~h~~k~~PED_FIREWEAPON~~w~ i W NOGI! +[GA_6] { re3 change } +Zaparkuj wóz, włącz mechanizm klawiszem ~h~~k~~VEHICLE_FIREWEAPON~~w~ i W NOGI! -[GA_7] -Uaktywnij bombę za pomocą klawisza ~h~~k~~PED_FIREWEAPON~~w~. Bomba wybuchnie w momencie włączenia silnika. +[GA_7] { re3 change } +Uaktywnij bombę za pomocą klawisza ~h~~k~~VEHICLE_FIREWEAPON~~w~. Bomba wybuchnie w momencie włączenia silnika. [GA_8] Użyj detonatora, aby aktywować bombę. @@ -3592,11 +3592,11 @@ W porządku? [JM6_1] Jedź do banku na głównej ulicy. -[GA_6B] -Zaparkuj wóz, włącz mechanizm klawiszem ~h~~k~~PED_FIREWEAPON~~w~ i W NOGI! +[GA_6B] { re3 change } +Zaparkuj wóz, włącz mechanizm klawiszem ~h~~k~~VEHICLE_FIREWEAPON~~w~ i W NOGI! -[GA_7B] -Uaktywnij bombę za pomocą klawisza ~h~~k~~PED_FIREWEAPON~~w~. Bomba wybuchnie w momencie włączenia silnika. +[GA_7B] { re3 change } +Uaktywnij bombę za pomocą klawisza ~h~~k~~VEHICLE_FIREWEAPON~~w~. Bomba wybuchnie w momencie włączenia silnika. [BAT1] ~g~Podnieś kij bejsbolowy! @@ -4027,11 +4027,11 @@ Wprowadź samochód do warsztatu lakierniczego, aby obniżyć swój ~h~poziom z [HM1_1] ~g~Załatw 20 Purpurowych Dziewiątek w 2 minuty 30 sekund. -[KM1_8A] -Naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~aktywować bombę.~w~ Nie zapomnij oddalić się od miejsca eksplozji. +[KM1_8A] { re3 change } +Naciśnij klawisz ~h~ ~k~~VEHICLE_FIREWEAPON~ ~w~, aby ~h~aktywować bombę.~w~ Nie zapomnij oddalić się od miejsca eksplozji. -[KM1_8D] -Naciśnij klawisz ~h~ ~k~~PED_FIREWEAPON~ ~w~, aby ~h~aktywować bombę.~w~ Nie zapomnij oddalić się od miejsca eksplozji. +[KM1_8D] { re3 change } +Naciśnij klawisz ~h~ ~k~~VEHICLE_FIREWEAPON~ ~w~, aby ~h~aktywować bombę.~w~ Nie zapomnij oddalić się od miejsca eksplozji. [KM1_12] ~g~Odwieź go do dojo, ale najpierw pozbądź się gliniarzy! @@ -4168,11 +4168,11 @@ Nie musisz pokazywać dowodu, wyglądasz na wiarygodnego gościa. [DETON] DETONACJA: -[DRIVE_A] -Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w prawo - aby otworzyć ogień, naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~. +[DRIVE_A] { re3 change } +Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w prawo - aby otworzyć ogień, naciśnij klawisz ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[DRIVE_B] -Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w prawo - aby otworzyć ogień, naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~. +[DRIVE_B] { re3 change } +Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w prawo - aby otworzyć ogień, naciśnij klawisz ~h~~k~~VEHICLE_FIREWEAPON~~w~. [RECORD] ~g~NOWY REKORD! @@ -4180,11 +4180,11 @@ Wybierz jako broń uzi i wsiądź do pojazdu. Następnie spójrz w lewo lub w pr [NRECORD] ~r~NIE MA NOWEGO REKORDU! -[RCHELP] -Naciśnij klawisz ~k~~PED_FIREWEAPON~ lub uderz zdalnie sterowanym samochodzikiem w koła pojazdu, aby spowodować eksplozję. +[RCHELP] { re3 change } +Naciśnij klawisz ~k~~VEHICLE_FIREWEAPON~ lub uderz zdalnie sterowanym samochodzikiem w koła pojazdu, aby spowodować eksplozję. -[RCHELPA] -Naciśnij klawisz ~k~~PED_FIREWEAPON~ lub uderz zdalnie sterowanym samochodzikiem w koła pojazdu, aby spowodować eksplozję. +[RCHELPA] { re3 change } +Naciśnij klawisz ~k~~VEHICLE_FIREWEAPON~ lub uderz zdalnie sterowanym samochodzikiem w koła pojazdu, aby spowodować eksplozję. [RC_1] Masz 2 minuty, aby wysadzić tyle samochodów gangu Diablo, ile tylko się da! @@ -4684,11 +4684,11 @@ ZNIKNIĘCIE LOVE'A [RM5_6] ~g~Prawie go masz! Staranuj jego wóz swoim pojazdem albo rozwal materiałami wybuchowymi! -[PBOAT_1] -Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby otworzyć ogień z działek na łodzi. +[PBOAT_1] { re3 change } +Naciśnij klawisz ~h~~k~~VEHICLE_FIREWEAPON~~w~, aby otworzyć ogień z działek na łodzi. -[PBOAT_2] -Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby otworzyć ogień z działek na łodzi. +[PBOAT_2] { re3 change } +Naciśnij klawisz ~h~~k~~VEHICLE_FIREWEAPON~~w~, aby otworzyć ogień z działek na łodzi. [DIAB1_B] Mówi El Burro z gangu Diablo. @@ -4702,11 +4702,11 @@ Organizuję dla rozrywki mały wyścig. Punkt startu znajduje się przy starej s [DIAB1_F] Skołuj sobie gablotę. Wygrywa ten, kto pierwszy zaliczy wszystkie punkty na trasie. -[HM2_1] -Użyj zdalnie sterowanych samochodzików, aby zniszczyć samochody opancerzone. Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby zdetonować ładunek. +[HM2_1] { re3 change } +Użyj zdalnie sterowanych samochodzików, aby zniszczyć samochody opancerzone. Naciśnij klawisz ~h~~k~~VEHICLE_FIREWEAPON~~w~, aby zdetonować ładunek. -[HM2_1A] -Użyj zdalnie sterowanych samochodzików, aby zniszczyć samochody opancerzone. Naciśnij klawisz ~h~~k~~PED_FIREWEAPON~~w~, aby zdetonować ładunek. +[HM2_1A] { re3 change } +Użyj zdalnie sterowanych samochodzików, aby zniszczyć samochody opancerzone. Naciśnij klawisz ~h~~k~~VEHICLE_FIREWEAPON~~w~, aby zdetonować ładunek. [HM2_2] ~r~Nie udało ci się zniszczyć wszystkich samochodów opancerzonych! @@ -6517,11 +6517,11 @@ Ta karta pamięci (PS2) jest już sformatowana. [FEDSAS4] ;=<> - ZMIANA WYBORU -[SPRAY_4] -Użyj klawisza ~h~~k~~PED_FIREWEAPON~~w~, aby strzelać z armatki wodnej. +[SPRAY_4] { re3 change } +Użyj klawisza ~h~~k~~VEHICLE_FIREWEAPON~~w~, aby strzelać z armatki wodnej. -[SPRAY_1] -Użyj klawisza ~h~~k~~PED_FIREWEAPON~~w~, aby strzelać z armatki wodnej. +[SPRAY_1] { re3 change } +Użyj klawisza ~h~~k~~VEHICLE_FIREWEAPON~~w~, aby strzelać z armatki wodnej. [LITTLE] MAŁY T diff --git a/utils/gxt/russian.txt b/utils/gxt/russian.txt index 4598dad5..2a61c7c1 100644 --- a/utils/gxt/russian.txt +++ b/utils/gxt/russian.txt @@ -2029,11 +2029,11 @@ Double Clef FM [DODO_FT] Вы были в воздухе ~1~ секунд! -[DRIVE_A] -Садясь в машину, возьми в руки Узи. Посмотри вправо или влево и нажми ~h~~k~~PED_FIREWEAPON~~w~ для выстрела. +[DRIVE_A] { re3 change } +Садясь в машину, возьми в руки Узи. Посмотри вправо или влево и нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~ для выстрела. -[DRIVE_B] -Садясь в машину, возьми в руки Узи. Посмотри вправо или влево и нажми ~h~~k~~PED_FIREWEAPON~~w~ для выстрела. +[DRIVE_B] { re3 change } +Садясь в машину, возьми в руки Узи. Посмотри вправо или влево и нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~ для выстрела. [DSPLAY] Экран @@ -4309,17 +4309,17 @@ FormatMemCard 1 (teststuff) [GA_5] Я уже поставил в бомбу в эту тачку. -[GA_6] -Припаркуй тачку на место, нажми ~h~~k~~PED_FIREWEAPON~~w~ и ДЕЛАЙ НОГИ! +[GA_6] { re3 change } +Припаркуй тачку на место, нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~ и ДЕЛАЙ НОГИ! -[GA_6B] -Припаркуй тачку на место, нажми ~h~~k~~PED_FIREWEAPON~~w~ и ДЕЛАЙ НОГИ! +[GA_6B] { re3 change } +Припаркуй тачку на место, нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~ и ДЕЛАЙ НОГИ! -[GA_7] -Включи бомбу, нажав на ~h~~k~~PED_FIREWEAPON~~w~. Бомба взорвется как только заведется мотор. +[GA_7] { re3 change } +Включи бомбу, нажав на ~h~~k~~VEHICLE_FIREWEAPON~~w~. Бомба взорвется как только заведется мотор. -[GA_7B] -Включи бомбу, нажав на ~h~~k~~PED_FIREWEAPON~~w~. Бомба взорвется как только заведется мотор. +[GA_7B] { re3 change } +Включи бомбу, нажав на ~h~~k~~VEHICLE_FIREWEAPON~~w~. Бомба взорвется как только заведется мотор. [GA_8] Взорви бомбу с помощью детонатора. @@ -4666,11 +4666,11 @@ Pull the ~h~right analog stick~w~ back to ~h~brake~w~, or to ~h~reverse~w~ if th [HM1_H] Сделай так, чтобы этих Девяток здесь не было! -[HM2_1] -Используй радоуправляемые машинки, чтобы подорвать броневики. Взрыв бомбы - ~h~~k~~PED_FIREWEAPON~~w~. +[HM2_1] { re3 change } +Используй радоуправляемые машинки, чтобы подорвать броневики. Взрыв бомбы - ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[HM2_1A] -Используй радоуправляемые машинки, чтобы подорвать броневики. Взрыв бомбы - ~h~~k~~PED_FIREWEAPON~~w~. +[HM2_1A] { re3 change } +Используй радоуправляемые машинки, чтобы подорвать броневики. Взрыв бомбы - ~h~~k~~VEHICLE_FIREWEAPON~~w~. [HM2_2] ~r~Ты так и не смог подорвать все броневики! @@ -5272,11 +5272,11 @@ Italian [KM1_7] ~g~Проезд только для полицейских! -[KM1_8A] -Чтобы ~h~подорвать бомбу~w~, нажми ~h~~k~~PED_FIREWEAPON~~w~, но не забудь отойти подальше от машины. +[KM1_8A] { re3 change } +Чтобы ~h~подорвать бомбу~w~, нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~, но не забудь отойти подальше от машины. -[KM1_8D] -Чтобы ~h~подорвать бомбу~w~, нажми ~h~~k~~PED_FIREWEAPON~~w~, но не забудь отойти подальше от машины. +[KM1_8D] { re3 change } +Чтобы ~h~подорвать бомбу~w~, нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~, но не забудь отойти подальше от машины. [KM1_9] ~r~Установленной в машине бомбой ты должен был взорвать стену! @@ -6520,11 +6520,11 @@ Parse Heap [PAUSED] ИГРА ОСТАНОВЛЕНА -[PBOAT_1] -Чтобы выстрелить из орудия катера нажми ~h~~k~~PED_FIREWEAPON~~w~. +[PBOAT_1] { re3 change } +Чтобы выстрелить из орудия катера нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[PBOAT_2] -Чтобы выстрелить из орудия катера нажми ~h~~k~~PED_FIREWEAPON~~w~. +[PBOAT_2] { re3 change } +Чтобы выстрелить из орудия катера нажми ~h~~k~~VEHICLE_FIREWEAPON~~w~. [PCLOAD] Loading File Data @@ -6700,11 +6700,11 @@ Quit Options [RCBANDT] Багги Бандит -[RCHELP] -Чтобы подорвать машинку, нажми ~k~~PED_FIREWEAPON~, или врежься в колесо жертвы. +[RCHELP] { re3 change } +Чтобы подорвать машинку, нажми ~k~~VEHICLE_FIREWEAPON~, или врежься в колесо жертвы. -[RCHELPA] -Чтобы подорвать машинку, нажми ~k~~PED_FIREWEAPON~, или врежься в колесо жертвы. +[RCHELPA] { re3 change } +Чтобы подорвать машинку, нажми ~k~~VEHICLE_FIREWEAPON~, или врежься в колесо жертвы. [RC_1] У тебя 2 минуты, чтобы подорвать как можно больше машин Дьяволов! @@ -7144,11 +7144,11 @@ Speeder [SPRAY1] В мастерской твою тачку ~h~отремонтируют~w~ и ~h~перекрасят~w~. Копы тебя больше ~h~не узнают~w~. Стоимость - ~h~$1000~w~. Первый раз это бесплатно. -[SPRAY_1] -Чтобы включить брандспойт, нажми на ~h~~k~~PED_FIREWEAPON~~w~. +[SPRAY_1] { re3 change } +Чтобы включить брандспойт, нажми на ~h~~k~~VEHICLE_FIREWEAPON~~w~. -[SPRAY_4] -Чтобы включить брандспойт, нажми на ~h~~k~~PED_FIREWEAPON~~w~. +[SPRAY_4] { re3 change } +Чтобы включить брандспойт, нажми на ~h~~k~~VEHICLE_FIREWEAPON~~w~. [STADIUM] Аспатрия diff --git a/utils/gxt/spanish.txt b/utils/gxt/spanish.txt index 5de7de5c..2dbd2495 100644 --- a/utils/gxt/spanish.txt +++ b/utils/gxt/spanish.txt @@ -2246,11 +2246,11 @@ Una bomba de coche vale 1.000 dólares. [GA_5] Tu coche ya tiene una bomba instalada. -[GA_6] -¡Apárcalo, actívala pulsando ~h~~k~~PED_FIREWEAPON~~w~ y SAL PITANDO! +[GA_6] { re3 change } +¡Apárcalo, actívala pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~ y SAL PITANDO! -[GA_7] -Activa la bomba pulsando ~h~~k~~PED_FIREWEAPON~~w~. Estallará cuando se arranque el motor. +[GA_7] { re3 change } +Activa la bomba pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~. Estallará cuando se arranque el motor. [GA_8] Utiliza el detonador para activar la bomba. @@ -3633,11 +3633,11 @@ que tendré trabajo para ti. [JM6_1] Llévanos al banco de la avenida principal. -[GA_6B] -¡Apárcalo, actívala pulsando ~h~~k~~PED_FIREWEAPON~~w~ y SAL PITANDO! +[GA_6B] { re3 change } +¡Apárcalo, actívala pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~ y SAL PITANDO! -[GA_7B] -Activa la bomba pulsando ~h~~k~~PED_FIREWEAPON~~w~. Estallará cuando se arranque el motor. +[GA_7B] { re3 change } +Activa la bomba pulsando ~h~~k~~VEHICLE_FIREWEAPON~~w~. Estallará cuando se arranque el motor. [BAT1] ~g~¡Coge el bate! @@ -4059,11 +4059,11 @@ Mete tu vehículo en el taller de pintura para perder tu ~h~nivel de búsqueda~w [HM1_1] ~g~Cepíllate a 20 Purple Nines en 2 minutos y 30 segundos. -[KM1_8A] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~activar la bomba~w~. Acuérdate de alejarte de ella. +[KM1_8A] { re3 change } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para ~h~activar la bomba~w~. Acuérdate de alejarte de ella. -[KM1_8D] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para ~h~activar la bomba~w~. Acuérdate de alejarte de ella. +[KM1_8D] { re3 change } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para ~h~activar la bomba~w~. Acuérdate de alejarte de ella. [KM1_12] ~g~¡Llévalo al dojo, pero deshazte primero de la policía! @@ -4200,11 +4200,11 @@ No necesito tu documentación, pareces de fiar. [DETON] DETONACIÓN: -[DRIVE_A] -Ten una Uzi seleccionada cuando entres en un vehículo, luego mira a la izquierda o a la derecha y pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar. +[DRIVE_A] { re3 change } +Ten una Uzi seleccionada cuando entres en un vehículo, luego mira a la izquierda o a la derecha y pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar. -[DRIVE_B] -Ten una Uzi seleccionada cuando entres en un vehículo, luego mira a la izquierda o a la derecha y pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar. +[DRIVE_B] { re3 change } +Ten una Uzi seleccionada cuando entres en un vehículo, luego mira a la izquierda o a la derecha y pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar. [RECORD] ~g~¡NUEVO RÉCORD! @@ -4212,11 +4212,11 @@ Ten una Uzi seleccionada cuando entres en un vehículo, luego mira a la izquierd [NRECORD] ~r~¡NO HAY UN NUEVO RÉCORD! -[RCHELP] -Pulsa ~k~~PED_FIREWEAPON~ o lleva el coche teledirigido hasta las ruedas de otro coche para detonarlo. +[RCHELP] { re3 change } +Pulsa ~k~~VEHICLE_FIREWEAPON~ o lleva el coche teledirigido hasta las ruedas de otro coche para detonarlo. -[RCHELPA] -Pulsa ~k~~PED_FIREWEAPON~ o lleva el coche teledirigido hasta las ruedas de otro coche para detonarlo. +[RCHELPA] { re3 change } +Pulsa ~k~~VEHICLE_FIREWEAPON~ o lleva el coche teledirigido hasta las ruedas de otro coche para detonarlo. [RC_1] ¡Tienes 2 minutos para destruir todos los coches de los Diablos que puedas! @@ -4716,11 +4716,11 @@ Luigi dijo que eras de fiar, así que vuelve más tarde, [RM5_6] ~g~¡Ha salido de la ambulancia! ¡Cárgate su escayola con un vehículo o una explosión! -[PBOAT_1] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar los cañones de la lancha. +[PBOAT_1] { re3 change } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar los cañones de la lancha. -[PBOAT_2] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar los cañones de la lancha. +[PBOAT_2] { re3 change } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar los cañones de la lancha. [DIAB1_B] Al habla El Burro, de los Diablos. @@ -4734,11 +4734,11 @@ Hay una carrera que empezará junto a la sala Clásica, cerca del puente Callaha [DIAB1_F] Consíguete un buen carro y el primero que pase por todos los puntos de control se llevará el premio. -[HM2_1] -Usa los coches teledirigidos para destruir los furgones blindados. Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para detonarlos. +[HM2_1] { re3 change } +Usa los coches teledirigidos para destruir los furgones blindados. Pulsa ~h~~k~~VEHICLE_FIREWEAPON~ ~w~para detonarlos. -[HM2_1A] -Usa los coches teledirigidos para destruir los furgones blindados. Pulsa ~h~~k~~PED_FIREWEAPON~ ~w~para detonarlos. +[HM2_1A] { re3 change } +Usa los coches teledirigidos para destruir los furgones blindados. Pulsa ~h~~k~~VEHICLE_FIREWEAPON~ ~w~para detonarlos. [HM2_2] ~r~¡No has destruido todos los furgones blindados! @@ -6545,11 +6545,11 @@ Esta Memory Card (PS2) ya está formateada. [FEDSAS4] ;=<> - CAMBIAR SELECCIÓN -[SPRAY_4] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar el cañón de agua. +[SPRAY_4] { re3 change } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar el cañón de agua. -[SPRAY_1] -Pulsa ~h~~k~~PED_FIREWEAPON~~w~ para disparar el cañón de agua. +[SPRAY_1] { re3 change } +Pulsa ~h~~k~~VEHICLE_FIREWEAPON~~w~ para disparar el cañón de agua. [LITTLE] LITTLE T From 25703b04a2f5e299f3e2c38ccf72aaa34dba75f7 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 9 Feb 2021 19:59:55 +0100 Subject: [PATCH 037/314] fix clouds --- src/render/Clouds.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render/Clouds.cpp b/src/render/Clouds.cpp index b5af6619..684f5d74 100644 --- a/src/render/Clouds.cpp +++ b/src/render/Clouds.cpp @@ -273,8 +273,8 @@ CClouds::Render(void) for(i = 0; i < 37; i++){ RwV3d pos = { 2.0f*CoorsOffsetX[i], 2.0f*CoorsOffsetY[i], 40.0f*CoorsOffsetZ[i] + 40.0f }; - worldpos.x = campos.x*rot_cos + campos.y*rot_sin + pos.x; - worldpos.y = campos.x*rot_sin + campos.y*rot_cos + pos.y; + worldpos.x = pos.x*rot_cos + pos.y*rot_sin + campos.x; + worldpos.y = pos.x*rot_sin - pos.y*rot_cos + campos.y; worldpos.z = pos.z; if(bCloudOnScreen[i] && CSprite::CalcScreenCoors(worldpos, &screenpos, &szx, &szy, false)){ // BUG: this is stupid....would have to do this for each cloud individually From a6d402e8fd32432f7b7a9a2115c53c851d78a293 Mon Sep 17 00:00:00 2001 From: erorcun Date: Wed, 10 Feb 2021 15:34:48 +0300 Subject: [PATCH 038/314] Ped jump teleport/kill fix --- src/peds/Ped.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index e0d60304..28a4e989 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2448,12 +2448,17 @@ CPed::ProcessControl(void) #ifdef VC_PED_PORTS uint8 flyDir = 0; float feetZ = GetPosition().z - FEET_OFFSET; - if ((obstacleForFlyingZ <= feetZ || obstacleForFlyingOtherDirZ >= 500.0f) && (obstacleForFlyingZ <= feetZ || obstacleForFlyingOtherDirZ <= feetZ)) { - if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 499.0f) - flyDir = 2; - } else { +#ifdef FIX_BUGS + if (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f) flyDir = 1; - } + else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 500.0f) + flyDir = 2; +#else + if ((obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 500.0f) || (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ > feetZ)) + flyDir = 1; + else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 499.0f) + flyDir = 2; +#endif if (flyDir != 0 && !bSomeVCflag1) { SetPosition((flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point)); @@ -2471,6 +2476,10 @@ CPed::ProcessControl(void) forceDir.z = 4.0f; ApplyMoveForce(forceDir); + // What was that for?? It pushes player inside of collision sometimes and kills him. +#ifdef FIX_BUGS + if (!IsPlayer()) +#endif GetMatrix().GetPosition() += 0.25f * offsetToCheck; m_fRotationCur = CGeneral::GetRadianAngleBetweenPoints(offsetToCheck.x, offsetToCheck.y, 0.0f, 0.0f); From 1d8d2bd7b7c94dcdabeaec71263b0909bd439b66 Mon Sep 17 00:00:00 2001 From: withmorten Date: Wed, 10 Feb 2021 18:46:54 +0100 Subject: [PATCH 039/314] startproject now depends on librw --- premake5.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/premake5.lua b/premake5.lua index 08b600e4..a0d54ea7 100644 --- a/premake5.lua +++ b/premake5.lua @@ -236,6 +236,10 @@ project "re3" targetname "re3" targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}" + if(_OPTIONS["with-librw"]) then + dependson "librw" + end + files { addSrcFiles("src") } files { addSrcFiles("src/animation") } files { addSrcFiles("src/audio") } From c9f804486d85064041619efd14e10497bc160204 Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Thu, 11 Feb 2021 06:53:00 +0200 Subject: [PATCH 040/314] Fix setup 4 texts --- src/core/Frontend.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp index 44e143c8..07b8f996 100644 --- a/src/core/Frontend.cpp +++ b/src/core/Frontend.cpp @@ -6011,13 +6011,13 @@ CMenuManager::PrintController(void) CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SELECT_X)), MENU_Y(Y(TEXT_SELECT_Y)), TheText.Get("FEC_CAM")); CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_START_X)), MENU_Y(Y(TEXT_START_Y)), TheText.Get("FEC_PAU")); CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R2_X)), MENU_Y(Y(TEXT_R2_Y)), TheText.Get("FEC_CWR")); - CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_TAR")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R1_X)), MENU_Y(Y(TEXT_R1_Y)), TheText.Get("FEC_ATT")); CFont::SetRightJustifyOn(); // X CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_SQUARE_X)), MENU_Y(Y(TEXT_SQUARE_Y)), TheText.Get("FEC_JUM")); CFont::SetJustifyOn(); // X - CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_LOF")); - CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_RUN")); - CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_ATT")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_TRIANGLE_X)), MENU_Y(Y(TEXT_TRIANGLE_Y)), TheText.Get("FEC_ENV")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CIRCLE_X)), MENU_Y(Y(TEXT_CIRCLE_Y)), TheText.Get("FEC_LOF")); + CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_CROSS_X)), MENU_Y(Y(TEXT_CROSS_Y)), TheText.Get("FEC_RUN")); CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_RSTICK_X)), MENU_Y(Y(TEXT_RSTICK_Y)), TheText.Get("FEC_FPC")); CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y)), TheText.Get("FEC_LB3")); CFont::PrintString(MENU_X_LEFT_ALIGNED(X(TEXT_R3_X)), MENU_Y(Y(TEXT_R3_Y + 13.0f)), TheText.Get("FEC_R3")); From 69138fc08b3b3cda15ffa8a662aa0af57b84236d Mon Sep 17 00:00:00 2001 From: withmorten Date: Thu, 11 Feb 2021 21:32:27 +0100 Subject: [PATCH 041/314] use better quality button textures, add generic.txd --- gamefiles/models/generic.txd | Bin 0 -> 1604112 bytes gamefiles/models/ps3btns.txd | Bin 126760 -> 528424 bytes gamefiles/models/x360btns.txd | Bin 126760 -> 528424 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 gamefiles/models/generic.txd diff --git a/gamefiles/models/generic.txd b/gamefiles/models/generic.txd new file mode 100644 index 0000000000000000000000000000000000000000..8e0d60f38db92130627eb4893d8c5e9117780cbf GIT binary patch literal 1604112 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�)fLQ^ffNGwXLE|OxFx#}u)1NUup~sv`%yoSv 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