From f911a5a8eeaf8fdc9732eaf438fcd02a1e6c1528 Mon Sep 17 00:00:00 2001 From: Robert Lowe Date: Sat, 27 Sep 2014 23:00:58 -0400 Subject: [PATCH 1/1] working divided version of pcx files. Used in pcxtest.exe --- 16/modex16/BITMAP.C | 37 +++++++++++++++++++------------------ 16/modex16/pcxtest.c | 2 +- 16/modex16/pcxtest.exe | Bin 36648 -> 36552 bytes 16/modex16/scroll.exe | Bin 19034 -> 18922 bytes 16/modex16/test.exe | Bin 17632 -> 17536 bytes 16/modex16/test2.exe | Bin 17384 -> 17288 bytes 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/16/modex16/BITMAP.C b/16/modex16/BITMAP.C index 108d8c30..b1521526 100644 --- a/16/modex16/BITMAP.C +++ b/16/modex16/BITMAP.C @@ -21,11 +21,10 @@ static struct pcxHeader { word hScreenSize; word vScreenSize; byte padding[54]; -}; +} head; static void loadPcxStage1(FILE *file, bitmap_t *result) { - struct pcxHeader head; long bufSize; int index; byte count, val; @@ -34,26 +33,22 @@ static void loadPcxStage1(FILE *file, bitmap_t *result) { /* read the header */ fread(&head, sizeof(char), sizeof(struct pcxHeader), file); + /* get the width and height */ + result->width = head.xmax - head.xmin + 1; + result->height = head.ymax - head.ymin + 1; + /* make sure this is 8bpp */ if(head.bpp != 8) { printf("I only know how to handle 8bpp pcx files!\n"); fclose(file); exit(-2); } +} - /* allocate the buffer */ - result->width = head.xmax - head.xmin + 1; - result->height = head.ymax - head.ymin + 1; - bufSize = result->width * result->height; - result->data = malloc(bufSize); - if(!result->data) { - printf("Could not allocate memory for bitmap data."); - fclose(file); - exit(-1); - } - /* save the position of the pixel data */ - pos = ftell(file); +static void loadPcxPalette(FILE *file, bitmap_t *result) { + byte val; + int index; /* handle the palette */ fseek(file, -769, SEEK_END); @@ -71,9 +66,6 @@ static void loadPcxStage1(FILE *file, bitmap_t *result) { result->palette[index] = head.pal16[index]; } } - - /* go back to the pixel data */ - fseek(file, -pos, SEEK_END); } @@ -81,7 +73,6 @@ bitmap_t bitmapLoadPcx(char *filename) { FILE *file; bitmap_t result; - struct pcxHeader head; long bufSize; int index; byte count, val; @@ -96,6 +87,15 @@ bitmapLoadPcx(char *filename) { /* load the first part of the pcx file */ loadPcxStage1(file, &result); + /* allocate the buffer */ + bufSize = result.width * result.height; + result.data = malloc(bufSize); + if(!result.data) { + printf("Could not allocate memory for bitmap data."); + fclose(file); + exit(-1); + } + /* read the buffer in */ index = 0; do { @@ -115,6 +115,7 @@ bitmapLoadPcx(char *filename) { } } while(index < bufSize); + loadPcxPalette(file, &result); fclose(file); diff --git a/16/modex16/pcxtest.c b/16/modex16/pcxtest.c index 51b8427b..7373e885 100644 --- a/16/modex16/pcxtest.c +++ b/16/modex16/pcxtest.c @@ -33,7 +33,7 @@ void main() { page=modexDefaultPage(); - bmp = modexLoadPcx("46113319.pcx"); + bmp = bitmapLoadPcx("46113319.pcx"); modexEnter(); /* fix up the palette and everything */ diff --git a/16/modex16/pcxtest.exe b/16/modex16/pcxtest.exe index a57b981c0bc63df12eeb5a1cd057e0bfdd8635be..2ae847e58b06b76d2677dc7d17d032785442f6a1 100644 GIT binary patch delta 5355 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 NW5s|Y)z1>de*?t(vf%&# delta 5281 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 diff --git a/16/modex16/scroll.exe b/16/modex16/scroll.exe index a259aeed2cd306c88636e97e43116b48e68fbe36..5e87bdc4fe7f945f1a2eebdf4d3d0f9281967701 100755 GIT binary patch delta 3084 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 IDhr|i0aC_a4FCWD diff --git a/16/modex16/test.exe b/16/modex16/test.exe index 507cd456a6a2b655e899949e4f916ecfc922e636..8efde54edc09a739fd42eb6f5528cb63d7a13ff2 100644 GIT binary patch delta 2866 zcmY*b3se(V8oqaCm>H5x9=uT=u{ci?t|h&yB$zC~QPz$=(6m)6F@P`{&;O z|L6Pu*G&(CZUl3dt#X4DzyTJV0-@0J91sEcs|0`4K$7crB7wwajZ&=bG9TlBH&upN0 zS+ZS{9bD}Vw)2MiYrRB?_*aK)3I~WuQ&x&TN5AFJ8ot73Q+Pne!^=wS^*#>+RA6~h zeb>xB)UJFcv1Eos17K6kfP8}~T{wu3amla~pXP2eR|NbHm&CLP_zb7u!@L!?;9h7OMATmAbs3fWfsMQ))}COLP>7rm(YaL=qYjWi zsy<6m8@eQObzUb+E{WvR5aK+G0s4YGt3^I)Zd#!%0k#^lkvia%@euiwC_fln%o|-A z)J5LY)pORs0F^$HD#}&vdO)%!{5p^iUG_W!NQM@Dt~x4FHc=p{Kl#ZQ(O@fJJrJM~ z@~VUe$X2N`;88?CZnBhXOAp%$fu|6tsB2yw_s88)&(8kh%o_^y+7t~S9#)MGr9u_} z8ksLxGQ?ZD(O2-=K5im8G*;L7qCI!raF?GXf>t;D|HBjNAq}D5FN`P*AnRGRNEH64 zNDGQe(z{f21}VSS09l5YYvPLMYml{ilGg#sD^Iu=pAtcSw7S&|D6s?9VX{i^uD&fg zW0ZeTr5LKj$kuAIU8jaJ6Ccw|%gg4G)kz)2C|y+LGJj9yVVz3c&s&13LA6*+f7FE2Wy6%N|S$6*u)O-j60MS3c%^5^vKopibq{kyiG zp{`5EX)Cmb##$)cH}urx>u}^FAJmM=)#GRp?=HB`hq^ zRgZdhDe`${K=NM!S;r>RF^j^#!9A}aBR`DG*5K``5o8^=gov3#*5Qe$ z+o}3#ZX)VqBwM3K{acP=pe9oIFQVS&zD}b)MnwpN#jH|UG_Nd5j(G|kQWd??@n{gDkW@puoLb@qKQ^mc7Q0Rvodiq_av!0gu- zGEEEVQp_}2>GEr4_ANzYY+6F)rL=JY*{LJ<>1-bA{hP4^1pqX(w-|u};m~_!&OEtG z2}=7D&SM$zK^rYZ1c{5Ml3EXC(cu}qr=`%UT0;{rBCH1NOIqFgE- zi9qlrJR|Z@N})b~i|ZMSH|S%WEN!2luh8jmpJ6QL?V)X=%|QkYxG!=(^R)q|MddS} z81Pe3Sxk=szYvujzE-H~c10Yo67XkHvyE#7ltiET0lzwZ|E0rX^k%ph?}$!=ui)3C zW8sVV3F%mkr+E-$i>FaPt>|fwx*cM2>D1$6aT)Lld?D_77NeUN3c2RGm-1%WI%+w8ds}eg%{~?XkHS4~ z{nXpW=I`S3;6h%i9SynCR4X&BwMk{dYUu>NTzB5pUw3jhQNjV)!v}f-t7}IY=c?LK z=ycFCqB0!R;WblpVFSiftuy_x!;=%7P84;7SCsqE7wAUStm8-)&j8w<>2 zULW}iI}#p+-{Q9tD&cO-Cq4<+;Pr_a%?*jUERFJK<|moygLwM1Bbq)lx_}1ID0u~U zO;hLqheU(sm(j_9guA-L?I!!rKS&k*I-a?&$UiB_;sAhFR zS5#{mv*+$+cI#uo#rR@s3_}a8KQ%dr7TIeasoGGPRVu`I9cFgEnc79b|%0( zN*^g+v|NFJ4lv)!B)e@^NIu=!%U;>z`+H{djZ7~K@5fEqX_hL1;+}+E+efppKqauF z4|PxinT?d0i$P&%7uT_f0{|6J{CBbwVG@qbNmj``oRh#r-NdCi=`gc-cTT!S+9Ckw z5B0v8p?!N@Li76%y#^W1k8N`@;9K~)Ia?xTlgU8IF*{ilvsoak@z|WwFkM&UW}(?J zHwo&F_fSBz%l5ra9qh?F3v>C4bly@xv(O;wK-V1myBfTm{-Gn0Cx_mwq<#3qMcF$3 zQ?H_P>@TDJN1l@PnL+u>H+&7SO3a!l$VYL=PX$c)86lOeHL2ar##(3M#t>!< zA>r9z5?^*JCaxP+P28A2*;F$m@|h^0F^cAcuo@!7dgFjW(UBlw_BLQucB;DX?f34z z@7&M3cN_!{5}dxKVi3h60r994`FxE6k`UT2BNU5fe@l!AwZZe22_fl~^iaIvqt)RU z=g}&>K)%OBMmAP#aH&a%h0_;t)|x1j6JhlWo&}klLrCr9Sum{d+6rfK1|s!qp7AE9 z9jV{&Y|@x9u<>#7gLW+-hv5 zFLUMiQ+kPezs?L`X~1&i z`o6`(q*Fa2^K6L>0Vq^s5j#)8U3{G$5@PT-^tfI{Kxc(mkRDe@=(Q z3H-$_DTt2gO!&=RQUZQvmlR5~Bt0(ImN!WLIFtTfdc@u@l&vo+CLI~4)h?ceN)LH*^>$RqK9p*|;8dTFbxY(_1z@T)M+29my|ob1)|xe zCw;8hP%l_KW57A(%5u$jBVvnY?3NN2`Of)A#8LyuQO(eL_0Iq#<(8dXiCk$#yb~ib z!S>2zjBS;xJWf?Y>@p9&whZ#E7&&v1hT8u6v^(r)ZSTyl_S$`(p+Z%U*kN9a4!FYd z5JaY%XE(%*0rC|-zeAWw4#et5an<&l4qWYKQK;2{|9`Vv+k_Ch-MR^tL+lA&E0WK| zgAx=JaPr5%TD{=kUc`#%I(=CFDm}5(%=*;`e&y)q;!~)+IohH`bpb1NjV6t6qlEz}`0w=TfMjf^O#ut+uOc>xwG5X&M1I^p@&ejE z>OiE6lx!m%xA09ez3iy@MY0B~0xo1n{ors&M@oPO@2sC<;ZiNrxk}|WQUJJxR13-_ z1%gt*-FQr3-wQ+sxP#S2psLKNj_Nhod;N%gg1v4cmTFQ`16QThH`U_vf$2IUyi|YE z$zGnCu`4=iZu;3$9g_xIQij*N8Y*ka_G!dFn+}36`7a*so#>qaNu^4}EK%;{HuTs$A_yJNd#eS0Nk9dUoBOl@C zd#n+pZ}+mvYMm`G(=tudXAWI0oHRJ5_o~`3rval*W7GytuH1n zUq}k)^dZ%Zm??n%7?{Kjid3GrQ)~$!OMz{gNAM3cb^b2gKo8H4jrG|+AfN;BWQ_vSR~Q#-Lwa5WE?mp|;?}yN67q zbA``mo3G?^b?r5G0I7st%?3@L50uDyT~|Jbk;m=L*9lfLknQCjMkyX+*o~5Tk5*A$$$pp-bnfhw;`8-#c%|yC9d)5;dd)h}jp)IbJ$*B$C zwgSLteCTWV-}JN4`@;l%M!RF380)zNowi1Hm;0as53xNoCaj#}jdWXBDi>v=TbffF0X4OGAUqQy0S@9Iw5M(TQ= zh5Lrs37WGYlv^RwvIR?VKYeL|#jbUK7xZ$6)!$p7Gs6UEH7ErVd&{5=1Ps@Tb^)l2!wBsV)15*+xRWNtF4(pw#VU< zJr|siMLIQZKTV0Z;3oQHd^-M#{v-Zz`_UjkdCjp-7Ym;0Y?pxJAXO!$r0ejos6^Hc zSQlj4IjcaDPYB_laQ7s{q(jke706N`0_m%&)a+;jy5FNs zPHVW6N1k>y0y+6ycGN>zLKFwpq)V*C1$0y5BRHLQB`(EYI-MAUchl&kF;eFNt((^84Z2%ym6>(KfGc;3?xlhfVMJ(gCG9#!l1hln5CDDYBDO z8SO6jm%q@ml*mBzP;_zO9X{oF?+|}>yGysQ`T3M~9!JvEX^9yZMSwetcHuDS=4rTN zhDjITPH6&%Y#i|;)k4>50U?qNu-{0F!t-cLT8!pHe_ABxbkm8nBplHklb)oPuZqZe zx!$$dx8ud@Vsr6bdokx_^y=No&~qY|{bgPvn~jeWvW+JpV6_vJNoYCHPP26`?r2kow&jGnP zOY*Y!i~+Xk9B^}gpb?@?xiQUcxn@lNnwLsX=Ec*fm52DZ1K(~w kzVa2Eusm~lCdkJA3I27XSbLiGu9#V|qyrxmwj81V0sjaVPyhe` diff --git a/16/modex16/test2.exe b/16/modex16/test2.exe index 0aa470b93d960d5cc4babb8a862eef2f9b45b209..ab46164163ee3b1e7250e0f2300b84026af9f1b9 100644 GIT binary patch delta 2838 zcmYjT3se->8NPRBnOTT=55-_ie5B{DyXGiRT$Ql>2S`umoSFOI zx&Qs=`~KG*wi|nQ<5|n=yf_DG5RZCMG}@#=T7=%05VD|&t5T0pAKZ!oq4Wc@Qt;*j zm9y_zAg!vddW3x65;h#S4U7mt)Lc@{PJnvn7p&qfTkfufV!OypwUf8;8ruAMiOhr&M2 zsBSn#^YARaGfv@AFe$1eAy!4#<4P>i!+14*_gU`2CZGNYc8{nV59&#;IzFfOC60gP zFZw+-V{=B-@9fblU-N9g{)pB!;=30qex7aD%e9)8%Y5Hub@sR(Xav_p9f}6Ac-^WR za-2M@A!`L^z@Z3;jm3fsya6AFR9wY+Z~vUDq+9t|&$HQjpzlyDh<#1_Ifif2Ea*%_)p=~+F zDbXl9rX^?U0F{K;A61(*q>G%DHLZRZ&(3PuM^U2jl_K&9+Y(0tuswdIvKTp<*d{Qb zQO2U|Pg?oDktKr3tt0*HEy=5~hi-uMzTUZ7WotmJVBBsk36OKXM-j`9Bga)k)k*^Z z$^FSriI&{#M7$3p5@9du$qlwmUmx-*TEwpLz_p{F@5IPghE&w$FOCIMZ>wvkf41h2 zhORgi9b!IS^$t*Bix7C`6P^tTwgK`PzPLv-9uDx;C7KbN(R55GZ@vq@3I@f9!XfrJ zuf|^yj%XoQKzb7-*9h=<39;qlR%;=@o5OoiP4jgRA^~s?E7cKu;{>Hvpj0eQx~5u` zA8PFMAmFsmKFsP2p2k~RmsvRkN@h^vWSzZ{ZI@Ix&Y)ef*~M0Y*j-@BtegRzbAqY^ zD)S_jbWpI3sI#;i-|`-4jODM$i=Iz;?|T)I(=ldK;dhDF5eUZKhsLHzp{H-^p zJaoY}AU`=Ky99{mZYFp&_?HEG z6Fb;#&19J3WA@by%l1+B!pnVdwAr_;|s#9a}jRr8l zOi#0=BpjiI(l28tt$Z{_e=9YJha^Z>mPY%fHZj8Q@9NyFr5=5`aF2d(FGTxz5iQZv0lLoPG!seS#|Q@=o=--eOLahpm*teWv8-Xxm4f5Ayr=GP!RGN z5!)fHdhfwg*$yQ_R~VOKnZ97G!pmsbxP=>xqw7rN_+8p&nu7mK|81I)?wIV{f$Ay} zh?*^&FN)NT-ld~aQy#ZUr1|mtg~#GZA&8yv1V2M76Q0HMX@7!+3mNI1gi`LbkrpSG zaPJ%Gj>H1)Ya>0JXpLPfwhp)xjygp;ka(|Ytw=KAE)50M*7|`&Gn0Ogo9Q!2)6)(Z zN%w+i)SW0-aIOBvxiC1Pm$LozRMJ%Lf{})k)&h&A$CFjnr z6G;S8V>~^NMx&vdY?_hugbr3i3hs!KZfI7c5;?O5=*a+pE-?QM*V41*U!}eqYx8?n z2$s+_=zmsyaCH>Y;dQo*7NxAl?@*dzD7vqK#DRmM(e!+@R+KYZ2V7H%n>d$-TnydxEEjmWl$6MYPDlZ` z@2_`)^2#dN;1pX=xU~evIygQrk785C#qDuXn0;)WgmiR!<>UnvX{zzmkr8d>Km((+6^=a*zX$ zDWB zwVr4a+zG7%Pa2MR+&a&v9!Rho>==D1Ki%qCxQRz@-sTTfIX(>uwKYpCDpx2NK_3b{ zl3C@L8mPDJR#C)3o1Am9-kQATJS2aZhv^;tJu7= zPfdzm+W>QY1JdNLDUC17YM))E#dO1>X>@K`B3-s9m9{Q=UFtA(m?o7Z+O~LRd&6QU f&J7oZi{P!L5q@ux#a5s`rTOYJqRL6V^AP$UD_zWl delta 2936 zcmYjT4OCQB9>4d!$D3i8H!~<7ihK;pmm#ZU;RhIBI%H}Mm>`y(>Yv~KOTC2ji{Qh`YUtyTO81SM1J+;N~3Y#^kW{Xd{{nseT}|99{I z{_pSi|GHDR8?)UwW6cJJXCndes0{^!F9}GCkXw(C8BP9HN(fzo=L-Wu@vmk?<3GN- zV*cEG{ra^f>&W-D1BO$UVN_=ss;?NTFC9`$h&^m11DiH%^e8Ea&3yHpoHcPqH^R!7 zJc}^8Zy=?OXOS?&t23O@9gdWXJmZaS2U0HaY|N0^x8%$Y6Y1~zK`vqH+EqiLZ@|qN z)eT)V1!qW`!xSEQBZ5ia_9${vy$2*O4C9sIL<&zS|(VrHXQutpTz56L!mphjhE2LM%OuoKg*~Rki?-wBPLH zX~~^t#Je#fqwJ7GZnGDpN}pTNBK9K>T$_6MW{liC#OwtkvDm;;lyVMq`b1R+RC4qx z=|M5muYSda)wMaVw>ZaI?8Z8e^G2>Zsikqc0!_V9l~2$ux-|R--LFe^IKuY!>}!#$ zhw69Q8sH~GO@81+-lP$$asaVwSdIB4r&rJfrFK&KB5C~%_88Mi&gx&awn$|hAe{;U zND!d3FctLW5ZS_|TLO7<#fzi}pbF_0lt+pLxriHiT43J_4x#}%kxDAIGI?t6piX6T zC0tMQ1PM{4G%{-_<$mqK_;FzeJ1%lKq?*8z=_!c=iYLTWy?7GJdoL^ zjzZ|~0@LdJ4g$lEv!Cc({e$#r{T9tX^pL^qX?jtASQFs)wKflGXq8kbW=MNavz_#$ zl!F75Gc-gDYEJa<>1RJd!ync@l*J+Y3?-R18)hy`GQL;9?KLci(nYL8&z{p;-C(JA zy#67C_O&&ckb?2>zt`Kc5QwrB3(mCP##Ktg^1>%3h3GSo$(_X``(2LW|+#(b8Ps`^Jb}CEipT@fDr0SR0NJ$iaxHs-{t%fozgHxq(5@%KdmUtKD2ZCD7CnqTHh{u%p8umB>*)h=*^A z?c%dMGP6rJne%5FJ8KQzPoJ4piRaVPvo_<+G$S^#(Hi>zk6)**gw5QI+ti!Tpj&Px z7szcg#v15Bvw~OA;>0+-jc!kT2H!_}6PG5fi~={mEnEEA;`98Dr)sN5k$o$CvX>*1 za!8vhy-ydLL$=JMMknyp;Ty{-I?P5vT!U``YVY5UJP2^o;GF9;+H27&ZcR;YH=oAsJcz4B}` z-8}NOC^5**=drJRbaYM}2U!=LRDsvfok>sP4BDNPh5gi!oPgh?e@MQKOK3t$EVj{{ zl)SLr;l8`dHPNG77wPVlk7vGUa&ou`kc#z^2uk)0jS zZ1H%%`ju`?jSWZZ;!CXe2jw$eH~7mnp6Im31F0=Mj-~6;lQa88fIEqH{!Q4Mui{R= zN!kH-+F>AM=ST>t653Y?2$6>X_DAV)cn0lEPf$7BN{{7Qyi_|c1;;ebpO>POZi&eD zW1VL~aL?{Rv2kqq<`e7=XnyvM5du1FD?yHx(_q4F?2~h z);C=PKv1fC{t5;bEsUXuY_WL>!NH4{8sSf z9DDf!l)Q^B&eKz#3(NKfW0=U@n1HZc@0 zdmpc8^uv3`>@GDIPG|P9EmuLB`umFz{WLeB@ocUZQ)gZ}?arG+lk-2)A2S^@O{wT< oe!+c>VnGE?dSvM%OJUahGW>x?=KbmF`|9q%A?{{}LAvz5oCK -- 2.39.5