Setup & File Management 8 min read

How to Prepare Your Own Steam, GOG & Retail Game Files for Android Ports

A practical engineering guide to locating your legally purchased Steam or GOG game files, unpacking offline installers, verifying SHA-1 checksums, and navigating Android Scoped Storage.

Published:
Last Reviewed:

Why Clean-Room Android Ports Require Your Own Game Files

Every non-freeware decompilation, static recompilation, engine recreation, and source port indexed on DroidPorts operates on a strict separation between executable engine code and copyrighted game assets.

When volunteer engineers build a project like OpenMW (The Elder Scrolls III: Morrowind), DevilutionX (Diablo), fheroes2 (Heroes of Might and Magic II), or Ship of Harkinian (Ocarina of Time), their open-source APK provides the compiled ARM64 engine binary, user interface, renderer, and controller bindings. It intentionally omits all proprietary levels, textures, character models, dialogue audio, and music owned by the original publisher.

To play these ports on your Android phone, tablet, or handheld, you must supply the data files from your own legally purchased copy of the game. This guide walks through the cleanest, most reliable methods for locating, unpacking, verifying, and transferring those files onto modern Android versions.


Method 1: Locating Files from a Steam Installation

If you own a classic PC title on Steam (such as DOOM, Quake, Half-Life 2, Morrowind, Fallout, Sonic Mania, or Star Wars: Knights of the Old Republic), Steam downloads the unencrypted retail data archives directly into your local library folder.

Step-by-Step via the Steam Desktop Client

  1. Open your Steam Library on Windows, macOS, or Linux (including Steam Deck Desktop Mode).
  2. Right-click the game in your library list and select Manage > Browse local files.
  3. A file explorer window will open directly inside steamapps/common/<Game Name>/.
  4. Copy only the specific data archives or subdirectories listed in the What You Need checklist on that game’s DroidPorts page (or copy the entire folder if the port reads the full directory tree).

Common Steam Archive Formats Used by Android Ports

File ExtensionExample GamesPurpose
.WAD / .IWADDOOM, DOOM II, Heretic, HexenInternal WAD archives containing all sprites, map geometry, and sound effects (DOOM.WAD, DOOM2.WAD).
.PAK / .PK3 / .PK4Quake, Quake II, Quake III Arena, DOOM 3Indexed package archives (pak0.pak, pak000.pk4) read by id Tech engines.
.VPK + bin/Half-Life 2, Portal, Counter-Strike: SourceValve Pack archives (hl2_misc_dir.vpk, hl2_textures_dir.vpk) containing Source Engine assets.
.ESM + .BSAThe Elder Scrolls III: MorrowindElder Scrolls Master data file and Bethesda Softworks Archive files inside Data Files/.
.DAT + MASTER.DATFallout, Fallout 2Interplay master asset archives (MASTER.DAT, CRITTER.DAT) plus the data/ sound/art folder.
Data.rsdkSonic Mania, Sonic CD, Sonic 1 & 2Retro Engine SDK asset bundle located in the root of the Steam installation directory.

Method 2: Unpacking DRM-Free GOG Offline Installers (Even Without a PC)

GOG.com is the preferred storefront for many Android port enthusiasts for two reasons: every release is 100% DRM-free, and GOG packages classic games with clean, standardized directory layouts that engine recreations (like VCMI, fheroes2, OpenRCT2, CorsixTH, and DevilutionX) explicitly test against.

Option A: Installing on a PC First

Install the game normally on Windows or Linux, navigate to C:\GOG Games\<Game Name>\, and copy the required asset files to your Android device.

Option B: Unpacking the GOG Offline .exe Directly with innoextract

You do not even need a Windows PC to unpack a GOG installer. GOG builds its offline backup installers (setup_<game>.exe and optional .bin parts) using Inno Setup.

  • On Linux or macOS: Install the open-source command-line tool innoextract (sudo apt install innoextract or brew install innoextract) and run:
    innoextract -d ./extracted_game setup_diablo_1.09_v2.exe
    
  • Directly on Android: Many Android port launchers (including VCMI, fheroes2, and OpenRCT2 helper tools) or Termux (pkg install innoextract) can unpack a downloaded GOG offline installer .exe directly on your phone or handheld, placing the extracted app/ data folder straight into the port’s working directory.

Method 3: Verifying Retail Console Backups with SHA-1 and MD5 Checksums

For console decompilations and static recompilations (such as sm64-port, Ship of Harkinian, 2Ship2Harkinian, Starship, and Perfect Dark), the port’s built-in asset extractor expects an exact, unmodified byte layout from a specific regional revision of your legally owned cartridge or disc.

Why is the version requirement so strict? Because a clean-room decompilation or static recompilation does not contain asset files of its own. Instead, its asset extraction table contains hard-coded byte offsets (for example: “read 14,208 bytes at offset 0x0041A800 to reconstruct the Kokiri Forest collision mesh”). If you supply a different regional revision (such as Revision 1.2 instead of Revision 1.0, or a byte-swapped .v64 file instead of a big-endian .z64 file), every byte offset shifts and extraction fails.

How to Check Your File’s Checksum Before Transferring

Before copying your legally backed-up cartridge or disc image to your Android device, verify its cryptographic hash using built-in OS tools:

  • Windows PowerShell:
    Get-FileHash .\baserom.us.z64 -Algorithm SHA1
    
  • macOS / Linux Terminal:
    shasum -a 1 baserom.us.z64
    

If your Nintendo 64 cartridge backup is in .v64 (byte-swapped) or .n64 (little-endian) format rather than .z64 (big-endian native format), most modern port launchers automatically convert the byte order in memory during first-run asset generation, producing an internal .otr or .o2r archive inside the app’s data folder.


Starting with Android 11 and tightened further in Android 13, 14, and 15, Google introduced Scoped Storage restrictions on the /sdcard/Android/data/ and /sdcard/Android/obb/ directories. While this improves security by preventing rogue apps from reading another app’s private files, it affects how you copy game assets into native ports.

1. Ports with Modern SAF (Storage Access Framework) Folder Pickers

Newer ports (including Ship of Harkinian, 2Ship2Harkinian, DevilutionX, OpenMW, and Sonic 3 A.I.R.) use Android’s native Storage Access Framework (SAF) document picker on first launch:

  • Create a clean folder in your main user-accessible storage, such as /sdcard/Games/Morrowind/ or /sdcard/Ports/Diablo/.
  • Copy your game files there via USB-C cable or SD card.
  • Launch the port and tap Select Game Data Folder when prompted. You never have to touch /sdcard/Android/data/.

2. Ports That Read /sdcard/Android/data/<package_name>/files/

Older SDL2 ports default to reading assets from their private external sandbox at /sdcard/Android/data/<package_name>/files/:

  • Launch the App Once First: Android does not create the /sdcard/Android/data/<package_name>/files/ directory until you open the installed APK at least once.
  • Use a USB-C Connection to a PC (MTP) or ADB: Even when Android’s built-in phone file manager hides Android/data/, plugging your phone or handheld into a Windows, macOS, or Linux computer via USB-C in File Transfer (MTP) mode gives full read/write access to Internal shared storage/Android/data/.
  • Android Built-In Document Provider (Files by Marc / AOSP Files): On Android handhelds (like Retroid and AYN Odin devices), the pre-installed AOSP Files app (com.android.documentsui) can still copy and paste folders into Android/data/ via a side-by-side split window.

Case Sensitivity: A Frequent Pitfall When Moving Windows Files to Android

Windows NTFS and FAT32 filesystems are case-insensitive: Data/Sound/Music.mp3 and data/sound/music.MP3 are treated as the same file on a Windows PC.

Android runs on the Linux kernel, where internal /data/ filesystems (ext4 and f2fs) are strictly case-sensitive unless casefolding is explicitly handled by the directory wrapper. When a C/C++ source port calls fopen("pak0.pak", "rb"), it may fail to find PAK0.PAK if your old CD-ROM or Windows install stored the filename in uppercase.

  • Quick Fix: Whenever a DroidPorts setup guide lists required filenames in lowercase (such as pak0.pak, pak1.pak, diabdat.mpq, or morrowind.ini), rename the files to exact lowercase before or after copying them to your Android device.
  • Verify Directory Depth: Avoid accidentally nesting an extra folder layer (such as /Morrowind/Morrowind/Data Files/ instead of /Morrowind/Data Files/) when unzipping an archive on your device.