Prove an arcade file survived an Android transfer with a checksum receipt
Hash the untouched authorized source file with SHA-256, transfer it through Android's system picker into a dedicated folder, hash the readable destination stream, and compare the complete digests and byte counts. A match proves the bytes survived transfer; it does not prove the ROM or CHD matches a MAME version, that the app retained URI access, or that redistribution is allowed.
Do this in order
- 01
Record the title, rights holder, permission scope, exact first-party source URL, review date, original filename, and byte count before transfer.
- 02
Calculate SHA-256 from the untouched local file and store the digest in a plain-text receipt outside any public or app-shared game folder.
- 03
Create a dedicated Android folder and select only that file or folder through the app's documented Storage Access Framework flow.
- 04
After copying, hash the destination bytes through a trusted local tool or the app's documented verifier; do not rely on the displayed filename or modified time.
- 05
Compare full SHA-256 values and byte counts exactly, then test whether the app still has access after a cold restart and device reboot.
- 06
Run the exact emulator/core audit separately and append its version, short name, dependencies, and result to the receipt without overwriting the source record.
Decision and diagnostic table
| Result | What it proves | Next check |
|---|---|---|
| SHA-256 and size match | Transfer preserved the bytes | Run version-matched emulator audit |
| Size differs | Copy is incomplete or transformed | Delete destination and repeat safely |
| Size matches; hash differs | At least one byte changed | Stop and inspect the transfer path |
| Hash matches; app loses access | Integrity is fine; URI grant or path failed | Re-select through the supported picker |
One receipt holds two independent claims
The rights section records why you may possess or use the file and whether redistribution is permitted. The integrity section records the exact bytes before and after transfer. Neither claim can substitute for the other.
Keep permission text and source URLs verbatim in your private record, but do not place credentials, purchase records, private dumps, or restricted files in a shared folder.
The system picker grants access to a document identity
Android's Storage Access Framework lets a user choose a document or directory and gives the app a URI-based grant. That is different from a desktop filesystem path and can persist only when the app and provider support the documented grant flow.
A matching hash cannot repair a lost URI grant. Re-select the narrow folder instead of granting broad all-files access or moving files into Android/data or Android/obb.
Compatibility comes after integrity
MAME and derived cores compare versioned filenames, sizes, hashes, and dependencies. A perfect transfer of the wrong romset remains incompatible, while an audit failure is not evidence that Android corrupted the file.
Preserve the source hash, destination hash, emulator/core version, and audit output as separate fields. That makes the next repair reversible and prevents random archive edits.
A checksum is not a license or ownership certificate. Transfer only files you may lawfully possess and use, and never publish a private dump, ROM, BIOS, CHD, artwork, audio, key, or restricted source merely because its hash is known.