--- oup/current/Tools/TxmpReplace.pas 2007/05/26 18:26:48 194 +++ oup/current/Tools/TxmpReplace.pas 2007/06/12 17:35:56 214 @@ -41,13 +41,12 @@ var implementation {$R *.dfm} -uses Main, ConnectionManager, ImagingTypes; +uses Main, ConnectionManager, ImagingTypes, TXMP; procedure TForm_TxmpReplace.SelectFile(fileinfo: TFileInfo); var - mem: TMemoryStream; fadingbyte, depthbyte, storebyte: Byte; begin fileid := fileinfo.ID; @@ -79,8 +78,6 @@ begin end; procedure TForm_TxmpReplace.btn_loadClick(Sender: TObject); -var - mem: TMemoryStream; begin if opend.Execute then begin @@ -101,7 +98,9 @@ var datbyte: Word; mem: TMemoryStream; new_storetype: Byte; - formatinfo: TImageFormatInfo; + i: Integer; +const + powers: array[0..8] of Integer = (1, 2, 4, 8, 16, 32, 64, 128, 256); begin if filelist.ItemIndex >= 0 then begin @@ -111,6 +110,28 @@ begin else ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $9C, 4, @old_rawaddr); + if (OniImage_New.Width[1] > 256) or (OniImage_New.Height[1] > 256) then + begin + ShowMessage('Widht and height have to be smaller than or equal to 256.'); + Exit; + end; + for i := 0 to High(powers) do + if OniImage_New.Width[1] = powers[i] then + Break; + if i = Length(powers) then + begin + ShowMessage('Width has to be a power of 2 (1, 2, 4, 8, 16 ...)'); + Exit; + end; + for i := 0 to High(powers) do + if OniImage_New.Height[1] = powers[i] then + Break; + if i = Length(powers) then + begin + ShowMessage('Height has to be a power of 2 (1, 2, 4, 8, 16 ...)'); + Exit; + end; + if (OniImage_Old.Width[1] <> OniImage_New.Width[1]) or (OniImage_Old.Height[1] <> OniImage_New.Height[1]) then begin @@ -129,6 +150,7 @@ begin mem := TMemoryStream.Create; case OniImage_New.Format of + ifX1R5G5B5: new_storetype := 1; ifA1R5G5B5: new_storetype := 2; ifA4R4G4B4: new_storetype := 0; ifA8R8G8B8: @@ -164,9 +186,10 @@ begin ConManager.Connection[ConnectionID].UpdateRawFile(fileid, $9C, mem); end; - datbyte := $00; if check_fading.Checked then - datbyte := datbyte or $01; + oldfading := oldfading or $01 + else + oldfading := oldfading and (not Byte($01)); ConManager.Connection[ConnectionID].UpdateDatFilePart(fileid, $88, 1, @datbyte); datbyte := $10; // if check_transparency.Checked then