From eb801d996a42c17a3897e62419f2b338b59390f3 Mon Sep 17 00:00:00 2001 From: gered Date: Sat, 23 Jul 2022 15:09:41 -0400 Subject: [PATCH] commit a whole bunch of test assets that were missed previously. oops! --- libretrogd/test-assets/test.blendmap | Bin 0 -> 65542 bytes libretrogd/test-assets/texture.lbm | Bin 0 -> 2736 bytes .../tests/ref/blended_filled_rect_drawing.pcx | Bin 0 -> 28233 bytes .../tests/ref/blended_horiz_line_drawing.pcx | Bin 0 -> 28736 bytes libretrogd/tests/ref/blended_line_drawing.pcx | Bin 0 -> 29680 bytes libretrogd/tests/ref/blended_pixel_drawing.pcx | Bin 0 -> 28817 bytes libretrogd/tests/ref/blended_rect_drawing.pcx | Bin 0 -> 29773 bytes libretrogd/tests/ref/blended_rotozoom_blits.pcx | Bin 0 -> 32034 bytes .../ref/blended_rotozoom_transparent_blits.pcx | Bin 0 -> 31887 bytes libretrogd/tests/ref/blended_solid_blits.pcx | Bin 0 -> 30294 bytes .../tests/ref/blended_solid_flipped_blits.pcx | Bin 0 -> 30470 bytes .../tests/ref/blended_transparent_blits.pcx | Bin 0 -> 30241 bytes .../ref/blended_transparent_flipped_blits.pcx | Bin 0 -> 30400 bytes .../tests/ref/blended_vert_line_drawing.pcx | Bin 0 -> 29738 bytes 14 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 libretrogd/test-assets/test.blendmap create mode 100644 libretrogd/test-assets/texture.lbm create mode 100644 libretrogd/tests/ref/blended_filled_rect_drawing.pcx create mode 100644 libretrogd/tests/ref/blended_horiz_line_drawing.pcx create mode 100644 libretrogd/tests/ref/blended_line_drawing.pcx create mode 100644 libretrogd/tests/ref/blended_pixel_drawing.pcx create mode 100644 libretrogd/tests/ref/blended_rect_drawing.pcx create mode 100644 libretrogd/tests/ref/blended_rotozoom_blits.pcx create mode 100644 libretrogd/tests/ref/blended_rotozoom_transparent_blits.pcx create mode 100644 libretrogd/tests/ref/blended_solid_blits.pcx create mode 100644 libretrogd/tests/ref/blended_solid_flipped_blits.pcx create mode 100644 libretrogd/tests/ref/blended_transparent_blits.pcx create mode 100644 libretrogd/tests/ref/blended_transparent_flipped_blits.pcx create mode 100644 libretrogd/tests/ref/blended_vert_line_drawing.pcx diff --git a/libretrogd/test-assets/test.blendmap b/libretrogd/test-assets/test.blendmap new file mode 100644 index 0000000000000000000000000000000000000000..a65c03352ccf3e97e63fe766a457222108a8f8d3 GIT binary patch literal 65542 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 literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_filled_rect_drawing.pcx b/libretrogd/tests/ref/blended_filled_rect_drawing.pcx new file mode 100644 index 0000000000000000000000000000000000000000..25f2b95a222c223b5dc0b663083d2ae83c879a7d GIT binary patch literal 28233 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 J!#uF|{2!U-Eua7Z literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_line_drawing.pcx b/libretrogd/tests/ref/blended_line_drawing.pcx new file mode 100644 index 0000000000000000000000000000000000000000..7a5b085bf51946db5974176a3842a7208ff5adc5 GIT binary patch literal 29680 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 inzIwl=M#iy!rT))-JSZrmhf}}se0hdm;jnnz zFBX)_dzMA7_*`YlKdZb`JS<+wue-8dvOHXE)s+wWtJUzi0kU)O7q&@nzZhg z4tge4^`%Ktr_?RIHn~#s+xeXl#4j^?nu(yCYHd#lwjZ@{ZwxnFsyoptXk>sc3?gbfNy+*$HI4i}xqt*pKqF#80C) zEztO%v*!o!OElej3#$`A_nnYZl{I;wJw|{*z60#^YP^pJs5D z_(}Zyh5hH|KVd`TpG*iP|4IJS3@&~Z%03V}6F-Tc#LoxBVN^tG%SZl`37%SJ;wSNw z__?mfv{}`7H$U~?vh^fAiSbYJpT_Txuh8?Kk9^>Bp&0v3KFqzc#tUp}==en1MgEig zC;87!6)XAAyAiCBZStSwKgoZR|73ix?kvKk_Ybk%O{>v~{3rR(yRT57_a|&>D7m5S zBL7MLllGUz@(*Ea`oxa)7CcY`{&yM2JTN7@b z-(isF147={Bz5$Tm8d(6D&H#{eONl}!_Ly(dwX zU(8n8=FQE`WHK3#$DK~6)oL{w4MkCMxm+rhipS&Oa5xwYilQh80>^OpyBDRf)1(F4RZ9X`F2VB79tT8^Rs&)CSnmfs->)E7|isuv2Of-}X z2V+5h*e?b}k5Aw|ZWqrv;b}mqfmh(p!hVxM97qPdVK47@b5%?;7$wn;pcX{dhlGHT3u5cCUF+0y z&3sBpMbj}UCTWM8_wrYm4l!z@T|;g5yAmOUwBPk{dO7?!JRhF7&RdOELupiVNu(u~<41PDoND;FmxA=?r?(&gcICE|gP0 literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_rect_drawing.pcx b/libretrogd/tests/ref/blended_rect_drawing.pcx new file mode 100644 index 0000000000000000000000000000000000000000..fdee79631b36966b11e26cc24d49b41c0aefded7 GIT binary patch literal 29773 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 bg8^|az|R6d104EH!{>nXIRoi~uIK*(w;XxB literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_rotozoom_blits.pcx b/libretrogd/tests/ref/blended_rotozoom_blits.pcx new file mode 100644 index 0000000000000000000000000000000000000000..79d6530a0743d1cae380624dbf2495761039777b GIT binary patch literal 32034 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 IA3V?h57vmj(EtDd literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_rotozoom_transparent_blits.pcx b/libretrogd/tests/ref/blended_rotozoom_transparent_blits.pcx new file mode 100644 index 0000000000000000000000000000000000000000..673af85a978dc230ab69fd6ac9f28263644d4ec1 GIT binary patch literal 31887 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 literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_solid_flipped_blits.pcx b/libretrogd/tests/ref/blended_solid_flipped_blits.pcx new file mode 100644 index 0000000000000000000000000000000000000000..fd39cb80c76828c14ed92e33a2d683c30299e076 GIT binary patch literal 30470 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 literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_transparent_blits.pcx b/libretrogd/tests/ref/blended_transparent_blits.pcx new file mode 100644 index 0000000000000000000000000000000000000000..9162f3fe7aa22d2c4443dadcd15cae035052a480 GIT binary patch literal 30241 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 G^Zx+GR6HvH literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_transparent_flipped_blits.pcx b/libretrogd/tests/ref/blended_transparent_flipped_blits.pcx new file mode 100644 index 0000000000000000000000000000000000000000..4e84bb67efa0f9898f38ea0ce50a88d859eec458 GIT binary patch literal 30400 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 literal 0 HcmV?d00001 diff --git a/libretrogd/tests/ref/blended_vert_line_drawing.pcx b/libretrogd/tests/ref/blended_vert_line_drawing.pcx new file mode 100644 index 0000000000000000000000000000000000000000..2e9d2c59afd338c0223948e0929763d553cc39d1 GIT binary patch literal 29738 zcmeI5A#Cbe9LB$i7hc|8f|!^w2$G9HaFYu5faSdtL%?=`YYXB zRk~IFi*{4p?+Dv(rme24J*L=a_F1Mlm}}`Wf@s;|S${6+@~<81wNpB~F-^B(jZm3L zwS30C*6a>freBw*r0WcF`F)pnRaIObEwxPo7kw^uy5E;60s?pK3SR^xBC zbaEx=xwP9~u&lKqd|m#0IhHbgvt&un0`c|HXLcfRnv*NNvTR|`g0aQoR0ndmvcry_ zsqAqw#hWj5H7fV2JC}mEJJr3L1&dtHW{&yeiYccoMZcTK|W68e9E|2y4Uau@EmH=2t zs9Owe1i<_sMYW2Ub#UU3B_R_4FU}pS=A{XMjb_j+(?U=c5&`fV-B5hKngF<}S{LX! zD5a?t?NS0@qZLVoPo)zFEasw#1Lj+>GGn}il2X8vvSs+Dr6xuwajr>y5O57tU=!ImiUdC$4TgRjiSR=taZPZJ{w5CU< zTZ<*ii327Mc-7;lr_z{gEyFjh2CZcRRO28Iz7-CfmMBaBOaRO`>J{2vTA2V?jqIuw zhWsGu17@mZ5SGQJFDYsf0${mj$0doq!~rjaz2X=z;(*69u@n+~6XXQI1i;g=9^($D z8EfT~e*$0vU|rRY8V893o^~r~-4TEc!V=mCbC2;LeZY(J^`sAYDpt}5{0>RVyQlP* zG+MQmF_>D-Y|8{l089p9t?*_YO8r`_cU7a8*kVzt8Pz4t17<4+UA4=bnuWfs9`xk5 z`VjBbG2d+9E9QWkB7A(OjMQbB zlE2G~W7fH&?v-Z@=TJN~+a=GbNyW=_8{|1;XRxz)4s*PKueTvt&E}bgWwut3YNps+ z#R{LW?tHaeaS8$IF3u#aPWAGqX?b9UPPK|}q^A{1G+rcl)gi4}_*y3Bwd$E!@tLp7 zAFe>~`a@@rabZfYAb1tBXgXvn%7fr_PC663@?SGab&J^}c-5iXS@_bedmY!&!slDZ zXT|pe{De0%_u$Wp*Wbl|S=dAqXf}lvzoCU)T6jG3KlJmnuo5@??$guLXfzrQhb+ss zTCGN-!7xldpU-46$z(DbjfTTvilV$;ugm3fI2=Pix?Y^Saq7ac6Ez14o5*e;ZAW4q zF&k(bg8V;f1U$etFgkAxPix)d@_8+PS~xt;rI}2!kcwyHk#sbi2nVA1fDS50l56w^1#6d^zeYe0PQyFb>wnLCPCAnDAa)hkOk5}9EboRfWip( zUG!UM)lkbJmqd~VO@SJ9!JeYYppZp6fk+sX58Ez8FP;O92XA@kIy~P@H0+UrEtr8X zKFWhlqZvn;Mkaum7eN<14jjk*<)}9s@ub4r@t}*QoB^-H=iUU$Kn}h}cQt{NV)7^KmTp&mvqfRq=JZBVVdcAY)WHwzgi6F*GQ z37Y@7J$}zU9{L!x(XOK|{$8mFBK+@l`*7F4?O*gSS{JQGtHCsCd8Tlf&!!I3@l+xb zkA~eyBko_TOzYo~&sr8Y6edJre^RC}{Y`6U4whgy! jLzivfv<$tE9%Q=LF|33c*9Mw!H literal 0 HcmV?d00001