Fixed TIM displaying;

Fixed "Out of Memory" for Directory Scan;
Optional CLUT viewer;
Other fixes.
This commit is contained in:
meffi@lab313.ru
2014-02-19 18:58:30 +00:00
parent 057405ebfe
commit c3f38c670f
8 changed files with 593 additions and 64 deletions

View File

@@ -42,7 +42,8 @@ begin
else else
path := ''; path := '';
WriteFile(ClientMailSlot, path[1], Length(path) * SizeOf(Char), BytesWritten, nil); if path <> '' then
WriteFile(ClientMailSlot, path[1], Length(path) * SizeOf(Char), BytesWritten, nil);
CommandEvent := OpenEvent(EVENT_MODIFY_STATE, False, cEventNname); CommandEvent := OpenEvent(EVENT_MODIFY_STATE, False, cEventNname);
SetEvent(CommandEvent); SetEvent(CommandEvent);

View File

@@ -83,8 +83,8 @@
<DCC_SUSPICIOUS_TYPECAST>false</DCC_SUSPICIOUS_TYPECAST> <DCC_SUSPICIOUS_TYPECAST>false</DCC_SUSPICIOUS_TYPECAST>
<DCC_MapFile>3</DCC_MapFile> <DCC_MapFile>3</DCC_MapFile>
<DCC_Optimize>true</DCC_Optimize> <DCC_Optimize>true</DCC_Optimize>
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.504;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.523;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
<VerInfo_Build>504</VerInfo_Build> <VerInfo_Build>523</VerInfo_Build>
<Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File> <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
<DCC_IOChecking>false</DCC_IOChecking> <DCC_IOChecking>false</DCC_IOChecking>
<DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck> <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
@@ -102,6 +102,9 @@
<DCC_DebugInformation>0</DCC_DebugInformation> <DCC_DebugInformation>0</DCC_DebugInformation>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''"> <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
<DCC_DebugInformation>true</DCC_DebugInformation>
<DCC_LocalDebugSymbols>true</DCC_LocalDebugSymbols>
<DCC_Define>madExcept;LeakChecking;$(DCC_Define)</DCC_Define>
<DCC_MapFile>3</DCC_MapFile> <DCC_MapFile>3</DCC_MapFile>
<VerInfo_Locale>1033</VerInfo_Locale> <VerInfo_Locale>1033</VerInfo_Locale>
<DCC_IOChecking>false</DCC_IOChecking> <DCC_IOChecking>false</DCC_IOChecking>

BIN
tim2view.res Normal file

Binary file not shown.

View File

@@ -20,7 +20,7 @@ const
sStatusBarParsingResult = 'Parsing Result...'; sStatusBarParsingResult = 'Parsing Result...';
sScanResultGood = 'Scan completed!'; sScanResultGood = 'Scan completed!';
sSelectDirCaption = 'Please, select directory for scan...'; sSelectDirCaption = 'Please, select directory for scan...';
sThisTimHasNoCLUT = 'This TIM has no CLUT'; sThisTimHasNoCLUT = 'No CLUT';
type type
TBytesArray = array [0 .. cMaxFileSize - 1] of byte; TBytesArray = array [0 .. cMaxFileSize - 1] of byte;
@@ -34,12 +34,21 @@ function ExtractJustName(const Path: string): string;
procedure Text2Clipboard(const S: string); procedure Text2Clipboard(const S: string);
function Min(A, B: Integer): Integer; function Min(A, B: Integer): Integer;
function Max(A, B: Integer): Integer; function Max(A, B: Integer): Integer;
function GetCoreCount: Integer;
implementation implementation
uses uses
System.SysUtils, Clipbrd; System.SysUtils, Clipbrd;
function GetCoreCount: Integer;
var
SystemInfo: SYSTEM_INFO;
begin
GetSystemInfo(&SystemInfo);
Result := SystemInfo.dwNumberOfProcessors;
end;
function Min(A, B: Integer): Integer; function Min(A, B: Integer): Integer;
begin begin
if A < B then if A < B then

View File

@@ -10,6 +10,479 @@ object frmMain: TfrmMain
Font.Height = -11 Font.Height = -11
Font.Name = 'Tahoma' Font.Name = 'Tahoma'
Font.Style = [] Font.Style = []
Icon.Data = {
0000010003003030000000000000A8250000360000002020000000000000A810
0000DE2500001010000000000000680400008636000028000000300000006000
000001002000000000008025000000000000000000000000000000000000FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFE600FFFFFFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFE600FFFFFFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFE600FFFFFFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFE600FFFFFFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFE600
FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600FFFFE600
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC28
04FFFFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600FFFFE600
FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC28
04FFFFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC28
04FFFFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600
FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC28
04FFFFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC28
04FFFFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600
FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600
FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FC28
04FFFC2804FFFC2804FFFFFFFF00FC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600FFFFE600
FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600
FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600
FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600
FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600
FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600
FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00E600
FFFFE600FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00E600FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FC2804FFFC28
04FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00E600FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FC28
04FFFC2804FFFC2804FFFC2804FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00E600FFFFE600FFFFE600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FC2804FFFC2804FFFFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF00AF
E7FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FC2804FFFC2804FFFC2804FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00E600FFFFE600FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF00AF
E7FF00AFE7FF8D9D35FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AF
E7FF00AFE7FF00AFE7FF00AFE7FF0606FFFF0606FFFF0606FFFF0606FFFF00AF
E7FF8D9D35FF8D9D35FF8D9D35FF8D9D35FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF00AF
E7FF00AFE7FF00AFE7FF00AFE7FF0606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF008D9D35FF8D9D35FF8D9D35FF8D9D35FF8D9D35FF9B5E3AFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF00AFE7FF00AF
E7FF00AFE7FFFFFFFF008D9D35FF0606FFFF0606FFFF0606FFFF0606FFFF8D9D
35FFFFFFFF00FFFFFF008D9D35FF8D9D35FF9B5E3AFF9B5E3AFF9B5E3AFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF00AF
E7FF8D9D35FF8D9D35FFFFFFFF000606FFFF0606FFFF0606FFFF0606FFFF8D9D
35FF8D9D35FF9B5E3AFF9B5E3AFF9B5E3AFF9B5E3AFF9B5E3AFF9B5E3AFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008D9D
35FF8D9D35FF8D9D35FF8D9D35FF0606FFFF0606FFFF0606FFFF0606FFFF9B5E
3AFF9B5E3AFF9B5E3AFF9B5E3AFF9B5E3AFF9B5E3AFF9B5E3AFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF009B5E3AFF9B5E3AFF0606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF00FFFFFF009B5E3AFF9B5E3AFF9B5E3AFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606
FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606
FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606
FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFC7
FFFFFFCF0000FF81F1F3FF870000FF00F0E1FF830000FF00F0E1FF830000FF00
F0E1FF870000FF00F0E1FFC70000FF00F8F0C7C70000FF00F870C3C30000FF80
F878C1E30000FF80FC78C1E30000FF80FC7840E30000FF80FC3840630000FF80
FE3C40630000FFC0FE3C06310000FFC0FE1C07110000FFC0FE1C07010000FFC0
FF1E07810000FFC0FF0E07C10000FFE0FF0E07C10000FFE0FF0E0FE00000FFE0
FF0E0FE00000FFE0FF060FF00000FFE0FF860FF00000FFF07F870FF00000FFF0
7F8798780000FFF07F9FF01F0000FFF07FFF00070000FFF03FFC00810000FFF8
3FF820600000FFF83FFC10000000FFF81FFF00010000FFF81FFFC0C70000FFF8
1FFFF0870000FFFC0FFFF0830000FFFC0FFFF0810000FFFC0FFFF0810000FFFC
07FFF0810000FFFC07FFF0810000FFFC07FFF0810000FFFC03FFF083000087F8
03C7F003000000000000F007000000000000303F0000000000001FFF00000000
00000FFF0000000000000FFF0000000000000FFF000087FFFF001FFF00002800
0000200000004000000001002000000000008010000000000000000000000000
000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00DC00
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00DC00FFFFDC00
FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00DC00FFFFDC00
FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00DC00FFFFDC00
FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00DC00
FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFFFF00FFFF
FF00FF2600FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00DC00
FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFF
FF00FF2600FFFF2600FFFF2600FFFFFFFF00FFFFFF00FF2600FFFF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00DC00
FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFF
FF00FF2600FFFF2600FFFF2600FFFF2600FFFFFFFF00FF2600FFFF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00DC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFFFF
FF00FF2600FFFF2600FFFF2600FFFF2600FFFFFFFF00FFFFFF00FF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFFFF
FF00FF2600FFFF2600FFFF2600FFFF2600FFFF2600FFFFFFFF00FF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFF2600FFFFFFFF00FF2600FFFF2600FFFF2600FFFF2600FFFF26
00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFF2600FFFFFFFF00FFFFFF00FF2600FFFF2600FFFF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FF2600FFFF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF2600FFFF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00DC00FFFFDC00FFFFDC00FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF000606FFFF0606FFFF00AFE7FFFFFFFF00FFFFFF00FF26
00FFFF2600FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF00AF
E7FF00AFE7FF0606FFFF0606FFFF0606FFFF00AFE7FF8D9D35FF8D9D35FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF00AFE7FF00AF
E7FF00AFE7FF0606FFFF0606FFFF0606FFFFFFFFFF008D9D35FF8D9D35FF8D9D
35FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF8D9D
35FFFFFFFF000606FFFF0606FFFF0606FFFF8D9D35FFFFFFFF009B5E3AFF9B5E
3AFF9B5E3AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008D9D35FF8D9D
35FF8D9D35FF0606FFFF0606FFFF0606FFFF9B5E3AFF9B5E3AFF9B5E3AFF9B5E
3AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF009B5E3AFF0606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606FFFF0606
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606FFFF0606
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606FFFF0606
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606FFFF0606
FFFFFFFFFF00FFFFFF007700FFFF7700FFFF7700FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606
FFFFFFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFFFFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFFFFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF007700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF007700FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007700
FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700FFFF7700
FFFF7700FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FC3DFFF3F818C7E1F818C7E1F818C7F3F81CC671FC1C6231FC1C
6211FC1E6219FC1E3209FC1E3041FC1E3060FE1F1070FE1F1070FE1F18F8FE1F
10F8FF1F18F8FF1F1F8CFF0FF003FF0FE011FF0FF108FF07F801FF87FE13FF87
FF11FF83FF11FF83FF11FF83FF118F81FF010000030300000107000000FF0000
00FF9FFC00FF2800000010000000200000000100200000000000400400000000
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF000606FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF00AFE7FF00AFE7FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000AFE7FF00AFE7FF00AFE7FF00AF
E7FF00AFE7FF0606FFFF0606FFFF0606FFFF0606FFFF8D9D35FF8D9D35FF8D9D
35FF8D9D35FFFFFFFF00FFFFFF0000AFE7FF00AFE7FF00AFE7FF00AFE7FF00AF
E7FF00AFE7FF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF008D9D35FF8D9D
35FF8D9D35FF9B5E3AFFFFFFFF0000AFE7FF00AFE7FF00AFE7FF00AFE7FF8D9D
35FFFFFFFF000606FFFF0606FFFF0606FFFF0606FFFF8D9D35FFFFFFFF009B5E
3AFF9B5E3AFF9B5E3AFF9B5E3AFFFFFFFF00FFFFFF008D9D35FF8D9D35FF8D9D
35FF8D9D35FF0606FFFF0606FFFF0606FFFF0606FFFF9B5E3AFF9B5E3AFF9B5E
3AFF9B5E3AFF9B5E3AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008D9D
35FF9B5E3AFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF009B5E3AFF9B5E
3AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606
FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606
FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606
FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606
FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFFFFFFFF000606FFFF0606
FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606
FFFF0606FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606
FFFF0606FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606FFFF0606
FFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF000606FFFF0606FFFF0606FFFF0606FFFF0606FFFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FE3F0000FC0F000080030000002100000410
0000C0010000F0270000FC230000FC210000FC210000FC210000FC210000FC01
0000FC030000FC070000FC1F0000}
Menu = mmMain Menu = mmMain
OldCreateOrder = False OldCreateOrder = False
Position = poScreenCenter Position = poScreenCenter
@@ -20,8 +493,8 @@ object frmMain: TfrmMain
TextHeight = 13 TextHeight = 13
object pnlStatus: TPanel object pnlStatus: TPanel
Left = 0 Left = 0
Top = 515 Top = 502
Width = 746 Width = 738
Height = 30 Height = 30
Align = alBottom Align = alBottom
BevelOuter = bvLowered BevelOuter = bvLowered
@@ -29,17 +502,17 @@ object frmMain: TfrmMain
object lblStatus: TLabel object lblStatus: TLabel
Left = 76 Left = 76
Top = 1 Top = 1
Width = 165 Width = 157
Height = 28 Height = 28
Align = alClient Align = alClient
Alignment = taRightJustify Alignment = taRightJustify
Layout = tlCenter Layout = tlCenter
ExplicitLeft = 238 ExplicitLeft = 230
ExplicitWidth = 3 ExplicitWidth = 3
ExplicitHeight = 13 ExplicitHeight = 13
end end
object pbProgress: TProgressBar object pbProgress: TProgressBar
Left = 241 Left = 233
Top = 1 Top = 1
Width = 504 Width = 504
Height = 28 Height = 28
@@ -63,7 +536,7 @@ object frmMain: TfrmMain
object cbbFiles: TComboBox object cbbFiles: TComboBox
Left = 0 Left = 0
Top = 0 Top = 0
Width = 746 Width = 738
Height = 21 Height = 21
Align = alTop Align = alTop
AutoDropDown = True AutoDropDown = True
@@ -77,24 +550,23 @@ object frmMain: TfrmMain
object pnlMain: TPanel object pnlMain: TPanel
Left = 0 Left = 0
Top = 21 Top = 21
Width = 746 Width = 738
Height = 494 Height = 481
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
TabOrder = 1 TabOrder = 1
object splMain: TSplitter object splMain: TSplitter
Left = 233 Left = 233
Top = 0 Top = 0
Height = 494 Height = 481
ResizeStyle = rsUpdate ResizeStyle = rsUpdate
ExplicitLeft = 201 ExplicitLeft = 201
ExplicitHeight = 481
end end
object pnlList: TPanel object pnlList: TPanel
Left = 0 Left = 0
Top = 0 Top = 0
Width = 233 Width = 233
Height = 494 Height = 481
Align = alLeft Align = alLeft
BevelOuter = bvNone BevelOuter = bvNone
TabOrder = 0 TabOrder = 0
@@ -102,7 +574,7 @@ object frmMain: TfrmMain
Left = 0 Left = 0
Top = 0 Top = 0
Width = 233 Width = 233
Height = 494 Height = 481
Align = alClient Align = alClient
Columns = < Columns = <
item item
@@ -132,56 +604,50 @@ object frmMain: TfrmMain
OnClick = lvListClick OnClick = lvListClick
OnData = lvListData OnData = lvListData
OnSelectItem = lvListSelectItem OnSelectItem = lvListSelectItem
ExplicitLeft = -2
ExplicitTop = -5
end end
end end
object pnlImage: TPanel object pnlImage: TPanel
Left = 236 Left = 236
Top = 0 Top = 0
Width = 510 Width = 502
Height = 494 Height = 481
Align = alClient Align = alClient
BevelOuter = bvLowered BevelOuter = bvLowered
TabOrder = 1 TabOrder = 1
object splImageClut: TSplitter object splImageClut: TSplitter
Left = 1 Left = 1
Top = 1 Top = 1
Width = 508 Width = 500
Height = 3 Height = 3
Cursor = crVSplit Cursor = crVSplit
Align = alTop Align = alTop
Beveled = True Beveled = True
ResizeStyle = rsUpdate ResizeStyle = rsUpdate
ExplicitTop = 274 ExplicitTop = 274
ExplicitWidth = 500
end end
object pbTim: TImage object pbTim: TImage
AlignWithMargins = True AlignWithMargins = True
Left = 4 Left = 4
Top = 7 Top = 7
Width = 502 Width = 494
Height = 303 Height = 290
Align = alClient Align = alClient
Center = True Center = True
IncrementalDisplay = True
Proportional = True Proportional = True
Transparent = True ExplicitLeft = 6
ExplicitLeft = 168 ExplicitTop = -59
ExplicitTop = 80 ExplicitHeight = 265
ExplicitWidth = 105
ExplicitHeight = 105
end end
object grdCurrClut: TDrawGrid object grdCurrClut: TDrawGrid
Left = 1 Left = 1
Top = 343 Top = 300
Width = 508 Width = 500
Height = 150 Height = 150
Align = alBottom Align = alBottom
ColCount = 1 ColCount = 1
DefaultColWidth = 14 DefaultColWidth = 14
DefaultRowHeight = 14 DefaultRowHeight = 14
DoubleBuffered = True DoubleBuffered = False
Enabled = False Enabled = False
FixedCols = 0 FixedCols = 0
RowCount = 1 RowCount = 1
@@ -190,13 +656,14 @@ object frmMain: TfrmMain
ParentDoubleBuffered = False ParentDoubleBuffered = False
ScrollBars = ssNone ScrollBars = ssNone
TabOrder = 0 TabOrder = 0
Visible = False
OnDblClick = grdCurrClutDblClick OnDblClick = grdCurrClutDblClick
OnDrawCell = grdCurrClutDrawCell OnDrawCell = grdCurrClutDrawCell
end end
object pnlImageOptions: TPanel object pnlImageOptions: TPanel
Left = 1 Left = 1
Top = 313 Top = 450
Width = 508 Width = 500
Height = 30 Height = 30
Align = alBottom Align = alBottom
BevelOuter = bvLowered BevelOuter = bvLowered
@@ -205,7 +672,7 @@ object frmMain: TfrmMain
AlignWithMargins = True AlignWithMargins = True
Left = 4 Left = 4
Top = 4 Top = 4
Width = 152 Width = 93
Height = 21 Height = 21
Align = alLeft Align = alLeft
AutoDropDown = True AutoDropDown = True
@@ -217,9 +684,9 @@ object frmMain: TfrmMain
end end
object cbbTransparenceMode: TComboBox object cbbTransparenceMode: TComboBox
AlignWithMargins = True AlignWithMargins = True
Left = 162 Left = 103
Top = 4 Top = 4
Width = 145 Width = 122
Height = 21 Height = 21
Align = alLeft Align = alLeft
Style = csDropDownList Style = csDropDownList
@@ -236,9 +703,9 @@ object frmMain: TfrmMain
end end
object cbbBitMode: TComboBox object cbbBitMode: TComboBox
AlignWithMargins = True AlignWithMargins = True
Left = 313 Left = 231
Top = 4 Top = 4
Width = 88 Width = 74
Height = 21 Height = 21
Align = alLeft Align = alLeft
Style = csDropDownList Style = csDropDownList
@@ -256,15 +723,25 @@ object frmMain: TfrmMain
end end
object chkStretch: TCheckBox object chkStretch: TCheckBox
AlignWithMargins = True AlignWithMargins = True
Left = 407 Left = 311
Top = 4 Top = 4
Width = 97 Width = 81
Height = 22 Height = 22
Action = actStretch Action = actStretch
Align = alClient Align = alClient
Enabled = False Enabled = False
TabOrder = 3 TabOrder = 3
end end
object btnShowClut: TButton
Left = 395
Top = 1
Width = 104
Height = 28
Align = alRight
Caption = 'Show/Hide CLUT'
TabOrder = 4
OnClick = btnShowClutClick
end
end end
end end
end end

View File

@@ -82,6 +82,7 @@ type
actExtractList: TAction; actExtractList: TAction;
ExtractTIMs1: TMenuItem; ExtractTIMs1: TMenuItem;
pbTim: TImage; pbTim: TImage;
btnShowClut: TButton;
procedure btnStopScanClick(Sender: TObject); procedure btnStopScanClick(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure lvListData(Sender: TObject; Item: TListItem); procedure lvListData(Sender: TObject; Item: TListItem);
@@ -110,6 +111,7 @@ type
procedure lvListSelectItem(Sender: TObject; Item: TListItem; procedure lvListSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean); Selected: Boolean);
procedure cbbTransparenceModeChange(Sender: TObject); procedure cbbTransparenceModeChange(Sender: TObject);
procedure btnShowClutClick(Sender: TObject);
private private
{ Private declarations } { Private declarations }
// pResult: PNativeXml; // pResult: PNativeXml;
@@ -117,11 +119,11 @@ type
PNG: PPNGImage; PNG: PPNGImage;
LastDir: string; LastDir: string;
WaitThread: TEventWaitThread; WaitThread: TEventWaitThread;
StartedScans: Integer;
function ScanRes: TScanResult; function ScanRes: TScanResult;
procedure SetListCount(Count: Integer); procedure SetListCount(Count: Integer);
procedure ScanFinished(Sender: TObject); procedure ScanFinished(Sender: TObject);
function CheckForFileOpened(const FileName: string): boolean;
procedure CheckButtonsAndMainMenu; procedure CheckButtonsAndMainMenu;
procedure ScanPath(const Path: string); procedure ScanPath(const Path: string);
procedure ScanFile(const FileName: string); procedure ScanFile(const FileName: string);
@@ -131,7 +133,7 @@ type
function SelTim(NewBitMode: Integer = $FF): PTIM; function SelTim(NewBitMode: Integer = $FF): PTIM;
function SelTimName: string; function SelTimName: string;
procedure DrawSelTim; procedure DrawSelTim;
procedure DrawCurrentCLUT; procedure DrawSelClut;
procedure UpdateCLUTInfo; procedure UpdateCLUTInfo;
procedure SetCLUTListToNoCLUT; procedure SetCLUTListToNoCLUT;
function ForceForegroundWindow(hwnd: THandle): Boolean; function ForceForegroundWindow(hwnd: THandle): Boolean;
@@ -142,6 +144,7 @@ type
public public
{ Public declarations } { Public declarations }
ScanResult: TList<TScanResult>; ScanResult: TList<TScanResult>;
function CheckForFileOpened(const FileName: string): boolean;
end; end;
var var
@@ -277,7 +280,7 @@ begin
actTimInfo.Caption := 'TIM Info'; actTimInfo.Caption := 'TIM Info';
lvList.Column[0].Caption := '# / 0'; lvList.Column[0].Caption := '# / 0';
DrawSelTim; DrawSelTim;
DrawCurrentCLUT; DrawSelClut;
cbbCLUT.Items.BeginUpdate; cbbCLUT.Items.BeginUpdate;
if (cbbCLUT.Items.Count > 0) then cbbCLUT.Items.Delete(cbbCLUT.ItemIndex); if (cbbCLUT.Items.Count > 0) then cbbCLUT.Items.Delete(cbbCLUT.ItemIndex);
@@ -285,9 +288,7 @@ begin
SetCLUTListToNoCLUT; SetCLUTListToNoCLUT;
cbbFiles.Items.BeginUpdate;
cbbFiles.Items.Delete(cbbFiles.ItemIndex); cbbFiles.Items.Delete(cbbFiles.ItemIndex);
cbbFiles.Items.EndUpdate;
CheckButtonsAndMainMenu; CheckButtonsAndMainMenu;
@@ -302,8 +303,9 @@ procedure TfrmMain.actCloseFilesExecute(Sender: TObject);
begin begin
while cbbFiles.Items.Count > 0 do while cbbFiles.Items.Count > 0 do
begin begin
cbbFiles.ItemIndex := cbbFiles.Items.Count - 1; cbbFiles.Items.BeginUpdate;
actCloseFile.Execute; actCloseFile.Execute;
cbbFiles.Items.EndUpdate;
end; end;
end; end;
@@ -478,6 +480,12 @@ begin
end; end;
end; end;
procedure TfrmMain.btnShowClutClick(Sender: TObject);
begin
grdCurrClut.Visible := not grdCurrClut.Visible;
DrawSelClut;
end;
procedure TfrmMain.btnStopScanClick(Sender: TObject); procedure TfrmMain.btnStopScanClick(Sender: TObject);
begin begin
if ScanThreads.Count = 0 then Exit; if ScanThreads.Count = 0 then Exit;
@@ -487,13 +495,12 @@ end;
procedure TfrmMain.cbbFilesChange(Sender: TObject); procedure TfrmMain.cbbFilesChange(Sender: TObject);
begin begin
lvList.Items.Count := ScanRes.Count; SetListCount(ScanRes.Count);
lvList.Column[0].Caption := Format('# / %d', [lvList.Items.Count]);
lvList.Invalidate;
lvList.SetFocus;
lvList.Selected := nil;
lvList.Items[0].Selected := True; lvList.Items[0].Selected := True;
lvList.Items[0].Focused := True; lvList.Items[0].Focused := True;
lvList.SetFocus;
end; end;
procedure TfrmMain.cbbTransparenceModeChange(Sender: TObject); procedure TfrmMain.cbbTransparenceModeChange(Sender: TObject);
@@ -509,7 +516,7 @@ end;
procedure TfrmMain.cbbCLUTChange(Sender: TObject); procedure TfrmMain.cbbCLUTChange(Sender: TObject);
begin begin
DrawSelTim; DrawSelTim;
DrawCurrentCLUT; DrawSelClut;
end; end;
function TfrmMain.CheckForFileOpened(const FileName: string): boolean; function TfrmMain.CheckForFileOpened(const FileName: string): boolean;
@@ -519,7 +526,7 @@ begin
Result := False; Result := False;
for I := 1 to ScanResult.Count do for I := 1 to ScanResult.Count do
if ExtractFileName(ScanResult[I - 1].ScanFile) = ExtractFileName(FileName) then if ScanResult[I - 1].ScanFile = FileName then
begin begin
Result := True; Result := True;
Exit; Exit;
@@ -564,10 +571,12 @@ begin
Result := Format(cAutoExtractionTimFormat, [ExtractJustName(ScanRes.ScanFile), ListIdx + 1, TimIdx(ListIdx).BitMode]); Result := Format(cAutoExtractionTimFormat, [ExtractJustName(ScanRes.ScanFile), ListIdx + 1, TimIdx(ListIdx).BitMode]);
end; end;
procedure TfrmMain.DrawCurrentCLUT; procedure TfrmMain.DrawSelClut;
var var
TIM: PTIM; TIM: PTIM;
begin begin
if not grdCurrClut.Visible then Exit;
ClearGrid(@grdCurrCLUT); ClearGrid(@grdCurrCLUT);
TIM := SelTim; TIM := SelTim;
@@ -627,7 +636,6 @@ begin
FreeTIM(TIM); FreeTIM(TIM);
pbTim.Stretch := chkStretch.Checked; pbTim.Stretch := chkStretch.Checked;
pbTim.Invalidate;
end; end;
function TfrmMain.ScanRes: TScanResult; function TfrmMain.ScanRes: TScanResult;
@@ -657,6 +665,7 @@ begin
ScanThreads := TList<TScanThread>.Create; ScanThreads := TList<TScanThread>.Create;
ScanResult := TList<TScanResult>.Create; ScanResult := TList<TScanResult>.Create;
StartedScans := 0;
New(PNG); New(PNG);
PNG^ := nil; PNG^ := nil;
LastDir := GetStartDir; LastDir := GetStartDir;
@@ -727,7 +736,7 @@ begin
FreeTIM(TIM); FreeTIM(TIM);
DrawSelTim; DrawSelTim;
DrawCurrentCLUT; DrawSelClut;
end; end;
procedure TfrmMain.grdCurrClutDrawCell(Sender: TObject; ACol, ARow: Integer; procedure TfrmMain.grdCurrClutDrawCell(Sender: TObject; ACol, ARow: Integer;
@@ -785,7 +794,7 @@ begin
UpdateCLUTInfo; UpdateCLUTInfo;
DrawSelTim; DrawSelTim;
DrawCurrentCLUT; DrawSelClut;
actTimInfo.Caption := Format('[OFFSET: 0x%x | SIZE: 0x%x]', [TimIdx(ListIdx).Position, TimIdx(ListIdx).Size]); actTimInfo.Caption := Format('[OFFSET: 0x%x | SIZE: 0x%x]', [TimIdx(ListIdx).Position, TimIdx(ListIdx).Size]);
actTimInfo.Enabled := True; actTimInfo.Enabled := True;
@@ -816,8 +825,10 @@ end;
procedure TfrmMain.SetListCount(Count: Integer); procedure TfrmMain.SetListCount(Count: Integer);
begin begin
lvList.Items.BeginUpdate;
lvList.Items.Count := Count; lvList.Items.Count := Count;
lvList.Column[0].Caption := Format('# / %d', [Count]); lvList.Column[0].Caption := Format('# / %d', [Count]);
lvList.Items.EndUpdate;
end; end;
function TfrmMain.TimIdx(Index: Integer): TScanTim; function TfrmMain.TimIdx(Index: Integer): TScanTim;
@@ -840,14 +851,31 @@ begin
ScanThreads.Last.Priority := tpNormal; ScanThreads.Last.Priority := tpNormal;
ScanThreads.Last.OnTerminate := ScanFinished; ScanThreads.Last.OnTerminate := ScanFinished;
ScanThreads.Last.Start; if StartedScans < GetCoreCount then
begin
ScanThreads.Last.Start;
Inc(StartedScans);
end;
end; end;
procedure TfrmMain.ScanFinished(Sender: TObject); procedure TfrmMain.ScanFinished(Sender: TObject);
var
I: Integer;
begin begin
ScanThreads.Remove(Sender as TScanThread); ScanThreads.Remove(Sender as TScanThread);
Dec(StartedScans);
if ScanThreads.Count <> 0 then Exit; if ScanThreads.Count <> 0 then
begin
for I := 1 to ScanThreads.Count do
if ScanThreads[I - 1].Suspended then
begin
ScanThreads[I - 1].Start;
Inc(StartedScans);
Exit;
end;
Exit;
end;
if ScanResult.Count <> 0 then SetListCount(ScanResult.Last.Count); if ScanResult.Count <> 0 then SetListCount(ScanResult.Last.Count);

View File

@@ -52,7 +52,8 @@ end;
destructor TScanResult.Destroy; destructor TScanResult.Destroy;
begin begin
SetLength(pTims, 0);
pTims := nil;
inherited; inherited;
end; end;

View File

@@ -169,9 +169,19 @@ begin
UpdateProgressBar; UpdateProgressBar;
SetStatusText; SetStatusText;
if pScanResult.Count = 0 then Exit; if pScanResult.Count = 0 then
frmMain.ScanResult.Add(pScanResult); begin
frmMain.cbbFiles.Items.Add(pScanResult.ScanFile); pScanResult.Free;
Exit;
end;
if not frmMain.CheckForFileOpened(pScanResult.ScanFile) then
begin
frmMain.ScanResult.Add(pScanResult);
frmMain.cbbFiles.Items.Add(pScanResult.ScanFile);
end
else
pScanResult.Free;
end; end;
procedure TScanThread.SetStatusText; procedure TScanThread.SetStatusText;