Go Back   FileForums > Game Backup > PC Games > PC Games - CD/DVD Conversions > Conversion Tutorials

Reply
 
Thread Tools Search this Thread Display Modes
  #181  
Old 03-01-2018, 06:08
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Finally I will leave the original format, I just change the way to recovered the output path in order to be compatible with ArcGUI.

for those interested here are the changes:
Code:
function IsRelativePath(const sPath: string): Boolean;
begin
  Result:=True;
  if Length(sPath) >= 2 then
    Result:=sPath[2] <> ':';
end;

function ClsMain(operation: Integer; Callback: CLS_CALLBACK; Instance: Pointer): Integer; cdecl;
const
  BuffSize = 64 * 1024;
var
  CLS: TCLSStream;
  SS: TSplitStream;
  Bytes: TBytes;
  X: Integer;
  X8: Byte;
  X64: Int64;
  s: String;
  FirstVolume, OtherVolume: Int64;
  i: integer;
begin

  Result := CLS_ERROR_GENERAL;

  case (operation) of
    CLS_COMPRESS:
      begin
 
        for i := 1 to ParamCount do
        begin
          if (ExtractFileExt(ParamStr(i)) = '.001') then
          begin
            Archive := ParamStr(i);
            Break;
          end;
        end;

        if IsRelativePath(Archive) then
          Archive := ExtractFilePath(GetModuleName) + Archive;

        Archive := ChangeFileExt(Archive, '');

        SetLength(Bytes, 256);
        FillChar(Bytes[0], Length(Bytes), #0);

        X := Callback(Instance, CLS_GET_PARAMSTR, @Bytes[0], Length(Bytes));
        s := StringOf(Bytes);
        s := ReplaceStr(s, #0, '');

        FirstVolume := ConvertToBytes(LeftStr(s, Pos(':', s) - 1));
        OtherVolume := ConvertToBytes(ReplaceStr(s, LeftStr(s, Pos(':', s)), ''));

        CLS := TCLSStream.Create(Callback, Instance);
        CLS.WriteBuffer(FirstVolume, sizeof(FirstVolume));

        Bytes := BytesOf(ExtractFileName(Archive));

        X := Length(Bytes);

        CLS.WriteBuffer(X, sizeof(X));
        CLS.WriteBuffer(Bytes, Length(Bytes));

        X64 := StreamToStream(CLS, CLS, BuffSize, FirstVolume);

        if X64 = FirstVolume then
        begin
          X := CLS.Read(Bytes, Length(Bytes));
          if X > 0 then
          begin
            X8 := 1;
            CLS.WriteBuffer(X8, sizeof(X8));
            SS := TSplitStream.Create(Archive, False, OtherVolume, OtherVolume);
            SS.WriteBuffer(Bytes, X);
            StreamToStream(CLS, SS, BuffSize);
            SS.Free;
          end else
          begin
            X8 := 0;
            CLS.WriteBuffer(X8, sizeof(X8));
          end;
        end;
        CLS.Free;
        SetLength(Bytes, 0);
        Result := CLS_OK;
      end;
    CLS_DECOMPRESS:
      begin
        try
          if SrcPath = '' then
            SrcPath := GetCurrentDir;
          CLS := TCLSStream.Create(Callback, Instance);
          CLS.ReadBuffer(FirstVolume, sizeof(FirstVolume));
          CLS.ReadBuffer(X, sizeof(X));
          SetLength(Bytes, X);
          CLS.ReadBuffer(Bytes, Length(Bytes));
          Archive := IncludeTrailingBackSlash(SrcPath) + StringOf(Bytes);
          X64 := StreamToStream(CLS, CLS, BuffSize, FirstVolume);
          if FirstVolume = X64 then
          begin
            CLS.ReadBuffer(X8, sizeof(X8));
            if X8 = 1 then
            begin
              SS := TSplitStream.Create(Archive, True, OtherVolume, OtherVolume, MyDiskRequest);
              StreamToStream(SS, CLS, BuffSize);
              SS.Free;
            end;
          end;
          CLS.Free;
          SetLength(Bytes, 0);
          Result := CLS_OK;
        except
          Result := CLS_ERROR_GENERAL;
        end;
      end;
  else
    Result := CLS_ERROR_NOT_IMPLEMENTED;
  end;
end;
I also re-implemented the external compressors in the popup menu:

__________________
Practice makes perfect.
Reply With Quote
The Following 7 Users Say Thank You to JRD! For This Useful Post:
78372 (03-01-2018), ffmla (05-01-2018), mausschieber (03-01-2018), pakrat2k2 (03-01-2018), romi1996 (30-01-2020), Simorq (03-01-2018), Titeuf (03-01-2018)
Sponsored Links
  #182  
Old 04-01-2018, 18:30
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
On this short video I add a folder to compressed which contains 2 files, one with the extension *.esm, the other with the extension *.mp4, the method used contains an extension group that is bound with a method,
the extension *.mp4 is located in the group "$void" this implies that the mp4 file will receive the srep64 compression method, so no have two files with 2 different compression methods and it works.

I remove Precomp from the Max method in order to shorten the video... If someone has a remark he does not hesitate to share it with me.

I need to update the language files, I will share a version in the day with the folder "masked Data Compressor 2.5" from Panker, the directory contains the categories files as you can see below:





The CLS-Diskspan is not integrated with Arcgui at the moment, but the options present in the program implies its presence for it to work,
it will have to use the version I have a little bit change. I'll post the DLL below the program.

Thanks to Razor for his work!



Sorry for the old-fashioned layout, when the version will be 100% functional, I'll make a great presentation page with big characters and colors like we do more since the invention of HTML
__________________
Practice makes perfect.
Reply With Quote
The Following 2 Users Say Thank You to JRD! For This Useful Post:
sajmon83 (12-01-2018), Titeuf (05-01-2018)
  #183  
Old 04-01-2018, 22:19
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
i applied full masked method: "/$text=ppmd/$jpeg=paq8pxd/$exe=exe2"

The result:
Code:
G:\Delphi\Projets\Arc GUI\Arc GUI 0.9.8.7\Win32\Release\working_dir>arc a --logfile=C:\Temp\freearc.log -ma9 -ds -lc1024 -ld1024 -di -i1 -ep1 -ed -r -s -wE:\ArcGUI\Temp E:\ArcGUI\Output\Data.bin.001 -mdiskspan:10mb:10mb/$text=ppmd/$jpeg=paq8pxd/$exe=exe2 C:\Users\Arnaud\Desktop\Data
FreeArc 0.67 (March 15 2014) Creating archive: E:\ArcGUI\Output\Data.bin.001 using diskspan:10mb:10mb, $text => ppmd:10:48mb, $jpeg => paq8pxd, $exe => dispack070
Memory for compression 450mb, decompression 450mb, cache 16mb
Compressed 3 files, 39,415,777 => 10,485,792 bytes. Ratio 26.60%           
Compression time: cpu 0.03 sec/real 0.24 sec = 13%. Speed 164.91 mB/s
All OK
Here is the function that allows you to set the position of Diskspan to not be considered as part of the value bound to the last extension group:

Code:
function SetDiskspanValuePosition(const sMethodValue, sDiskspanValue: string): string;
var
  i: integer;
begin
  if Length(sDiskspanValue) > 0 then
  begin
    i:=Pos('/$', sMethodValue);
    if i > 0 then
    begin
      Result:=sMethodValue;
      Insert(Copy(sDiskspanValue, 2, Length(sDiskspanValue)), Result, i);
    end else
      Result:=sMethodValue+sDiskspanValue;
  end else
    Result:=sMethodValue;
end;
Example:
Code:
  ShowMessage('-m'+SetDiskspanValuePosition('/$text=ppmd/$jpeg=paq8pxd/$exe=exe2', '+diskspan:4460mb:4470mb'));
__________________
Practice makes perfect.

Last edited by JRD!; 04-01-2018 at 23:55.
Reply With Quote
The Following 2 Users Say Thank You to JRD! For This Useful Post:
78372 (04-01-2018), Simorq (05-01-2018)
  #184  
Old 04-01-2018, 23:49
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Updated. Included Masked Data compressor 2.5 by panker1992 as well as modified CLS-Diskpan.
I create the categories of compression methods and external compressors. I will do a series of videos to make a brief tour of the
Features. I quickly released this version, there are definitely bugs, if you noticed, make me know about the thread, thanks to all.
__________________
Practice makes perfect.

Last edited by JRD!; 04-01-2018 at 23:52.
Reply With Quote
The Following 4 Users Say Thank You to JRD! For This Useful Post:
78372 (05-01-2018), ffmla (05-01-2018), Simorq (05-01-2018), Titeuf (05-01-2018)
  #185  
Old 05-01-2018, 09:41
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Quote:
Originally Posted by Simorq View Post
Hi JRD!
Not work
Please share version 0.9.8.7.
Thanks



Edit:
Solved
It reminds me of someone
__________________
Practice makes perfect.
Reply With Quote
The Following User Says Thank You to JRD! For This Useful Post:
Simorq (05-01-2018)
  #186  
Old 16-01-2018, 12:40
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Here is the list of changes to the next version:
Quote:
- Ability to apply the same compression method to all archives from the Edit button.
- Tabs remain visible during compression, but events are disabled.
- A file listing function in the archive is available at the right click, (filename | file weight in bytes).
- A function of detecting the space necessary during the decompression (NeedSpace) has been added, activate the log to be able to access this information.
- The ability to create a decompression folder, this folder will contain everything necessary to unpack the created archives.
- Create setup with Inno Setup, you just need to specify the required values in the script, copy the folder generated by ArcGUI to the module folder and then start compiling from the batch file, you can unpack the created archives.
Fixed bugs:
Quote:
- Cannot add a file in the parent folder of an added folder.
- Unable to delete the first character of the password.
- The URL of CLS-Diskspan has been changed.
Little note:

I currently have no tester, so I am forced to test myself what slowed the development.
At the level of translation only KaktoR has brought help. If someone could make me some return it would be great.
__________________
Practice makes perfect.
Reply With Quote
The Following User Says Thank You to JRD! For This Useful Post:
KaktoR (16-01-2018)
  #187  
Old 16-01-2018, 12:42
KaktoR's Avatar
KaktoR KaktoR is offline
Lame User
 
Join Date: Jan 2012
Location: From outer space
Posts: 4,485
Thanks: 1,083
Thanked 7,101 Times in 2,694 Posts
KaktoR is on a distinguished road
Unfortunatelly i don't have much time for deep testing atm, but if you like make a public beta... some kind of.
__________________
Haters gonna hate
Reply With Quote
The Following User Says Thank You to KaktoR For This Useful Post:
JRD! (16-01-2018)
  #188  
Old 16-01-2018, 12:57
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Quote:
Originally Posted by KaktoR View Post
Unfortunatelly i don't have much time for deep testing atm, but if you like make a public beta... some kind of.
Yes, that's what I tried to do with the previous version but without much success.
__________________
Practice makes perfect.
Reply With Quote
  #189  
Old 16-01-2018, 15:06
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
An analysis of the output stream is used to determine whether file decompression will require more free space or not.
Code:
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|                        2018/01/17     00:01:25                        |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
| Step 1/1
|
| Creating archive Data-1.bin
|
| Method name camel5
| Method value pzlib_x64+static1+7z_xz
| Expanded method value pzlib_x64+srep_x64+exe+delta+7z_xz
|
| Compressor 1: pzlib_x64
| Compressor 2: srep_x64
| Compressor 3: exe
| Compressor 4: delta
| Compressor 5: 7z_xz
|
| NeedSize: 618,31 MB
|
| Status: Operation success
| Compression time: 00:01:19
|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|                                                                       |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
__________________
Practice makes perfect.
Reply With Quote
The Following User Says Thank You to JRD! For This Useful Post:
Simorq (18-01-2018)
  #190  
Old 17-01-2018, 17:10
pakrat2k2's Avatar
pakrat2k2 pakrat2k2 is offline
Moderator
 
Join Date: Apr 2005
Location: Canada
Posts: 7,209
Thanks: 3,040
Thanked 9,037 Times in 3,084 Posts
pakrat2k2 is on a distinguished road
re-opened by request

Last edited by pakrat2k2; 18-07-2018 at 07:32.
Reply With Quote
The Following User Says Thank You to pakrat2k2 For This Useful Post:
JRD! (18-07-2018)
  #191  
Old 18-07-2018, 07:54
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
The update of the program will be done on this thread.
__________________
Practice makes perfect.
Reply With Quote
The Following 3 Users Say Thank You to JRD! For This Useful Post:
pakrat2k2 (18-07-2018), punsher2011 (23-04-2019), Simorq (18-07-2018)
  #192  
Old 18-07-2018, 10:48
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
If you have a better translation or if you have translated to other language, do not hesitate to posted the file in the thread, I will integrate it in the following versions. Thank you.
__________________
Practice makes perfect.
Reply With Quote
The Following User Says Thank You to JRD! For This Useful Post:
punsher2011 (23-04-2019)
  #193  
Old 15-01-2019, 12:55
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
1.14 preview

__________________
Practice makes perfect.

Last edited by JRD!; 15-01-2019 at 13:08.
Reply With Quote
The Following 4 Users Say Thank You to JRD! For This Useful Post:
doofoo24 (15-01-2019), punsher2011 (23-04-2019), Simorq (15-01-2019), Titeuf (15-01-2019)
  #194  
Old 15-01-2019, 14:13
Simorq's Avatar
Simorq Simorq is offline
Registered User
 
Join Date: Mar 2014
Location: Iran
Posts: 642
Thanks: 3,602
Thanked 1,305 Times in 464 Posts
Simorq is on a distinguished road
Quote:
Originally Posted by JRD! View Post
i applied full masked method: "/$text=ppmd/$jpeg=paq8pxd/$exe=exe2"

The result:
Code:
G:\Delphi\Projets\Arc GUI\Arc GUI 0.9.8.7\Win32\Release\working_dir>arc a --logfile=C:\Temp\freearc.log -ma9 -ds -lc1024 -ld1024 -di -i1 -ep1 -ed -r -s -wE:\ArcGUI\Temp E:\ArcGUI\Output\Data.bin.001 -mdiskspan:10mb:10mb/$text=ppmd/$jpeg=paq8pxd/$exe=exe2 C:\Users\Arnaud\Desktop\Data
FreeArc 0.67 (March 15 2014) Creating archive: E:\ArcGUI\Output\Data.bin.001 using diskspan:10mb:10mb, $text => ppmd:10:48mb, $jpeg => paq8pxd, $exe => dispack070
Memory for compression 450mb, decompression 450mb, cache 16mb
Compressed 3 files, 39,415,777 => 10,485,792 bytes. Ratio 26.60%           
Compression time: cpu 0.03 sec/real 0.24 sec = 13%. Speed 164.91 mB/s
All OK
Here is the function that allows you to set the position of Diskspan to not be considered as part of the value bound to the last extension group:

Code:
function SetDiskspanValuePosition(const sMethodValue, sDiskspanValue: string): string;
var
  i: integer;
begin
  if Length(sDiskspanValue) > 0 then
  begin
    i:=Pos('/$', sMethodValue);
    if i > 0 then
    begin
      Result:=sMethodValue;
      Insert(Copy(sDiskspanValue, 2, Length(sDiskspanValue)), Result, i);
    end else
      Result:=sMethodValue+sDiskspanValue;
  end else
    Result:=sMethodValue;
end;
Example:
Code:
  ShowMessage('-m'+SetDiskspanValuePosition('/$text=ppmd/$jpeg=paq8pxd/$exe=exe2', '+diskspan:4460mb:4470mb'));
Hi JRD!
Has this project been canceled?
Reply With Quote
  #195  
Old 11-02-2019, 13:51
JRD!'s Avatar
JRD! JRD! is offline
Registered User
 
Join Date: Sep 2015
Location: Matrix
Posts: 274
Thanks: 225
Thanked 600 Times in 168 Posts
JRD! is on a distinguished road
Hi Simorq,

This is an example for those who want to implement cls-diskspan.dll in their program.
This places the diskspan value before the part of the method that contains the groups.

About cls-diskspan:

The implementation in ArcGUI allows division into multiple DVDs or a custom size.
The first volume size of the next archive is calculated by the size of the last previous volume, which greatly simplifies its use.
If an error occurs during compression, it will retrieve information from the previous archive.

About ArcGUI:

I'm going to post version 1.15.1, it includes an automated compression method function that is based on the default values assigned to extension groups.
With a simple click, you designate a default compression method for files whose extension is not part of the groups, it allows to apply the masks when it is necessary.
__________________
Practice makes perfect.

Last edited by JRD!; 11-02-2019 at 13:53.
Reply With Quote
The Following 6 Users Say Thank You to JRD! For This Useful Post:
0xffaded (18-03-2019), doofoo24 (11-02-2019), ffmla (13-02-2019), pakrat2k2 (11-02-2019), punsher2011 (23-04-2019), Simorq (11-02-2019)
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Vista beta 2 blocking Starforce ronandex CD/DVD Copy Protections & Utilities 4 31-05-2006 02:37
Neverwinter Nights v1.66.8071 (Beta) doomerdgr8 PC Games 1 28-05-2005 10:18
Copying Socom2 Beta Is It Possible dblue PS2 Games 6 14-10-2003 19:14
OT: Opinion and BETA testers neded for my upcomming products! krondike PC Games 3 06-10-2003 08:29
PAL Patcher 0.93 Beta Megalexxx DC Games 18 03-01-2003 09:23



All times are GMT -7. The time now is 18:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
FileForums @ https://fileforums.com