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

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 20-12-2025, 16:11
luxuse's Avatar
luxuse luxuse is offline
Registered User
 
Join Date: Aug 2024
Location: the end of the world
Posts: 11
Thanks: 10
Thanked 3 Times in 2 Posts
luxuse is on a distinguished road
Thumbs up

Great update and thanks for updating the README! Everything works really well, though I hope in the future there might be a version without the .NET dependency. Really appreciate your work!
Reply With Quote
Sponsored Links
  #2  
Old 20-12-2025, 21:35
L33THAK0R's Avatar
L33THAK0R L33THAK0R is offline
Registered User
 
Join Date: Feb 2021
Location: Saudi Arabia
Posts: 406
Thanks: 138
Thanked 117 Times in 70 Posts
L33THAK0R is on a distinguished road
v2.30 Release

Patch Notes:

- Significantly overhauled logic for HDD/SSD identification, added a debug info window to catch future edge cases.
- Abstracted monolithic class into partial classes, code is still a bit spaghetti but easier to manage.
- When the time elapsed tab is enabled, total time is also tracked and appears upon completion, this was mainly to benchmark the actual difference between HDD and SSD mode. On a 7 GiB sample containing 5 files of varying size, using HDD mode saved ~ 5 seconds (~27 using SSD/Parallel, ~22 using HDD/Sequential mode). These improvements were mirrored over other tests, however I didn't record the results at the time. Just included this note to demonstrate that parallel operations aren't always optimal.

Additional Notes:

The SSD/HDD detection feature has turned out to be a real bugger of an issue, the issue was not with standard drives but encrypted drives, where previous volume IOCTLs checks weren't returning any valid values, at least with VeraCrypt encrypted drives. New checks return to checking the "friendly name" and analysing it for key words, i.e. SSD, NVMe, Flash, M.2. Under the help menu in the toolbar, is a disk info debug box, with a clipboard friendly result reading. If anyone has a drive which is wrongly identified and can submit the debug info, I should be able to improve these detection layers.

Last edited by L33THAK0R; 20-12-2025 at 21:49.
Reply With Quote
  #3  
Old 21-12-2025, 03:49
L33THAK0R's Avatar
L33THAK0R L33THAK0R is offline
Registered User
 
Join Date: Feb 2021
Location: Saudi Arabia
Posts: 406
Thanks: 138
Thanked 117 Times in 70 Posts
L33THAK0R is on a distinguished road
Quote:
Originally Posted by luxuse View Post
Great update and thanks for updating the README! Everything works really well, though I hope in the future there might be a version without the .NET dependency. Really appreciate your work!
If/when I learn C/Rust down the road, I'll give it a crack, unfortunately, at least currently, I'm not equipped to make a more portable application.
Reply With Quote
  #4  
Old 24-12-2025, 22:17
L33THAK0R's Avatar
L33THAK0R L33THAK0R is offline
Registered User
 
Join Date: Feb 2021
Location: Saudi Arabia
Posts: 406
Thanks: 138
Thanked 117 Times in 70 Posts
L33THAK0R is on a distinguished road
v2.40 Release Notes

Patch Notes:
- Replaced LockWindowUpdate with WM_SETREDRAW to eliminate desktop flickering and visual artifacts during bulk file updates.
- Replaced string-based status tracking with a lightweight ItemStatus byte enum to significantly reduce memory usage and accelerate sorting operations.
- Switched worker threads to synchronous I/O and hashing to remove Async State Machine overhead, maximizing throughput on high-speed NVMe drives.
- Implemented modulo-based throttling in the UI update loop to drastically reduce CPU cycles spent on system time checks during high-speed processing.
- Split the monolithic Form1 and Helpers files into specialized partial classes and namespaces to improve organization.
- Centralized P/Invoke definitions into a dedicated Win32Storage class to isolate native code and resolve compiler ambiguity errors.
- Optimized memory usage by refactoring the data model to store hashes as raw byte arrays instead of strings.
- Reduced garbage collection pressure by implementing ArrayPool for buffer reuse within the hashing engine.
- Corrected the project build configuration to disable incompatible trimming flags while maintaining a lightweight single-file executable.
- Implemented a new "View" menu to optionally toggle Hash/Expected Hash columns and lock column ordering.
- Added a "Show Full File Paths" option that dynamically adjusts the File Name column's maximum width limit to the longest text length plus a 25px buffer.
- Integrated a "Show Duplicates" filter that groups files by hash and enables conditional "Copy Duplicates" and "Delete Duplicates" batch script generation.
- Added a "Delete BAD Files" script generator that automatically enables only when verification errors are detected.
- Updated all save dialogs to default to the root directory of the scanned files rather than the application path.
- Removed "Script Saved" message boxes to allow for silent, uninterrupted script generation.
- Fixed column resizing logic to enforce "Hard Stop" limits (0.75x–1.5x) using event cancellation, eliminating visual snap-back artifacts.
- Enabled horizontal scrolling on the main list view to ensure long file paths remain viewable.
- Replaced the hashing engine with a Producer/Consumer pattern using System.Threading.Channels to decouple high-speed file scanning from processing logic.
- Implemented System.Buffers.ArrayPool<byte> to recycle memory buffers, eliminating massive Garbage Collection overhead during large batch operations.
- Optimized the file scanner to batch UI updates in groups of 2,000, allowing raw disk read speeds to saturate without freezing the interface.
- Replaced the performance-heavy "Pin-to-Top" mechanism with a scalable SplitContainer and secondary ListView for tracking active large files.
- Added GDI+ resource caching to the Virtual Mode rendering pipeline to prevent system handle exhaustion and crashes during extensive scrolling.
- Fixed critical thread-safety race conditions by ensuring list counts and progress limits are only resolved on the UI thread.
- Enhanced the user interface with multi-colored status statistics, synchronized column alignment, and a debounced search filter for responsive interaction.
- Replaced the object-based data model with a Structure of Arrays (SoA) architecture to eliminate per-file object overhead and maximize CPU cache locality.
- Switched from FileStream to System.IO.RandomAccess for zero-allocation file reading, creating a direct "disk-to-memory" pipeline.
- Hoisted hashing buffers and algorithm instances to thread-local storage to prevent Garbage Collection churn during batch processing.
- Implemented a custom String Pool utilizing .NET 10's AlternateLookup to deduplicate repetitive path strings and significantly reduce memory usage.
- Enabled Dynamic Profile-Guided Optimization (PGO) in the project settings to let the JIT compiler optimize hot loops based on runtime execution data.
- Refactored the producer-consumer pipeline to pass lightweight structs (FileJob) between threads instead of heap-allocated class objects.
- Updated the Virtual ListView to render directly from primitive arrays and cache hex string conversions, eliminating UI scroll lag.

Additional Notes:

Processing is 1.61x faster than v2.30, memory usage has been reduced by 84%. SharpSFV is now 16.53x faster than QuickSFV (when verifying using pre-generated MD5 hashes), with QuickSFV only being able to process around 50% of the provided benchmark MD5 file, before crashing.
Reply With Quote
The Following 3 Users Say Thank You to L33THAK0R For This Useful Post:
audiofeel (24-12-2025), Dunnowho69 (25-12-2025), Razer-785 (26-12-2025)
  #5  
Old 26-12-2025, 22:50
Razer-785's Avatar
Razer-785 Razer-785 is offline
Registered User
 
Join Date: May 2025
Location: The Moon
Posts: 26
Thanks: 47
Thanked 3 Times in 3 Posts
Razer-785 is on a distinguished road
Question Remove file paths for installer/setup

Hello i am sorry if this is a stupid question but how can i make the checksum without the folder path. i am trying to implement this into a installer/setup but i don't want to have to edit the checksum file each time to remove the file path.

the file named "checksums-original.txt" is what i get if i do it normally copy the folder path and press ctl+v in the software.

and the file named "checksums-fixed.txt" is what i need, i already tested it and it works.

but if you can help me with this that would be great, also im kinda new so im sorry if this is kinda weird or does not make sense.

PS. Awesome program works really well

Last edited by Razer-785; 23-03-2026 at 13:09.
Reply With Quote
  #6  
Old 27-12-2025, 19:42
L33THAK0R's Avatar
L33THAK0R L33THAK0R is offline
Registered User
 
Join Date: Feb 2021
Location: Saudi Arabia
Posts: 406
Thanks: 138
Thanked 117 Times in 70 Posts
L33THAK0R is on a distinguished road
Quote:
Originally Posted by Razer-785 View Post
Hello i am sorry if this is a stupid question but how can i make the checksum without the folder path. i am trying to implement this into a installer/setup but i don't want to have to edit the checksum file each time to remove the file path.

the file named "checksums-original.txt" is what i get if i do it normally copy the folder path and press ctl+v in the software.

and the file named "checksums-fixed.txt" is what i need, i already tested it and it works.

but if you can help me with this that would be great, also im kinda new so im sorry if this is kinda weird or does not make sense.

PS. Awesome program works really well
In the options tool-bar, you've enabled the "Always Save Absolute Paths" setting, this option is disabled by default. If you're unsure of the difference between absolute and relative paths, a search or two should clear up any confusion.
Reply With Quote
The Following User Says Thank You to L33THAK0R For This Useful Post:
Razer-785 (27-12-2025)
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



All times are GMT -7. The time now is 12:03.


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