Clarify emulated behavior for ReadBCA

This commit is contained in:
Pokechu22 2019-10-03 15:53:22 -07:00
parent 6c0399103f
commit f1dc908883
1 changed files with 9 additions and 2 deletions

View File

@ -881,8 +881,15 @@ void ExecuteCommand(ReplyType reply_type)
break; break;
// Wii-exclusive // Wii-exclusive
case DICommand::ReadBCA: case DICommand::ReadBCA:
WARN_LOG(DVDINTERFACE, "DVDLowReadDiskBca"); WARN_LOG(DVDINTERFACE, "DVDLowReadDiskBca - supplying dummy data to appease NSMBW");
Memory::Write_U32(1, s_DIMAR + 0x30); // NSMBW checks that the first 0x33 bytes of the BCA are 0, then it expects a 1.
// Most (all?) other games have 0x34 0's at the start of the BCA, but don't actually
// read it. NSMBW doesn't care about the other 12 bytes (which contain manufacturing data?)
// TODO: Read the .bca file that cleanrip generates, if it exists
// Memory::CopyToEmu(output_address, bca_data, 0x40);
Memory::Memset(s_DIMAR, 0, 0x40);
Memory::Write_U8(1, s_DIMAR + 0x33);
break; break;
// Wii-exclusive // Wii-exclusive
case DICommand::RequestDiscStatus: case DICommand::RequestDiscStatus: