Go Back   FileForums > Game Backup > PC Games > PC Games - CD/DVD Conversions > Conversion Tutorials
Register FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 19-12-2017, 16:53
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 split function has been removed temporarily, I opted for compatibility with CLS-DISKSPAN of razor12911,
I will be able to integrate Universal CLS Generator 78372, I do not know yet if it's through the Tools menu or if it is automatically after compression (if the option is enabled).

Version 0.9.8.5 is available, I included the folder "Masked Data Compressor 2.5" of the panker1992 project for demonstration purposes.
Attached Images
File Type: jpg arcgui_files_manager.jpg (150.5 KB, 190 views)
__________________
Practice makes perfect.
Reply With Quote
The Following 6 Users Say Thank You to JRD! For This Useful Post:
78372 (19-12-2017), mausschieber (19-12-2017), pakrat2k2 (19-12-2017), Simorq (20-12-2017), Stor31 (22-12-2017), Titeuf (19-12-2017)
Sponsored Links
  #2  
Old 20-12-2017, 00:08
78372 78372 is offline
Registered User
 
Join Date: Dec 2016
Location: Bangladesh
Posts: 650
Thanks: 772
Thanked 953 Times in 309 Posts
78372 is on a distinguished road
Remember, the cls generated with Universal CLS Generator requires to be in compression if you use it on decompression.

Instead of integrating the whole generator, you can generate some cls for methods that don't support stdio and add them to Arc GUI.

Or, as you have source, you can add the generator directly to the program.
__________________
NOT AVAILABLE
Reply With Quote
The Following 3 Users Say Thank You to 78372 For This Useful Post:
EzzEldin16 (20-12-2017), JRD! (20-12-2017), Simorq (20-12-2017)
  #3  
Old 20-12-2017, 08:16
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
Yes, I am thinking about the most suitable solution, thanks for the advice.
__________________
Practice makes perfect.
Reply With Quote
The Following 2 Users Say Thank You to JRD! For This Useful Post:
78372 (20-12-2017), Simorq (20-12-2017)
  #4  
Old 21-12-2017, 11:38
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 next version will be clearly different from the previous one at least visually, the file manager has disappeared and the independent tabs have seen the day on the main interface.
A CLS tab has been added to support the encoding/decoding of the various libraries in the working folder. The creation of CLS will be possible and their editing should be possible.
Attached Images
File Type: png arcgui_0.9.8.6.png (14.2 KB, 149 views)
__________________
Practice makes perfect.
Reply With Quote
The Following User Says Thank You to JRD! For This Useful Post:
Simorq (21-12-2017)
  #5  
Old 21-12-2017, 12:34
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 example of using CLS-DISKSPAN:
Attached Images
File Type: png diskspan_example.png (54.7 KB, 148 views)
__________________
Practice makes perfect.
Reply With Quote
The Following 4 Users Say Thank You to JRD! For This Useful Post:
78372 (21-12-2017), KaktoR (28-12-2017), Simorq (21-12-2017), Titeuf (23-12-2017)
  #6  
Old 27-12-2017, 14:35
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
Sorry, I did not test the last share, this does not work because of the FREEARC commands that are managed internally by the application that are incompatible with the work of Panker,
I add the option solid archive for the Compatibility with CLS-Diskspan, please excuse me for this error, so I added an area where you can add your commands to ensure compatibility.
I have improved the manager of external compressors, you can now create or edit external compressors with the format [external compressor: precomp043, precomp044],
In order to quickly fix the problem, I'll soon be sharing the next version with CLS-Diskspan compatibility, the CLS creation feature will come a little later.
__________________
Practice makes perfect.
Reply With Quote
The Following 2 Users Say Thank You to JRD! For This Useful Post:
KaktoR (28-12-2017), Simorq (27-12-2017)
  #7  
Old 28-12-2017, 08:17
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 will opt for an option in the settings of the application rather than by creating the method Diskspan:
Attached Images
File Type: png arcgui_settings_diskspan.png (17.2 KB, 114 views)
__________________
Practice makes perfect.
Reply With Quote
The Following 4 Users Say Thank You to JRD! For This Useful Post:
78372 (28-12-2017), KaktoR (28-12-2017), pakrat2k2 (28-12-2017), Simorq (28-12-2017)
  #8  
Old 29-12-2017, 08:44
Gupta Gupta is offline
Banned
 
Join Date: Aug 2016
Location: https://t.me/pump_upp
Posts: 399
Thanks: 139
Thanked 715 Times in 231 Posts
Gupta is on a distinguished road
Send a message via ICQ to Gupta Send a message via AIM to Gupta Send a message via Yahoo to Gupta
Good Job Mate
when you are using external compressors it becomes difficult to track decompression, so maybe an archive(Setup0.bin?) with all decomp exe(resources needed for decompression)
can be created
so that setup.exe can extract it before everything (in {tmp}) and walla we don't have to change every single script for a new compression
also, we can know it's size beforehand so you can set disk span value accordingly
Reply With Quote
The Following User Says Thank You to Gupta For This Useful Post:
JRD! (29-12-2017)
  #9  
Old 29-12-2017, 14:22
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
Thank you, I had already set up the system that copies the external compressors used, I have to revise it to integrate the management of CLS if it is used for compression.

Maybe I'll add a zone where you fill in the weight of the setup.exe, so you only have one value for the split, and add some presets: dvd5, dvd9...

I have a little change the diskspan.dll of razor so what kind all the files in the same output directory,
I will see to use the format "Setup-1.bin, Setup-2.bin", there are about fifteen changes to make, it should be functional in the evening or tomorrow.

A big thank you to Razor12911 for his work!
__________________
Practice makes perfect.
Reply With Quote
The Following User Says Thank You to JRD! For This Useful Post:
Simorq (30-12-2017)
  #10  
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)
  #11  
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)
  #12  
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)
  #13  
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,308 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
  #14  
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)
  #15  
Old 06-04-2019, 17:01
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

I must write for a long time a help file....
Some quick info; For favorite programs in the modules folder, add "module." in the name of the program to launch,
the name of the menu "Modules -> External -> XXX" corresponds to the name of the folder in which your favorite program is located;
for the repack project creation this is in development, used "Restore Game Structure" fonction from main menu to restore the structure after the loading of a project.
__________________
Practice makes perfect.
Reply With Quote
The Following 4 Users Say Thank You to JRD! For This Useful Post:
arkantos7 (22-05-2019), ffmla (07-04-2019), punsher2011 (23-04-2019), Simorq (23-04-2019)
Reply


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 06:08.


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