I finally managed to get a Wireshark capture of the PS2 ⟷ NAS traffic which shows the problem.
To easily look at the data, download the attached capture1.pcap.gz file, decompress and load into Wireshark.
I've also attached a screenshot of what the on-screen game list looked like afterwards. The on-screen game list looks like this:
Code:
21 Card Games PAL
Jak & Daxter - The Lost Frontier
James Pond Codename Robocod PAL
James Pond Codename Robocod PAL
James Pond Codename Robocod PAL
Power Rangers Dino Thunder
The Mummy (rip).isoLost Frontier
Tomb Raider Underworld (rip).iso
In this test the bad/corrupted names are two James Pond entries (OPL thinks the bogus ones start with . and .., because the . and .. entries in the DVD directory are returned immediately after the James Pond ISO) and The Mummy. The actual on-disk filenames as returned by the NAS are, in order:
Code:
(in CD directory)
.
..
SLES_533.57.21 Card Games PAL.iso
SLUS_200.65.Smuggler's Run.iso
SLUS_200.66.Half-Life.iso
SLUS_202.71.Shifters.iso
SLUS_209.44.Power Rangers Dino Thunder.iso
SLES_536.82.James Pond Codename Robocod PAL.iso
(in DVD directory)
.
..
SCUS_975.58.Jak & Daxter - The Lost Frontier.iso
SLUS_217.75.The Mummy (rip).iso
SLUS_218.58.Tomb Raider Underworld (rip).iso
Several games are missing from the OPL on-screen list: Half-Life, Shifters and Smuggler's Run don't appear at all. The reason for that is, OPL thinks their names are invalid. Because the Smuggler's Run filename partially overwrites the previous longer 21 Card Games filename, OPL thinks it is actually "SLUS_200.65.Smuggler's Run.isoiso". So that isn't included in the list. Similarly, the two following games have shorter names so OPL excludes them.
Let's look at the packet 35 data, which Wireshark shows as "Trans2 Response, FIND_NEXT2, Files: SLES_533.57.21 Card Games PAL.iso"
Code:
0000 00 15 c1 e1 28 97 00 07 40 fb f6 e2 08 00 45 00 ....(... @.....E.
0010 00 ec a6 c9 40 00 40 06 11 e9 c0 a8 00 05 c0 a8 ....@.@. ........
0020 00 04 00 8b 2f 1f 9d 02 95 0c 00 00 1d 31 50 18 ..../... .....1P.
0030 16 d0 ea 5f 00 00 00 00 00 c0 ff 53 4d 42 32 00 ..._.... ...SMB2.
0040 00 00 00 80 41 00 00 00 00 00 00 00 00 00 00 00 ....A... ........
0050 00 00 01 00 00 00 64 00 00 00 0a 08 00 80 00 00 ......d. ........
0060 00 08 00 38 00 00 00 80 00 40 00 00 00 00 00 89 ...8.... .@......
0070 00 00 01 00 00 00 00 00 00 00 80 00 00 00 00 00 ........ ........
0080 00 00 80 4f 8f f9 bc ef cb 01 80 4f 8f f9 bc ef ...O.... ...O....
0090 cb 01 80 4f 8f f9 bc ef cb 01 80 4f 8f f9 bc ef ...O.... ...O....
00a0 cb 01 00 78 2c 03 00 00 00 00 00 00 30 03 00 00 ...x,... ....0...
00b0 00 00 20 00 00 00 21 00 00 00 00 00 00 00 0c 00 .. ...!. ........
00c0 53 4c 45 53 5f 7e 31 4f 2e 49 53 4f 00 00 00 00 SLES_~1O .ISO....
00d0 00 00 00 00 00 00 00 00 53 4c 45 53 5f 35 33 33 ........ SLES_533
00e0 2e 35 37 2e 32 31 20 43 61 72 64 20 47 61 6d 65 .57.21 C ard Game
00f0 73 20 50 41 4c 2e 69 73 6f 00 s PAL.is o.
The file length field is at offset 0xB6. It's 0x21 = 33. That is the length of "SLES_533.57.21 Card Games PAL.iso" not including the terminating zero. So it looks like my theory about the problem was right.