X-Git-Url: http://git.shiar.nl/wormy.git/blobdiff_plain/8804e9541b51585f5f9bb062568e34965a0a52e8..aa70ecd2b18a154a2ae74154c1e32cc0f01273a7:/worm5253.pas?ds=sidebyside diff --git a/worm5253.pas b/worm5253.pas new file mode 100644 index 0000000..a4dd8c0 --- /dev/null +++ b/worm5253.pas @@ -0,0 +1,113 @@ +USES CRT,SHIAR,DOS; + +TYPE ONELEVEL52 = RECORD + ID:STRING[22]; + NAME:STRING[22]; + SIZE:BYTE; + PEAS,DELAY:BYTE; + GROWTH,BSIZE:BYTE; + SPRSIZE:BYTE; + SPRITE:ARRAY[1..8]OF BYTE; + NRBALLS:BYTE; + BALLS:ARRAY[1..32]OF RECORD + Y,X,D:BYTE; {Z:%00=right+down, %11=left+up} + END; {BALLS} + W:ARRAY[1..4]OF RECORD + D,Y,X:BYTE; + END; {W(ORMS)} + FIELDX,FIELDY:BYTE; + FLAG1Y,FLAG1X:BYTE; + FLAG2Y,FLAG2X:BYTE; + NROBJ:BYTE; + OBJ:ARRAY[1..32]OF RECORD {..128} + TYP:SHORTINT;X1,Y1,X2,Y2:BYTE; + END; {OBJ} + END; {ONELEVEL} + + B52 = RECORD + A:ARRAY[1..15]OF CHAR; + B:BYTE; + C:ARRAY[1..98]OF BYTE; {256} + D:ARRAY[1..14]OF BYTE; {1} + E:ARRAY[1..9]OF BYTE; {1} + F:ARRAY[1..523]OF BYTE; {256} + G:ARRAY[1..3]OF BYTE; + END; {B} + + +CONST HEADEDIT52 = ('WormEditá95'+#0+'LVL'); + HEADVERSION = 95; + + +VAR I,II,I2:WORD; + C:CHAR; + FILENAME,S:STRING; + F:FILE; + L:ARRAY[1..64]OF ONELEVEL52; + B:B52; + + + +FUNCTION STR2BYTE(SPRITE:STRING):BYTE; +VAR SPRTEMP,SPRTEMP2:BYTE; +BEGIN + SPRTEMP:=0; SPRTEMP2:=1; + FOR SPRTEMP2:=1TO LENGTH(SPRITE)DO + IF SPRITE[SPRTEMP2]='1'THEN INC(SPRTEMP,1SHL(8-SPRTEMP2)); + STR2BYTE:=SPRTEMP; +END; {STR2BYTE} + +PROCEDURE OPENFILE; +BEGIN + ASSIGN(F,FILENAME); {$I-} RESET(F,1); {$I+} I:=IORESULT; + IF I<>0THEN BEGIN + TEXTCOLOR(15); WRITE('WARNING!! '); TEXTCOLOR(7); + WRITELN('FAILED OPENING LEVEL FILE ',FILENAME,'!'); WRITELN('RUNTIME ERROR #',I); HALT; + END; {CAN'T OPEN} + WRITELN('OPENING ',FILENAME); + {$I-} BLOCKREAD(F,B,SIZEOF(B)); + FOR I:=1TO B.D[5]DO BLOCKREAD(F,L[I],SIZEOF(L[I])); {$I+} + IF(IORESULT<>0)OR(B.A<>HEADEDIT52)THEN BEGIN + TEXTCOLOR(15); WRITE('WARNING!! '); TEXTCOLOR(7); + WRITELN('ERROR READING LEVEL FILE!'); CLOSE(F); HALT; + END; {ERROR} + IF B.B<>HEADVERSION THEN BEGIN + WRITELN('CAN''T READ FILE VERSION ',B.B,'.'); CLOSE(F); HALT; + END; {VERSION} + CLOSE(F); + WRITELN('OPENED V',B.B,' SUCESSFULLY - ',B.D[5],' LEVELS FOUND'); +END; {OPENFILE} + +PROCEDURE FILESAVE; +BEGIN + ASSIGN(F,FILENAME); REWRITE(F,1); + S:='WormEdit053'+#0+'LVL'; + BLOCKWRITE(F,S[1],SIZEOF(B.A)); + B.B:=53; + BLOCKWRITE(F,B.B,SIZEOF(B.B)); + BLOCKWRITE(F,B.C,SIZEOF(B.C)); + II:=0; FOR I:=1TO 128DO BLOCKWRITE(F,II,2); + BLOCKWRITE(F,B.D,SIZEOF(B.D)); + BLOCKWRITE(F,II,1); + BLOCKWRITE(F,B.E,SIZEOF(B.E)); + BLOCKWRITE(F,II,1); + BLOCKWRITE(F,B.F,SIZEOF(B.F)); + FOR I:=1TO 128DO BLOCKWRITE(F,II,2); + BLOCKWRITE(F,B.G,SIZEOF(B.G)); + FOR I:=1TO B.D[5]DO BEGIN + BLOCKWRITE(F,L[I],SIZEOF(L[I])); + FOR I2:=1TO 5*48DO BLOCKWRITE(F,II,2); + END; {} + CLOSE(F); + WRITELN(FILENAME,' REWRITTEN AS V',B.B); +END; {FILESAVE} + + +BEGIN + {$M 16384,0,655360} + WINDOW(1,1,80,25); TEXTCOLOR(7); TEXTBACKGROUND(0); CLRSCR; + WRITELN('V52 TO V53 CONVERTER - BY SHIAR'); + FILENAME:=PARAMSTR(1); + OPENFILE; FILESAVE; + WRITELN('ALL DONE. ENJOY!'); +END. \ No newline at end of file