Unhardcoding e-Reader checksum

This commit is contained in:
Rodrigo Alfonso 2025-02-15 22:17:53 -03:00
parent 86eed10480
commit 5c0cf89008

View File

@ -132,24 +132,31 @@ class LinkCard {
transferNormal(loaderSize); // cancel?
u32 checksum = 0;
u32* dataOut = (u32*)loader;
for (u32 i = 0; i < loaderSize / 4; i++) {
transferNormal(dataOut[i]);
u32 data = dataOut[i];
checksum += data;
transferNormal(data);
// cancel?
}
transferNormal(0);
transferNormal(0x5b8bc897); // TODO: HARDCODED CHECKSUM
transferNormal(0x5b8bc897);
transferNormal(checksum);
transferNormal(checksum);
linkSPI.deactivate();
linkRawCable.activate();
Link::wait(MODE_SWITCH_WAIT);
if (transferMulti(DEVICE_E_READER) != DEVICE_E_READER)
return SendResult::FAILURE_DURING_TRANSFER;
if (transferMulti(DEVICE_E_READER) != TRANSFER_SUCCESS)
if (transferMulti(DEVICE_E_READER) != DEVICE_E_READER ||
transferMulti(DEVICE_E_READER) != TRANSFER_SUCCESS) {
linkRawCable.deactivate();
return SendResult::FAILURE_DURING_TRANSFER;
}
linkRawCable.deactivate();
return SendResult::SUCCESS;
}