mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Merge remote-tracking branch 'origin/master' into Mp4_branch
This commit is contained in:
commit
a059957317
1 changed files with 20 additions and 1 deletions
|
@ -1937,7 +1937,26 @@ u32 sceIoDread(int id, u32 dirent_addr) {
|
|||
|
||||
strncpy(entry->d_name, info.name.c_str(), 256);
|
||||
entry->d_name[255] = '\0';
|
||||
entry->d_private = 0xC0DEBABE;
|
||||
// write d_private for supporting Custom BGM
|
||||
// ref JPCSP https://code.google.com/p/jpcsp/source/detail?r=3468
|
||||
if (Memory::IsValidAddress(entry->d_private)){
|
||||
if (sceKernelGetCompiledSdkVersion() <= 0x0307FFFF){
|
||||
// d_private is pointing to an area of unknown size
|
||||
// - [0..12] "8.3" file name (null-terminated), could be empty.
|
||||
// - [13..???] long file name (null-terminated)
|
||||
strncpy((char*)Memory::GetPointer(entry->d_private + 13), (const char*)entry->d_name, ARRAY_SIZE(entry->d_name));
|
||||
}
|
||||
else {
|
||||
// d_private is pointing to an area of total size 1044
|
||||
// - [0..3] size of area
|
||||
// - [4..19] "8.3" file name (null-terminated), could be empty.
|
||||
// - [20..???] long file name (null-terminated)
|
||||
auto size = Memory::Read_U32(entry->d_private);
|
||||
if (size >= 1044) {
|
||||
strncpy((char*)Memory::GetPointer(entry->d_private + 20), (const char*)entry->d_name, ARRAY_SIZE(entry->d_name));
|
||||
}
|
||||
}
|
||||
}
|
||||
DEBUG_LOG(SCEIO, "sceIoDread( %d %08x ) = %s", id, dirent_addr, entry->d_name);
|
||||
|
||||
// TODO: Improve timing. Only happens on the *first* entry read, ms and umd.
|
||||
|
|
Loading…
Add table
Reference in a new issue