Mute wrong log on edat #19502

Open
digant73 opened 3:23pm on September 15, 2026 wants to merge 85 Ξ” into rpcs3/rpcs3 master from
mute_wrong_log_on_edat
Reviewing
22 fewer changed lines
(38% less) vs GitHub
This saves about 66.5 hours per year vs conventional diff tools
This work implements EDAT Decryption Failure - BLJS10154 (open)

Quick summary

RPCS3's log reports multiple EDAT decryption failures for perfectly fine EDAT files in BLJS10154.
The necessary raps are all installed.
They are the original files from the game.
They are from DLC for the game.

Programs like TrueAncestor EDAT Rebuilder and make_npdata-hykem are able to successfully decrypt these EDAT files as well.

Details

RPCS3 reported failing to decrypt several EDAT files for the game BLJS10154.
One such file is this:
/dev_hdd0/game/BLJS10154/USRDIR/menu/mobilesuit/c01_064_00/license.edat

The log reports:
"EDAT: Block at offset 0x120 has invalid hash!"
"Error Decrypting data"
"EDAT: NPDRM ReadData() failed!"

This indicates RPCS3 has failed to validate the hash included in the metadata of the very first block of the file (Usually the only one anyhow though). This happens the same way several times.

However, these files are perfectly fine according to make_npdata-hykem and TrueAncestor EDAT Rebuilder is able to decrypt it. I am also personally able to confirm the contents of the decrypted data were valid.

My guess is a minor oversight may have occurred in the decryption process, maybe around the metadata of the block, or possibly the block itself wasn't decrypted right, or both. The flags in EDAT can be very tricky to figure out. I made my own C# library for EDAT files guided by make_npdata-hykem and it was quite a hassle to put it together at first.

Attach a log file

RPCS3.log.gz

Attach capture files for visual issues

No response

System configuration

OS: Windows 10 Pro 22H2 (19045.6575) CPU: AMD Ryzen 7 5700G
GPU: NVIDIA RTX 3070 Ti 8GB (driver 572.70.0.0) RAM: 16GBx2 3600Mhz

Other details

No response

digant73 authored
of work during September 15
Diff Delta:
85
About 7 Diff Delta/hour
Classified as:  Bug Fix, General

digant73's Description of Work #17843 EDAT Decryption Failure - BLJS10154

As already identified by Elad in #17843, fix a wrong spamming of error logs when a game opens an EDAT.
sys_fs tries the klicensees registered through sceNpDrmIsAvailable until one fits. Each candidate that does not fit logs three error-level lines.
On ticket #17843, there were 68 misses for a total of 204 error lines while at the end no real error on .edat was present.

A simple fix consists on logging only one error message at the end of the main loop where candidates are tested in case all of them failed.

Furthermore:
- if validate_npd_hashes fails, proceed with the right handling (returning true if decryption will succeed) instead of returning true even if decryption will fail
- return false if no RAP file is found and needed

closes #17843

Building updated commit group diff...
3 total changed files
Loading changes...
Loading changes...
Loading changes...