From 88a9cb6bb4a8df21466cdfaf1912ce79f8afa885 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Sat, 25 Feb 2023 20:14:22 -0700 Subject: [PATCH] tests: add q1 decompiler test --- .gitignore | 2 +- testbsps/q1_decompiler_test.bsp | Bin 0 -> 66468 bytes testbsps/q1_decompiler_test.map | 146 ++++++++++++++++++++++++++++++++ tests/CMakeLists.txt | 3 +- tests/test_bsputil.cc | 36 ++++++++ tests/test_qbsp.hh | 1 + 6 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 testbsps/q1_decompiler_test.bsp create mode 100644 testbsps/q1_decompiler_test.map create mode 100644 tests/test_bsputil.cc diff --git a/.gitignore b/.gitignore index bda2b869..7012c21e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ CMakeFiles/ .idea !.vscode/settings.json testmaps/*.bsp -**/*decompile*.map +**/*-decompile*.map testmaps/*.bsp.qbsplog testmaps/*.log testmaps/*.prt diff --git a/testbsps/q1_decompiler_test.bsp b/testbsps/q1_decompiler_test.bsp new file mode 100644 index 0000000000000000000000000000000000000000..7e8808614a02047948f4462154b589cfb6c43099 GIT binary patch literal 66468 zcmeIb3%F(HdEd3?%;;h%jy-dZ>|C65B-@G8#I|gYFG-wOBPDGvZQ@*@0SeaDiHIWG zk{vg7(oT9w-Og;uZCcWn0bC$6=e7@qmP;|Tjt!*{>oibG0~8t{Kqv*mrCbWN`uqLg z_gj0Nqa(SpdDMpoeS5FD5_6hpiXQ;uu3;McTde>s{sk;%G6=|Qir)aiEIschz&1oOIXK)vbLBI1J zTS$LK5f@)L4!=Lt5>cTVTJceT&r4Ei5G!R}qN91PiCKLPL333fkrLTrEW1RF0u zA-2T{v7K)l!(aVboDj#yPOz~^9G`po>8GQ0!Uj_F5S(H#@|m-I|t|OUv9cGqwU7PK>w(_>MJ8ut} zkHH&s+k-y*95{Evv#rd$?HrJ<{Ag=;-oA8^NrsGc+sfM(XV8@&?RV22GPVa@-A`dh zUFo(zcF!7fw3WAgC&y?HOzFdx?SVhqb4=TpI0laGp?e-(`}%a(vG#~lnbE%V>9xG= zL09JEpD7&aqb=rWE2FJXaSVCe%72POA4Xfcx`RI2(ie+UiyIg3c=~mp`?aUP3v$(C=Lo{Z+_qKtByf`J&%@>JI3qBY$Rb?~MMs#Z3z?he+Sh^z-1~ zd+Lo)xvVbSvr7Ja_N2E!zY+RPjbHw_ADw|F&du@X|yYP}rI@G`ObnSOVzdKP~`tz{5m^;g$9l3_i;H!%}$R ze5o>zW6-Q)=k9f0LVGsMV{(hkyK&7^(|K5Px2V#bQ_|;hUJ=hQ8gts&$Q`A<;sn}P zLOV@H=el1VxudjKLpyU!?rWp#imO6*@f$gA0C7%x;|a72&`yImm-DKB!!g=BPmnXA z$93H-j_dyB$Q_O2yCQd#_Pr;_eg6q^zb&*Ij`;lBPoUiwyc>_mJs7#8w1-cSdj#5z zyykg%?3nH;#`?o2(0qotVWz9xPoF^hnGLGw7Ff^ z*M4=XkMd!o#TdFc`94d{?-Y! zzYXooF}cqjquoSo8*FGdfvesq6e!>YEmu z)HlOd?gS%`T6`7tZM4*T1$FUX$(_w&@n!V2^X1g;&GqcW7-YwDb>D=KFCp`{;>%01|FXr) zv33qWwm^Nw;+0^0IX-n>cwwZoL}6&xMT6^#cLL?U3|^rYZtFud>#Ar*Dtp!&5O4zE-c=e#{Y%(|IJ~3f1Ub&=Wq-h z4|8i?%%S=G@8FqVb7o%tCVlhu-%y)RbNd@O&U4((@hi~pp!T};8jja;{BO{{hWbCF z_S*G2j<4hJn)US@{}J?Gj$fpI z$nj|ouXlHG`~}(Z-c zLmYpK{yxV)&GBCP{}lDV$ni@YKTQ8mQvV3`U#9-s91qjJO8qA|{u0Mu;rQbm{|v`J z4)5Qh{!!{jIDU*{oBlt?@hI*0alD^nMgJ2VALIA{{Xa&1jpJYAc#Qs&)Q?ktlKO+x zuFVfo|6%IO9RCW(pXXR|{Hq*44)2drKf$rf@nQPEgX810e}eiCQeWrzS&m=e_?^)H z0QDc@_}4l93676){0zruI6eaZCprFE+W#cSKhN>|IDQJ+AECa&@q0Ob7yZ9O{eN)$ z9**D7@pBx%8~P=VpXT^I9KV<2_i_Awj^7RcXQ=-G$45E-Ajj{7_J^o1bNo2%OB`2d z|2x!6>W@%ALH+MhKS}+&s2}I}w>kbtj*mh69n^oA`hTMSBh>#h_4_zJ#PJgxKMU=T za{RZne~jb99Pj7&uQ+~^;}MR(!SNW!f5P!7#|Jrnn&Xe5_t&UD!132Pew5>)%St`^Q_^v0eh_Hg+&~)tj05-$U;u>}ogCdO7D?*=cW~Zq$eHq8Q+0op4UqNKgVm>liiiK=)D>Xx6#_930zns>~ID4J_#?;@)e)bjF$G?)+D>=Rr4_?Jif0pxarS}!oXKB5Hecqkkz5c5g z=Xt$~{o;=7`LCw+8g|6nsn4?uz82m^davbt2N`-B*8{HzUK75KtHako`4)D=uc!Aq zcE;aG?=4Wjj;n>&i`UcpCaxN9p!fB(UdL{DC)bcSBKam-U(5OR?1C5A5xu5(J$XCV zmAB>^^LAo;JM?#u{kJ0XRk_Z1rFmzrMBke0&AYJqF0MZpIlTIOE2DUd^J|g%26n%@ z(R?T8ujY6wJK;Upy$Ak1jOzC-eiN_X%oyZlbyO$cX9Ucn(cQRuiN54 z=kI%Y8Rd&{BKlth#22rR_t+or=NnF3AIhLSfBl(qd+~ho8G~hY0(w6BMjy933(wd8 zNxxJ0eD&M^DgV#Y_i}xToW}DkU#$J-Y3@bw7c=l;242j-iy3$^121Oa^JgHJ=g%+p ztPRWz@Z7zQUpFS8=hk=z_r=@GDRZXr z#qweXUbqb0{IZ*GelBY_-+Ja{XU^Pw=Gmm=-wepD&oXmSbap={|5o*%#S2)$e-`$0 zx&9*W#SHxaJ_9$NIhul(+;ZbfZkds8y!9ow-a7B!c;?3One2@G|JmkEXDXVTZmw@R zo^K%cKlZ*4Kl+~gAA9%#za8U~?LP83>s@@t`fiRND9h#U?%r<7Ue|Q0xz`o_ecJo`3Rv&& z?(Wdo`0uHr-riP7EAIPB_P0U?`*7gu3f*ry}f;XduM0+dJ4U2N!o_Gy|cSR zduInpD;u;B+FNeyeB_$?DT6#F(*U(_ zkxq=l>}r2sZF~+vQO%dZwiUk|!(?Shnv&~#8!PR{fl|$|9YdL1PGg3G{Z%4$0;q{V ze4&wihuV25^O-7Tr0v)6$Niyp6eXbrH<8&jNZii+(f^uXv_N+JOaRR)N@BcJ)N`%_ zfymx+wTt~0E%VPrfi3`3piyeRvy8_0i7lu|Wj_5_DNm*AhbQfutlgcxjg7tScobeK zg*!v(Y$(x_pzUv8-`&{If1q?xRO5=HVznlO801VAhJBc^zcYOA=`u$N>j+9_cIR?O z`|-a-oMXvE9Ks{t*y9k?Gnz?5cssRz%6S85b#sNwjbdm9yhfo}D2yNTKj@M&JrZ}V zR)l&;c8}XfT%Xu~_9|!9AA^^S;eJr#u>J>H%-GUh*B`!tRQ9Ensd*pGimn1vsO-D` z+&{8_OVLh&AYAsN8~bL$o}r3T`AZwXj55{{#dF0`DuybTx3BLqpQD&byqo4nZvjEs-CJ?}+hOpNR+FVGVu`Az z<^mh5m4rPVk(ldG?Az-J7Ek6Vg@;A zakuQZdrH-mthsJPh2m0e6rgv>zxFdD+=En8n2_7r$hr201BO}|bN!MG7{h)HXylnF z@nwyIhVy^L_@NKI{aTNYgvb{UMEko=f!HSk#!m_Q!aX~RYK4;cja8JgA5WYk7U8Pd zg!olP;C7?HcDHw#Kir6ose)>0P4bP1;yjo*W2(4*IseqkNe^fY(>9Y9=>wZqz)-)w zyV`K5lvg%|c6Sp^4NXvnR}sLx>yPUX0hB`G6Qc!!=}4yxx}DAg_K80ol%^;k97E~x zQgsSW?;OADg}=5kqEAe{2|CFp%`{?->o5C9trNjBd@(W!_tXshSm*6N6Ds#l@Onm< zk#_%%$9UuX$NmH-ib`P)6zf895bUf`cKiNKiSXoRE(fEgf96h>f{KC7 z^u?^}cb%@n<~&2e8y2q3{E%_V-hR;@0;SsAIwhDk9mx4@tcx{LIyRC+_XGKAvAK5xpz-a9HwO!VK9t#~1 z8s@kLs|Q44qVu6sZN=(AG~JC20;a`7soA6T3=|B6s9>oo6_lNwrDf#<@`jJZJR&cB zY|g`Rco09iFGVI+kV1kwVzktOtH#C#Pv8-pP()2Zxll?O8kA28LJ9CnM`-sEE!s;- zqHqrUvc(|>L)d4cK#>|0^#g0K9Iqg-PcC|gGxa$naF9?QP&Op_%pYbqG7Nc$S5gVa zrN(x*2T>{`=k?JdT9h3n8yQ1nm^*orcMfq}&kS>ZFxReq1pCZ2cbMJG8K;6D2xNUa zgSdDotEMe0Pc}JtzTeonc8yOMdVbb4FO{gwCn$?`)r!YT1$@PUkKFgJ3Tq%ad z7UAN{W_1ijV(yRiuNF9Ju?K67qBcEJBvL1_uGc%)+@Eq`fvNoUe$28MMT=ADf<|T_V&27!GG4bqa3>1 zQgnl*{fuAS=Y)J?Cp;kHfavieh%Ez&`_qaaRfCSj%8V-Ma*9>Qr`#8kqw??P6H35V zMF&dNX4_0$Ym_9Z(lpr@p(a;3p)VGU#3(i(8B}RkSbn~QeWQck_7h7~5si}epMl~O z^79q%&tS%$C=R%lMHHcRmX4XxrIBL@SwA{35JYVssj5gTt)nQJKlywj&cv`r%QCuc z)BMMUvYd%p{k47i-Z62G`vMwOm6$(@A{SvlA46@}PsBmd;W&_!5hTdMN3$e{{jf~} z=5ym#h>=b_6_OxIRi#lspV5+V2+F`QrDDJ7Lcp49s(_KbRqn5A?baExgQfsD7PVDB zf&xBNo^RMcJL8quwhz1JdjLw<%p{yrpu4-u^L=S56vungl+m@{ZL&~;kNpkpJ7oZl z(=lcEK}p<()WhMbq#zpi_BL|;QM**kQCJbs*)S^n8H(wFm+Kdz4neushQ$~*X=$_a znV@9S_xZT4KWjJP8%+aND{;+Hf`-ExfBcw<8Ahd`iPgwUhw? zuwI&q!jx&rOpE>OpUFQG9iirxi38Eiye`dNVuE<%x8eM0MeI+0BxJ*kSLH!7L$bZg zS1a6qW7EjWkNTbvm^ZMcETM2fc zhzBWXLTHnshvp=?0L5gN{Y(WG(6)W5Vc#&+EtYjf zgt|bif4|?G>?;saNO0Sm9#G`llm<#t`#ikhk)h|LnD(;|#bxtY{Djgd0Py{&pD)C| z=Ax+s#22SU;W5b>!d+UPoP2t!q9EhH^YeVcnJ27>`Lxz5aS>S^Qzi5n$~B(fa{r=W zLefl!A;tEQAy3xKTn2|nem-A7B#-vvsgb(GYK$Wtfm&TmHuHnI7@_2UhT>>M^e9T6{cB9vTCmR~$Rr%+ni)Nx{BTZzQ8H(GIc#75dF}gj zU&UF-^z`KPMm8v=GZ2bXJ+CjWk1U30^unlikxfNfb*@b;UiI@q%-4zzY?fyk!1q!P zNTUSD4De{``s_vA_IppG7fph%ItxhDUe5OY{I5Sh?;td>wr{WOs}=JiSb`G!$<-uR zV%c0G4_KhrN!0yL1@^r^lqV&=27Qe}tAr=}frThN-yfDgb}gwiQT|r^%_{y{&d;B* z-&*BHxCK@yC2k&?74Zs6ebp_pP3j3n;gLWSR}mxL_Uj5h@~}=-LA3)$>7=7D3O2 z92cM1A33Wmv@wMWW{%Qbo zzbNf^qd?QX_tyet+QlCCikNvO%Aja!^2Pb1vY^`cROZv{acU90shNsYT8w|}+o$MK z7T?Jz<|E+hikZ(h%wOB5Rhmi)6;9?t=xD^gM(P$UpN{~gXzZ6(xY$TkjS_=Bd=&-z zx6dc?W3XWGkOXx?Y|xA|EUy|{s`y5_vVT?XbgqKZnE;dn@p_=ZsD4DV{yWJ?v}BOt z1wy*2WkceuKkyatwD10DvbrBO<{L~e!d;^b`@&}bl5?G{U349Ac+}?2iz$B15Wicp%fMUqUPztMZ=;v$b zJ4A6hO67odGBGkFf-e{ ziV7_uCW=tYqoEu_fbeyq`UxyyiEKmdSjos6T%{k{q)_&s-|t^QZ#%f`_~-Naa!XFl z1T$H3p=I4U7^P~!$rzt+vi{=PG(=`E8B}_xoP=U(SbrOQKA|zxjIByQ`XV+(o{Wed z1qOf!{QU$q0G;W9QWgNIn;>mzPKl^w8 z{+h|;gS<~qKFLQaZ7>Q~hF_`{GH1S@-QoHCnuIX>gmU$vgA=M*uq#9PE_^?bdEUcr zjwscuPCclPhyHLP;t9+=fAaX5frb(QP7XoCD0l>Aq9f+l>-9LC$73FgS3E7JqQR@k zK0y22O+_Q${`+J56}>#;`yh_I;y$`tL{2%1f*eYe63K@QDu)C@TSBwYhB*9sjMtEI zVM|RB!YBGBJO|3`7YQnNGDy%=NQ=2kHY4D#E9zr_%Cx=YG~{%W_`*_{;t=fYtTwiH zXea+t5lL0*^lGMMnsTz#7x+%EYuDHyndSVzU#!9OYtp_tsT~dHoE_#>!GOZ&PkjHs z{ShZ^rePaU+g}7wt4^dwJGFu#2cbQ_|F6%ik`IZs_c3eN`Z`ldi(i?HqVW3xzJI>9 z?IkXEFv-$dk5<`^`CxF;M3?P-zQ1t25jriU_A5_N)|1@AK?Cg&mZ-+ zQ6g>9M##~OJ!6=h(6@Ykx?lb%4n!iYSd3bdx`mcrP|7Ku&-jrGJZ-qYm6$4P3WoH% zn08VWB~Cvd8Tbxc%$FaM6P2nJRs1uEP{8r|F!y(~C2BS7GT)k#8o4G#r1h20KXZMH zVo+PLqSnJMAyj@6i)8%O{sdm;4G+cAEVs%h&U#UrM$pga)I&bHB>~k;=Ziuu^k7s4 z2C;GS^P%#}=>ZJNv2IHWFqM{yT&F35Q}TQg5&f;0l`aG&p8NMN+VAUAW<}Z8z;FUA zi}6v)YM-TheXsl_UmZyaN3#-U5QS+(wnEAHV_#nRuZb$dWX!HT2y};MF8uza#!s)3 zg5U>8xhawWLm9xqJo5V&h6G~ynuek|a7p@5jT7bR{+PcNf^s$1R9QrdmAuXcyt+9b z{r!tvY#2$QTOpT-1U%{hCiDG=RKYU@)dZ&~vV?1qa?V~A?l1HEiSCw80xg>cos8&- z{?F2uwF8=YYih(9j2jyXi5Zh>qu*_3vNGKC+-_mm-Q@2%G%TlM5Mh z*ys9_EjiA`TXpm_b*W=iB5WO~mMG)*7loG)V|iGQ*?2)KxhNRrC7_@Dq1nUSMiT)< ztxZOKj*wqjKw+|9mZOVXde(LbyOJQ_L>IE{`}s~#Jym8BU?-^@Ft0Hh2?TK~q!E9- z(x_n$)%1Ksjx%k)y)g>tHU7}l(aPGzG|}w%oeS73`~W%(e7=$A8xbs}J~<#|PAebE zAM69b`pf>I)UXeF3^fP?9{woTYwf|fa!6qF~X z<>>EU5Sw`#!xg?Wzc~#M!en2?7&H?X#N|^35fB#}sN+s|_AVB3{ zN~M4ax4z$?St`8`)u6{3OHh61Vd}|#L7x2kmw1Uu-Xn0EJrben0q*eo8=vp>xmKiY zI`Sx3vvkDav}`5igx|jmp;+;RKC~)yG)$4hk^85#Cc_R^@zu>y8P&2Oh*%>%eZE$7 zctH_b2&rl03?+&IZOZKTFY=%Y(f+m@0g+hxv^p#LmhYGJHl+--!XTy_4yui!d3&y3 z{yxuSJM&Dm=;e5XAtV?`s3>H~e1*a1bE{qdJ~!qIMQvf47EX+5P_UfS@%e%KpU?se zv+DK_DZSFRsPdQ*yn8cHpTAF*ppeqa*8&+)n5XCkj7^s(^bofF{@%~$(uHhTKFw>R zp5oI}KTl|~kc}YiYui8X=K~+9-(M$Y)dx!Eh>qo{upSHZoS0xj_WR}jM%e&-est86 zY~2UbPN+H0P~_~o|6_+{8)+2Ls_-1nv-tE4InU2f>N#I}7(Q;xu%ELJ_cWBOXLlqJ zox{){pc6`Tq88SvE#r+q>NCQ7dvq5gu(Fj|{xGJ{(SqqfSZD$3z@)3a9J)mmL8Pvt>3-mfCiBI={-#Urez#iZu}thcHC0Y=!EWl%7*fXiYF9 z_qlw+#4TYWB7+tp2wq`(0}OAZQL6_91R~nqx$NzC^_=L16J4F)1{Hpzw`yzvAr7BE zTn->S9XKLlz}x#*I3*?iX_Kp{o3C1^5w2G6EU|{c6Yb%CDux%vaf%c z3_FZJAL1VsQQQ!K=LXH6XH{r4oc|`ncf@wDUTsT>{+I}|>f<%7I9b7nT*K-7N`hu0 z09Ha_Y+qhw?XLDOyAADMzI>H4>+(aaX%;8%{k_Y4V7SM6R)n=aMD~Wrha@8r0_!@E zSNN!Ge}4<2Y9+FNdH?biWf8f|^524kpEzC4?`&U#Kw`{xCBV;~W+K%eaEcqz<$bMF!i1q2+%wFvvs)$|M~7Jy;>BMA%|#IK%^ z!bzqv6HyFyQO{KI+byN2*ZH2 z%sd%=NM_QlNpJOq`Aq&}kt&jLY>0sG@4{=V_?M!8+^*R+CZQ`9gR`){R1H)94u9_EQmhL& zvzu~t|MKd}bVYX+vu>+g-aC!R<*SHXMMUu}st%nFO3L&z! zb)`(W9^+h`atNGJ@yxid^9Obng&BujPSZ-}olo5+chF2+@>L!7gUg^R0^9s6;sB&D zkla5=t$vxN=ey>l`!C!Hqhy7Ni2F^+M~rsXH6+H1-tHCFgBFIK^R7jlnLGPeGaa4B z4u3HTLZf!Ba(&Fm)3eT+jHn*4UbmpelDy1W8@xo@-M)O}{-s64fv>?Ut_LS}@U2*BDw)J@#~;Hs-dZ?3AKy0oO7ClbVnBO|(d>D*sa0Y_>^7Trs3gXLB zlIl`VFkVkbkvbQ_0{aD*WEQgv^KvcKtv$OeU@z$2wr5k2m#u*M>JU-GM{s!2rY8in~wxWe*Bo9N3XiR6N72-y;JvtP7D5o z_8R+v@g|u`tBEJwV{vb-fFbYl#)g3~aEvI5Uca2okQ}YDp5ZaC><8>8K*}>)idnMx zK=uB>!O^PfP=b;MjLf&t3obq+6ekd+uOIjjfXo|D^=3cVsz?pjIf7W=G^ouZ_b(_? z%Aaa-{ZL$5tVXRe5rMvc$=(3CPPh=T2Aej|OKPGIGwFw)7I0>+?q6Cz+L|jL5%75_ zK1Ur_a`{QV(>`+lq9&@IwXQep7nlx7tGJ{SsA_^%^f9Y=9JXcOw*aiC+6OW&gmhX!DtNkn90$g#AfCdI7e$wtP4dY9ZO#+P{%Pts` zl_7|{d6CBp*NDoV{Jar1x;n*>l12qJR$;cNb@WB>CEw;8AwwFzB5|bn!o`Ky4?ggeQW2ME89Gpr z2`e^rYTXq8CNA02eO;u^xt|Wjr+uCQ~7b)0#@~iYPSedX+V~PvupDPn7`FifYJ8 z$PtXNX(?o}q4lR|5??r`HJ-t0s|NPqY!KnVtEi)sCVIZ%p>B3#rre1kSrY4Uix|$arr$9)&gb)u@uE^n`cWpe8AdW><)!d`sxnx@YFHkO zea73>M~S6gnXTKipfpOmootY&l5v&s$y^i^k-F+Kl`Gu%p_MAC8@HPlS|uqh`7HHd zX1+%!7UP2&mAk0R)tWUkFd8-cB!-NDb>&;Rl=~lyx3HKmMRA~Xym7L%H3xvQu6!Y( z9=lqzz=_FNuO9X*C9tzRB8Vs$gJFgQ)Q@PzI=#G0O6yrIHsn;UVu=nylFE7wWcxCV zpsqxf@;c@qG(G!-4rJ|?J2gNNDfP(agk)e~y6S=xzjD%7s5zB-09%eWaM}v5oW~Dw zl6*O4p^$Awvre{$;$%Wr(r7kC0;`pR>TDZ?*e$-oC8myxL20q**UmXcP?J4_Y!(`J z?39K(d3s`LPA^3Dy|zxPwHQFH5Y__Kpi6G7m&4xzaLG{gHZm8_i6f<~LM^mnF zlxijj1gaNp+Y=?tsoUxWs9dfPE!^{Nu3q^UotNIla9z_13mWQ99ui#acF+za%go;j zaySIfKore3r%J0o;F8L#gbF+Yv6-DNHex-tGBTYWhbj4tbxz6#UWeM%(9$j^s$c%p zIxM}RPzcqljX8G31!Z8ACA&>2g$$KWwROCUqGwC_*jl-ZYM)JgWHVJt!08bs&S~^m zrZ>zoH&u*AnQ&5}m>E0Nn`7QYQrT7pExb(Ol0pDFpe@^`Cy3S;gI7(?%$#yhb##ke zvh86IG8+S*u67hMda>;3)m*)0!Yj_2uY4>HcZc&KNA5v0Nl(>}bgmzfL)Hg{(2uHww)`F8RYJ#M`V!6dvkm zR_3I~dNLTY-lyS&l}iSm>cI&yAh5z5jK>3(4kg;H-?n{CU{n<N z0D4C;l#$4{kw(y-hykGV0dz=~a}Tx7v+$; z6|j;CYWh(sPQ=g_NSp`-rrP$U*J)Nun-c>N$uPi;LfrBl@yqTy_W81Pw5?y5J|D>E+X26y@w>_wx^L|LTOfk2_+QArw(1}Q zQ(M{#(_h;xdoOgqzPYV<`8fvP?q=#G{uiR}55y942I2ILFLeLR?Xh2z;PxACy5R-w zpSfw{h`o)|FLeL*%6~7s+i#!s8U7=Ea`gXxf6TX9{OkFrL+kmModMDj{uk8;9Q~)B zO0{wZ`X1B%i|LCJeHzb(SH=eai`(xsqU$4sn##}JR~-4z?tRw$tG^jSbhok;;b&dK zD;fJG+k7}>Ym(m@vZ-hK&(g;}kg<=A$TucFjQ*Oh%N~=xcrg0@I$Un`M?CRazxZ95 zyg5GNpXHdBEq{UTPtYiPRa2pF-&0kyet6Yy`IecB`2zq3!O&JJ#PkI4HiuV|-{^Z83c| zRXl9Ic$?x){jJp|B>82}KKKV%I6TxaXF3;=I6T;dHu{hcR~VLY2p@Ss4s?KGMI3tw zA$V|b@!$|y^z9#}k6QE(u`VAn`r;kX=hrU&V%T32^NT`$gh0*DAnbYer+oEWD%%t! zr13*jqR$W~pZ;tUvikmBLrs2j6l4JcQ3(E;1O58B6+-m=6-It$fmMEVrM~L^5J#QT z3nloVZ(l!T(D8xfJJx&tvp~Kp3V(~Cl!n(W{^KQo7NL#A9IkfMgLi$wh`y-m#_F&awDu#sWXh<^x_^kQt+t;3HcK5S$Q)`rOUWVF z+cf(i`=6^0eMgy@qP|X79rTJL6AVOZ?bAS}ejlal!;khRl;AkKwhuRPV0HS2(<>9P z=RbQPM(f)O2FS^Np-IXgdcY5b86%CNAGW2K`*@UmCTq&Kj*;wcZ)*ScGdG^OothmQ zT4xRrV~xDIPK$F|RI#Pq%1qE28>%ZO7HXcAR?EogTy3+D?Qh-g{aW_Xt-zMwr9ZW` zKcYfPdc5Lci?-fKtrgpA#4+h;!bK))$E+w!G@F>+@_uZY{mMU6CVMC$s(7UX@cKCu5o9+H0#`ueN9zfY_cRg^@UEWpkzCa)=(cW7aWmjmCn z9fS)?mtZ_Dm1og6LSs`Sc&-;(BkQ5oTpRW(E9IB|Zuj+<4PbwZad7@Um%g^#V>6@F zr`?&=1F|5myy>$&os1;H<*9wC!@k!Zd|>{apbv4XJNt7LS?kAQR<8!t*LR9`y-%oo;8T3S4&KEFC1}gBxgMuz zCXT}k-r|4qhF4!;A|(FG=ri;+S22p8n6xeu9N)#IWj4&1N4@CB;b=f=J@g5Df9n+2 z|5LHgpS88Vh^<}NYGK23n#p-#d9S2(f94yWy@?XPj>OZrM7p!&31sW`+fUzK_St_i zkQt=UL98hK&2(&FftOtMd26dYk`oU?)lns&c_mSrSItpLkv-t9d$oD$_ET$%F5xV+-H~!F*7BYM!%e+38?{%)7(RTL#)#`%t&s!n>TZKj_{ep+YtMd>` ziQSdhyIv%WRJmL?J3eO<2WaFArtT%C;P35jZ9T>Qv+@DdM@j4#iXNLW^(ok1ql;x8 zlZiwoc4P|MHBtUYO-+0%FB%8} zIK9mk@o%k`j6ZMk?>Lcxp`SlA7_&?bi{~*Sp~aSYQ5z><#w+^%J$T9JRU`~aA#k=2 zh=1wa!#>Bdu!9pj@q||5D@r`b446hrl9;}*Tp7WHT8@MkQ?yyH&c@;D2lfxV{yYCx z?*GL%3`%5MAOG`~R?#J5XK@(0GU$2F!S0KqAIf;p3ND$2X8i6v*xq6*Jb*`u#qxgi zTR%t{%aVZ&M_(~J6|uv|TD>BtM~+BIyIQ#ZKINxB+Fr%JSQ$h7ObYZ|J!3B4Ju~ZS zenHc+(p0%)id@Me2sxesk$IHykP<%*nSXxD#kFs>H2%n=6RrUb{kR2|^CmQ7(Z$9$ zC@qyd9>X#KtB$((`V>8{3EJmltP6aWLUTb+}y%_SU<@;S&1?pFFd1!5QHCGm)){B!4$6sVr(EFZzX%(UhijjmIJ2D-8!b3V9${ZnUdICF~S$2de!jw@AtO5v9m={t^1Ez9xIW-^Sfp2cbmmb~6VqoeJ#QpW)Q&>lut%Y$kDDVs?aE!(9Z zdh|1rrQK&EQ8Lo0{lBXN5Fe5`|1yzY@)o@ym;F_uUma}K{CDI#VsYv<*AMnUDz;L| z27fG@Ama^&v>ADA+m7B?32mQ>O91wVbX#cspb(v0{u0-^S5olk@bAOu0V7@R)LAKG zZJYXHFSS_A|KuO@^?CY%`Ylsl_dbyE4dpv(vR<@&v!UOU!HICXxlPIBB=gpe_Xsa&`|f%yo}7$QxIJ5vgpRthiwLd@t^A}6WvIQaa6x>^`+yB9duwo+1ESpj-dc!L{%FAGAe7c5g^e|OwJ}z_BU+9YL9y0k>2ODQLaDW^z|0(@c{Jv%Bk!}3g|+Q-^|qEf#Zqax}){- z%en6h`_uK`IZ#xjo#}-xa1NEV8awKnnZ_X#NByN+STU26cWFhf(X^9s_xhjw8$Wi- zLe(nRCkpikg4nSbWO{b>*Jdm`^KvLrskF+ z(_m)79Aj^HGx78JL%!z5erB#p$hH5m*)V|ULve#lUuTAY$y4d(tY;QS&hhE>lNmr{ ze8=6z>#z1>K^rx1wP&fh2o4cJQ;K(H9gTEKQ2Cl)O4-q7jhudDOo%|~{artKar_g% z_KQ*Z999|WwkkWjHw}t=O1Waq0lRihm{>~Y^mJ;+4^=xa8F=jC2P5J2FEdH`@;w0r zOAF;k>1)CuERioCM=zNoYX#6gw4^eTX8mn){pX`6W-z5sI53rtCtQ>#UnPdlsWnSqyUM4g(Mm-rs^^RdQfarW z)h@sDS#5g#KaX`%(Y)x#3uIJ}PsvL#qFbXc&m&$~BVN(BRzqeqN-EmP2iJd$oU_x1n$`SSy)bc^Cerd~1$DdgpESJ<-|7+YrO@HiLkcwIu z@dzW*Lf2YZ1s${IBjc3VYknjPNGrFwTDtid{c`ir`8UPd`XY-Etueo1Eq0XBg8#ys zgy3qGBCWit`IyYfNQt!3Z(d;RlLoK9~Ko z5gO0G1kS?uZ~zX6K9&bwawxV@c1G21Pp#VzRocoh63dNMz7APA{NTe2-|~>3*2RZh z|HI+r+jdz}J6_FV4mUPMRWc4nV(_9*$392o!ZR8^|ImKMfAd1_KQtLz5fU_n*rwI` zX)!(u^|^fwrLBn*{m3+OyeriGy~EAriY;L27%&3ff2?&-X#JXhbev}sHQ1wPZfLJP z%Bfxc*#N9XkCs{SvO`AFu-@wxU0Y`fDJQtdDa@zWx?ZV{D7b)R+F8Rr`pjJ%gUas$pu6na-i3M_HEw-(~ zu6)-;Q=jBwDXrup?dq#+tE12C+~2=Q;x`ZZ{hPNSiGSz^4Fxm`*^8O&&K~v1qjrf= z|MJp5^=2=*c?T@0nHPtA^|(BL`poI`2N!q>xG;1AFzJ(%g4BM1u$^d&Fsuew%OgV( zm#gu-ruED0qwSBB56<)b`*|h;`v5XS-~E54PhKki-~i|-30t1%mR8i3tgPMSMX{a% zBYRNPIK=G1A=iI?@4ULOxonfIFPggi?!AzuYhmDm)Ucp>9WYehfaK)ulW z|KXD9w{-r;{ftcn10B49QT7|Nu6pHXd69F?F8o~SZ)EjU58xM4Vsg?i50-~~0e0cw z5c>%@_L3iR9IYm+uZXmf(a32djpU1u6zM3Wtnd8Ju$!gruD0SoiecJaSUUR;xc}(= zhwo$%N{MhR#wN6~fVO|3pdT@zeEp??)})S+pY-qn*;<$AMDg(8!sZ1E%isb{;@4LW zwUNkp7ZFVLvFVsY3$L?TKB!Xq)mO;ASm9Kgv-3%rgC&6<93B$?1uj6@|C9{7#;zb5 zDR42-hz(8;X<`Fe+?AtK!kjZ2dgd!sgff;fobl%#fJ;DTdhEtSgq3fs*4H_#Rc<TBU{yW1!o4*MVBYLiOxz($Y55-7Q;$`{Kl=2GM zvYm5zQJSnj*4^?#^1oyf91btF)Nz)@;6fa$Fuou{O~zw^za&V5ap0p&5qfnpXX14* zdPT)!?tk2NS$V8MT6O*7*AOFTZN>GVp0igQ!4RSBfsZn?c=Le5wcMI;SlsD5w+^In zTv#p-UF%Fc*8G7B-@fgr+6RlZU>_Oq3ZokR}4wG96xM!fV%x_P(1 zk`Hl>AI4-q@|==?>^Wu%E6@F4jVB*KrIWO>lK1UV$0iE@2M!^$&y9H4FNxu13;dlSk=-XJZ7{918_Tw+O=Gy1g z&uicpR&!<9um3mW3#m8Qi?{aq9`6gR>w2-joYe+1@4MGOTmPJKSNTHf+iv^9^Jczp zdwl;DZT?xRF(xOnxAq@D=Y23Agq&kP=Tg%3y-%EDR-xm;-#ISnD|asSIcqKq=b-zm zAb;}Nzs989gW4rhI z3qK0N`Auq+));(xije)(YerLc&TXyEoCZO?nfG>&5P~Dh1W^qxll*yA>xUmY;?y>) z8@Tk+4>JO&@*(|J?8joLYrcvE5o)PQk(7F8llU0}@)yDonfN8GhDvj(>S6p`^q+;V zewzn^7Ha7W#fz_2^nm|zE`(?BLytlXs55uMzfqxVu0jlW_=OhR)gOeYmz<6;e*S&c z*4COYxt$yp;F5B-4sIH|=e9P_Y^WdpkQ)l6vDPc#?u)t0ZIeH*FMSy^W@0i)mXU}u z3$5PVjS<4?N<=2f!Bsfg1yU*@3{iBkzPT!?=yg+xD3s_Bp!Pe36u{A5dP_J+6R#!8 zu$|$_kd$QpH~ooA{4dUgu(n&Ri7^oLj^K%4seSk@(wbG}T+QPMP+7n1QY-Xv<~aYD zLp&4>(^KQ@*7D2-2^gXiBZTz)&y8h~qcP$m4g@=}Yhx@!byUj<_ z^^`fgb#R*T_oGS0N~xvkhGab>*$YeJ!K%i8;!ijc3Sga(NGT}K((&D|N9$wG=1&qa zJiL!aB+5jkC6k{V#KpMTBDxrnveV}xm4OKI^|+6b%fXMsz1?=VLhWe7kpxMaQb!vh>$nP17|KYM>yu$ z0iUq?_3B*YIof4mCcx11P`GLS=jDhMKbttQKwq+b@UVaGIRA)BcP3hSL6`5yR!dS? z_K(>Kf5Pn^sv`#L{d@UnmwU_jFMgOdx@ks7msaT(Awq|n=T_%7@5O%wn~|#8gF-z) zd%x!myQC+Go%gwP%4oRZs~j=K)vuCP7<>DNn`ckoes+_4{7FLC5>dN=!w!6y4NCh1 zo2Sm7KbOz8W2}rseYn(}I1_(#rHK3cs2-j@cNYJpMO#)ZcW+Qr554kiZ~x%j2hJXx zGk#qx(b0^3!4m(Em3Aj?t+pQH z8pT6M_IehZwP%hG5IfKL=N{u8#-FKK*wfPE-g4_PbPty2R(vF2z2swo&2v@rq1d_2 zgL7y3AmOYZDbS|RYq=z$tV6N4@dtH z-o?A+BY*LUC!cuo)RPyFrS^Gu`Bd}rWsm)?N5AUNhj&|U(dtH%I~~Otz^T8*ziTot z2-MTuoao)Jg-U=liqhm6f3>=;MZKq^c$)Da>!-!R;w}(&PKx1~Pa{(wQVCGm@Oh;W z(+^epDBO&2H@NPvTP4AyobHx`FciCX79S%W>3YRJLO9m(e&!g7YtfqG3K`u|!%fo@ z?A%S}LZ(_Sj1iFJuR_&lx5_0hEjm>oX+NEah&z~7i+_}Iw8z!xIr-e~J|~~${M>x@ z`=b`CmtB)4n?PR;-EmXgug3n!9oqrBRW?{?)Zuul=DD-(#w{*wG@bbLSlY*TJ0GAu zBEjN6mrYUD=XV|75zrdp7XI@-4l~OFk67{Tr zGGRqi@gN3CPQHnPTp2N z5+z#ToXw-ATHQL$k_{ddq4qctL1uvTXvJQ%qoBd)x2f(=U}dS+MrzE8%pQRqm zX~soGK?~>PF6tpfk2IU6p{@(1hDKYAdY`x@kP6F1ZlRknoay4!-ccNQWnKALH`v(C z)Kk6sHTSCrOr->NmWN;zF$Tj738){@igkKi1%((L=Gl-OWWOG6?FbKNpf)l@T(pRWC#e$BuCDm&$Q8e!$>M{K| z3dbxIa`K^tD$#Gn$%L$=(QJwogHZ^ovrStm+AY4qMO7zT$0X7_=NLi6dfdf{l~}i< z4(q6rT=q3rS-|uW>*8QNmxe%sSjQWu|UslFwM@q)hk-CIhO36z#$&5ee+5T59Z8 zXm%yAJq8Z4XJ1rfS)Mv|P8bHeNM3YawN-sjd$Z5O4A@7$bs# zTHYmJ^Rb<)$E6^NAg9h%+cxBOcQ_w%k|uTAB^fK8_&0M=Rp0qS z+errj3J0~PiZ`A_z1CcriC}pxNc@ndzRJF0LmDry^Z45~pa@QdUBr#1Fgjqn!O6@~ z97zd@q||F9!|Ri5jE>P0pLffZbVd|zp~?5*?Br61~T>7BUbK7iN3@ctb(sD*bo^Y$xJ0NLG9O!dRv<6g^!z9~I`r*&QZ$E{+RRy9(25m% zfzu@|X`C-J{V*tAmcHDc&>RyvOY5Y$jO&5M#jq7nyET&BSgy!RbZ>gAThTDFPPVy`M z1np^{$SHVfcJLwA=&LDUxhYTXvJ{$KW|F`%xs2Vd%k-8&Axu`aXlX)BMI1zbVGuJ> zY@196Sn3^UZ)oE|N(k}8xR8@-EG5}e;h~}zi9)Fm5rdZ8CoDU~Q2=Q(U2NJBPVNN= zeTqo7!-i0Ki~zmCFV_r23&{BL&0)4f41l=_x_m*cREdTxC?(PQ2^dlQ)nx&FQIYYe dsa;s&NeVl>XjJB5#Tg}HHpV5{i{NVi?*hmA5;Xt- literal 0 HcmV?d00001 diff --git a/testbsps/q1_decompiler_test.map b/testbsps/q1_decompiler_test.map new file mode 100644 index 00000000..6cfcf8cc --- /dev/null +++ b/testbsps/q1_decompiler_test.map @@ -0,0 +1,146 @@ +// Game: Quake +// Format: Valve +// entity 0 +{ +"mapversion" "220" +"classname" "worldspawn" +"wad" "deprecated/free_wad.wad;deprecated/fence.wad;deprecated/origin.wad;deprecated/hintskip.wad;../testmaps/deprecated/free_wad.wad" +"_wateralpha" "0.5" +"_tb_def" "builtin:Quoth2.fgd" +// brush 0 +{ +( -80 256 16 ) ( -80 257 16 ) ( -80 256 17 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -64 64 16 ) ( -64 64 17 ) ( -63 64 16 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -64 256 16 ) ( -63 256 16 ) ( -64 257 16 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( 64 384 96 ) ( 64 385 96 ) ( 65 384 96 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( 64 80 48 ) ( 65 80 48 ) ( 64 80 49 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( 208 384 48 ) ( 208 384 49 ) ( 208 385 48 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 32 ] 0 1 1 +} +// brush 1 +{ +( -80 192 16 ) ( -80 193 16 ) ( -80 192 17 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -192 -320 16 ) ( -192 -320 17 ) ( -191 -320 16 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -192 192 16 ) ( -191 192 16 ) ( -192 193 16 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( -64 320 96 ) ( -64 321 96 ) ( -63 320 96 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( -64 64 48 ) ( -63 64 48 ) ( -64 64 49 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( -64 320 48 ) ( -64 320 49 ) ( -64 321 48 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 32 ] 0 1 1 +} +// brush 2 +{ +( -160 -256 80 ) ( -160 -255 80 ) ( -160 -256 81 ) orangestuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -160 -336 80 ) ( -160 -336 81 ) ( -159 -336 80 ) orangestuff8 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -160 -256 80 ) ( -159 -256 80 ) ( -160 -255 80 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( -80 64 96 ) ( -80 65 96 ) ( -79 64 96 ) orangestuff8 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( -80 80 96 ) ( -79 80 96 ) ( -80 80 97 ) orangestuff8 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( -80 64 96 ) ( -80 64 97 ) ( -80 65 96 ) orangestuff8 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +} +// brush 3 +{ +( -160 80 80 ) ( -160 81 80 ) ( -160 80 81 ) orangestuff8 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 0 1 1 +( -16 80 80 ) ( -16 80 81 ) ( -15 80 80 ) orangestuff8 [ 1 0 0 -16 ] [ 0 0 -1 0 ] 0 1 1 +( -16 80 80 ) ( -15 80 80 ) ( -16 81 80 ) orangestuff8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 0 1 1 +( 64 400 96 ) ( 64 401 96 ) ( 65 400 96 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 0 1 1 +( 64 176 96 ) ( 65 176 96 ) ( 64 176 97 ) orangestuff8 [ -1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1 +( 208 400 96 ) ( 208 400 97 ) ( 208 401 96 ) orangestuff8 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 0 1 1 +} +// brush 4 +{ +( -176 -256 64 ) ( -176 -255 64 ) ( -176 -256 65 ) tsl_wall1 [ 0 -1 0 0 ] [ 0 0 -1 -32 ] 0 1 1 +( -176 -432 64 ) ( -176 -432 65 ) ( -175 -432 64 ) tsl_wall1 [ 1 0 0 16 ] [ 0 0 -1 -32 ] 0 1 1 +( -176 -256 96 ) ( -175 -256 96 ) ( -176 -255 96 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 -1 0 0 ] 0 1 1 +( -160 192 352 ) ( -160 193 352 ) ( -159 192 352 ) tsl_wall1 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1 +( -160 176 80 ) ( -159 176 80 ) ( -160 176 81 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( -160 192 80 ) ( -160 192 81 ) ( -160 193 80 ) tsl_wall1 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1 +} +// brush 5 +{ +( 192 320 48 ) ( 192 321 48 ) ( 192 320 49 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 32 ] 0 1 1 +( 320 -320 16 ) ( 319 -320 16 ) ( 320 -320 17 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1 +( 320 192 16 ) ( 320 193 16 ) ( 319 192 16 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1 +( 192 320 96 ) ( 191 320 96 ) ( 192 321 96 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1 +( 192 64 48 ) ( 192 64 49 ) ( 191 64 48 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1 +( 208 192 16 ) ( 208 192 17 ) ( 208 193 16 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 32 ] 0 1 1 +} +// brush 6 +{ +( 208 64 96 ) ( 208 65 96 ) ( 208 64 97 ) orangestuff8 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 288 -336 80 ) ( 287 -336 80 ) ( 288 -336 81 ) orangestuff8 [ -1 0 0 0 ] [ 0 0 -1 0 ] 180 1 1 +( 288 -256 80 ) ( 288 -255 80 ) ( 287 -256 80 ) orangestuff8 [ 1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1 +( 208 64 96 ) ( 207 64 96 ) ( 208 65 96 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1 +( 208 176 96 ) ( 208 176 97 ) ( 207 176 96 ) orangestuff8 [ 1 0 0 0 ] [ 0 0 -1 0 ] 180 1 1 +( 288 -256 80 ) ( 288 -256 81 ) ( 288 -255 80 ) orangestuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +} +// brush 7 +{ +( -64 -256 16 ) ( -64 64 0 ) ( -64 64 16 ) brownstuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 192 -320 16 ) ( -64 -320 0 ) ( -64 -320 16 ) brownstuff8 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 192 64 0 ) ( -64 -256 0 ) ( 192 -256 0 ) brownstuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( 192 64 16 ) ( -64 -256 16 ) ( -64 64 16 ) brownstuff8 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( 192 64 16 ) ( -64 64 0 ) ( 192 64 0 ) brownstuff8 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 192 64 16 ) ( 192 -256 0 ) ( 192 -256 16 ) brownstuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +} +// brush 8 +{ +( -160 176 88 ) ( -160 177 88 ) ( -160 176 89 ) tsl_wall1 [ 0 1.0000000000000002 0 -32 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 +( -160 176 88 ) ( -160 176 89 ) ( -159 176 88 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( -160 176 96 ) ( -159 176 96 ) ( -160 177 96 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 -40 ] 0 1 1 +( 288 192 352 ) ( 288 193 352 ) ( 289 192 352 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 48 ] 0 1 1 +( 288 192 96 ) ( 289 192 96 ) ( 288 192 97 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( 288 192 96 ) ( 288 192 97 ) ( 288 193 96 ) tsl_wall1 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 +} +// brush 9 +{ +( -80 -16 48 ) ( -80 -15 48 ) ( -80 -16 49 ) brown_brick [ 0 1 0 16 ] [ 0 0 -1 32 ] 0 1 1 +( 192 -336 16 ) ( 191 -336 16 ) ( 192 -336 17 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1 +( 192 -144 16 ) ( 192 -143 16 ) ( 191 -144 16 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 -16 ] 180 1 1 +( 64 -16 96 ) ( 63 -16 96 ) ( 64 -15 96 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 -16 ] 180 1 1 +( 64 -320 48 ) ( 64 -320 49 ) ( 63 -320 48 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1 +( 208 -144 16 ) ( 208 -144 17 ) ( 208 -143 16 ) brown_brick [ 0 -1 0 -16 ] [ 0 0 -1 32 ] 0 1 1 +} +// brush 10 +{ +( -160 -112 96 ) ( -160 -111 96 ) ( -160 -112 97 ) orangestuff8 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 0 1 1 +( -80 -432 80 ) ( -81 -432 80 ) ( -80 -432 81 ) orangestuff8 [ -1 0 0 16 ] [ 0 0 -1 0 ] 180 1 1 +( -80 -432 80 ) ( -80 -431 80 ) ( -81 -432 80 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 180 1 1 +( -160 -112 96 ) ( -161 -112 96 ) ( -160 -111 96 ) orangestuff8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 180 1 1 +( -160 -336 96 ) ( -160 -336 97 ) ( -161 -336 96 ) orangestuff8 [ 1 0 0 -16 ] [ 0 0 -1 0 ] 180 1 1 +( 288 -432 80 ) ( 288 -432 81 ) ( 288 -431 80 ) orangestuff8 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 0 1 1 +} +// brush 11 +{ +( -160 -448 88 ) ( -160 -447 88 ) ( -160 -448 89 ) tsl_wall1 [ 0 1.0000000000000002 0 80 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 +( -160 -448 88 ) ( -160 -448 89 ) ( -159 -448 88 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( -160 -448 96 ) ( -159 -448 96 ) ( -160 -447 96 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 72 ] 0 1 1 +( 288 -432 352 ) ( 288 -431 352 ) ( 289 -432 352 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 -64 ] 0 1 1 +( 288 -432 96 ) ( 289 -432 96 ) ( 288 -432 97 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1 +( 288 -432 96 ) ( 288 -432 97 ) ( 288 -431 96 ) tsl_wall1 [ 0 -1.0000000000000002 0 -112 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1 +} +// brush 12 +{ +( -160 -256 352 ) ( -160 -255 352 ) ( -160 -256 353 ) orangestuff8 [ 0 0 -1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 0 ] 180 1 1 +( 288 -432 360 ) ( 288 -432 361 ) ( 289 -432 360 ) orangestuff8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1 +( -160 -256 352 ) ( -159 -256 352 ) ( -160 -255 352 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1 +( 288 176 360 ) ( 288 177 360 ) ( 289 176 360 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1 +( 288 176 360 ) ( 289 176 360 ) ( 288 176 361 ) orangestuff8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1 +( 288 176 360 ) ( 288 176 361 ) ( 288 177 360 ) orangestuff8 [ 0 0 1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 0 ] 180 1 1 +} +// brush 13 +{ +( 288 192 80 ) ( 288 193 80 ) ( 288 192 81 ) tsl_wall1 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1 +( 304 -432 64 ) ( 303 -432 64 ) ( 304 -432 65 ) tsl_wall1 [ -1 0 0 16 ] [ 0 0 -1 -32 ] 180 1 1 +( 304 -256 96 ) ( 304 -255 96 ) ( 303 -256 96 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 1 1 +( 304 -256 352 ) ( 303 -256 352 ) ( 304 -255 352 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 1 1 +( 288 176 80 ) ( 288 176 81 ) ( 287 176 80 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 0 -1 -32 ] 180 1 1 +( 304 -256 64 ) ( 304 -256 65 ) ( 304 -255 64 ) tsl_wall1 [ 0 -1 0 0 ] [ 0 0 -1 -32 ] 0 1 1 +} +} +// entity 1 +{ +"classname" "info_player_start" +"origin" "-80 -176 136" +} +// entity 2 +{ +"classname" "light" +"origin" "136 -360 224" +} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index cfad0f67..14abe48b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,7 +14,8 @@ add_executable(tests testutils.hh ${CMAKE_BINARY_DIR}/testmaps.hh testutils.hh - benchmark.cc) + benchmark.cc + test_bsputil.cc) find_package(embree 3.0 REQUIRED) INCLUDE_DIRECTORIES(${EMBREE_INCLUDE_DIRS}) diff --git a/tests/test_bsputil.cc b/tests/test_bsputil.cc new file mode 100644 index 00000000..c2b17f81 --- /dev/null +++ b/tests/test_bsputil.cc @@ -0,0 +1,36 @@ +#include + +#include +#include +#include +#include + +#include "testmaps.hh" +#include "test_qbsp.hh" + +TEST_SUITE("bsputil") +{ + TEST_CASE("q1_decompiler_test" * doctest::may_fail()) + { + bspdata_t bspdata; + std::filesystem::path path = std::filesystem::path(testmaps_dir) / ".." / "testbsps" / "q1_decompiler_test.bsp"; + LoadBSPFile(path, &bspdata); + + ConvertBSPFormat(&bspdata, &bspver_generic); + + path.replace_filename(path.stem().string() + "-decompile"); + path.replace_extension(".map"); + std::ofstream f(path); + + mbsp_t &bsp = std::get(bspdata.bsp); + + decomp_options options; + DecompileBSP(&bsp, options, f); + + f.close(); + + auto &entity = LoadMapPath(path); + + REQUIRE(entity.mapbrushes.size() == 14); + } +} diff --git a/tests/test_qbsp.hh b/tests/test_qbsp.hh index 23a30bfa..b2c09a8c 100644 --- a/tests/test_qbsp.hh +++ b/tests/test_qbsp.hh @@ -10,6 +10,7 @@ class mapentity_t; const mapface_t *Mapbrush_FirstFaceWithTextureName(const mapbrush_t &brush, const std::string &texname); mapentity_t &LoadMap(const char *map); +mapentity_t &LoadMapPath(const std::filesystem::path &name); std::tuple> LoadTestmap( const std::filesystem::path &name, std::vector extra_args = {}); std::tuple> LoadTestmapQ2(