Skip to content

v1.0 — native Android (arm64-v8a) public build

Latest

Choose a tag to compare

@Hdmaniak Hdmaniak released this 05 Oct 19:32
· 1 commit to master since this release

The Dishwasher: Dead Samurai — native Android port v1.0

What this is. A native Android (arm64-v8a) port of The Dishwasher: Dead Samurai
(Xbox 360 XBLA), produced by source-level static/AOT recompilation of the game's managed
.NET/XNA IL against MonoGame and .NET for Android. It runs directly on the device's CPU/GPU —
it is not an emulator (no PowerPC emulation, no runtime JIT of console code).

No game content is included or distributed. This APK ships only the port's own code: the
Android platform layer, the re-authored shaders, and a SHA-256 ownership manifest. It contains
no game code, textures, audio, or data. You must own a legitimate copy of the game.

Tolerant import (updated in this build)

The first-run importer compares your files with the bundled manifest of 458 original files
(data/**, gfx/**.xnb, gfx/maps/maps.zdx, Resources/**, sfx/*.xwb/.xsb/.xgs), but it
does not block on mismatches:

  • Matched — used as-is.
  • Differed (different size or SHA-256, i.e. a different game revision) — warning only, and
    still imported.
    A different revision's asset is a valid asset.
  • Missing — warning only, that asset is simply not derived. For example, a missing
    .xwb/.xsb bank means that audio bank is absent (those sounds/music will be silent); the
    rest of the game still works.
  • Nothing usable — the only blocking case: if your selection contains no usable file,
    or is missing any of the core boot files the game needs to reach its menu
    (data/levels.zdx, gfx/text.xnb, gfx/Arials.xnb,
    Resources/dishX.Resources.Strings.resources), the import is refused with a clear message.

The import screen shows a concise summary (X matched · Y differed · Z missing) and tells you
whether the import is fine and continuing or which features may be missing. The full
per-file detail (all 458 entries) is written to the log
— adb logcat -s Dishwasher, lines
starting with [import] — not dumped on screen. Deriving never aborts on a single bad file: a
file that fails to decode is logged and skipped.

Ownership gating can still be re-enabled at build time with
-p:DishwasherStrictContent=true (PublicBuild.StrictContentValidation, default false).

Install & first run

  1. Install dishwasher-public-arm64-1.0.apk on an arm64-v8a Android device
    (Android 5.0 / API 21 or newer). You may need to allow installs from unknown sources.
  2. On first launch, point the import screen at your own copy:
    • the retail XBLA .zip — the app unpacks the STFS/LIVE package inside it, or
    • a .zip of extracted game files, or
    • a folder of extracted game files.
  3. The app compares every original file against the bundled manifest, then derives
    textures/fonts/audio on your device, using whatever it found. Nothing is downloaded.
  4. If you imported with an older public build, re-import. The importer skips already-derived
    files, so an in-place update keeps the old derived content — clear/regenerate it and import
    again to pick up this build's derived content.

Features

  • Full single-player (story, arcade, guitar solo, shop, comics).
  • Gamepad support (Bluetooth/USB, Xbox-style mapping), plus an optional on-screen touch
    pad with an editable layout
    (default OFF).
  • Rumble / vibration routing — OFF / PHONE / CONTROLLER / BOTH, set in the game's own options.
  • Adaptive widescreen (e.g. 2400×1080, uniform scaling — no stretch or crop).
  • Saves / autosave (on pause/stop, and on EXIT); a real EXIT that quits the app.
  • First run skips the storage-device screen and creates the save automatically.
  • In-game Android Settings (FPS lock: Unlimited/30/60/120; FPS counter).
  • LAN co-op / System Link between two phones over UDP.
  • On-device import of your own game data with a tolerant SHA-256 check and on-device
    texture/font/audio derivation (XMA → PCM/OGG).

Known limitations

  • A gamepad is recommended for gameplay; the on-screen touch pad is a fallback.
  • arm64-v8a only.
  • Controller vibration is first-class on Android 12+ (API ≥ 31). On Android 11 and older
    (API ≤ 30)
    it is per-controller / per-Bluetooth best-effort (currently Xbox One-family
    pads via the Bluetooth HID host); the phone vibrator always works.
  • Saves are app-private and are lost on uninstall / clear-data.
  • Long music tracks are decoded on first play (a short hitch); this is pre-existing.
  • Importing a copy that lacks the core boot files is (correctly) refused; importing a copy that
    lacks optional assets (e.g. some audio banks) succeeds with those features absent.

Download

  • dishwasher-public-arm64-1.0.apk
  • Size: 9,329,359 bytes (8.90 MiB)
  • SHA-256: 0c429301596d00f7ca11d600a9bb4caecea6448bd8eb21f28474aab872d01a40

Verify:

sha256sum -c dishwasher-public-arm64-1.0.apk.sha256

Legal

This project is not affiliated with, sponsored by, or endorsed by Microsoft, Xbox, or Ska
Studios
. The Dishwasher: Dead Samurai and all related assets are the property of their
respective owners. This release contains no game content and provides no way to obtain the
game. You are responsible for complying with the law where you live and for owning a legitimate
copy of the game.