{ Grafx2 - The Ultimate 256-color bitmap paint program Copyright 1996-2001 Sunset Design (Guillaume Dorme & Karl Maritaud) Grafx2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. Grafx2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Grafx2; if not, see or write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. } program IMG2FNT; const COULEUR_TEXTE=15; var Fichier:file; Image:array[0..20479] of byte; Fonte:array[0..2047] of byte; Offset_dans_image:longint; Masque:byte; Position:word; i,j,k,l:word; Errcode:integer; begin if (paramcount<2) or (paramcount>3) then begin writeln('Syntaxe: IMG2FNT [offset dans l''image]'); writeln('Attention: ne pas taper les extensions!'); halt(1); end; if paramcount=3 then begin val(paramstr(3),Offset_dans_image,Errcode); if Errcode<>0 then begin writeln('Syntaxe: IMG2FNT [offset dans l''image]'); writeln('Attention: ne pas taper les extensions!'); halt(1); end; end else Offset_dans_image:=0; assign(Fichier,paramstr(1)+'.img'); reset(Fichier,1); seek(Fichier,896+Offset_dans_image); blockread(Fichier,Image,17280); close(Fichier); {Transformation de l'image en 0 pour le fond et 255 pour le texte} for i:=0 to 17279 do if Image[i]<>COULEUR_TEXTE then Image[i]:=0 else Image[i]:=255; for i:=0 to 255 do for j:=0 to 7 do begin Fonte[(i shl 3)+j]:=0; Masque:=128; for k:=0 to 7 do begin asm {Position:=((i DIV 45)*2880) + ((i MOD 45)*8) + (j*360) +k} mov ax,i mov bl,45 div bl push ax xor ah,ah mov bx,2880 mul bx mov dx,ax pop ax mov cl,8 shr ax,cl mov cl,3 shl ax,cl add dx,ax add dx,k mov Position,dx mov ax,j mov bx,360 mul bx add Position,ax end; Fonte[(i shl 3)+j]:=Fonte[(i shl 3)+j] + (Masque and Image[Position]); Masque:=Masque shr 1; end; end; assign(Fichier,Paramstr(2)+'.fnt'); rewrite(Fichier,1); blockwrite(Fichier,Fonte,2048); close(Fichier); end.