<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc" -->

---
title: Running Zork On The Steam Controller | daily.dev
description: A hobbyist reverse-engineered the Steam Controller to run Zork on it entirely on the device's own processor. He wrote a Rust program emulating the Intel 8080...
canonical: https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Running Zork On The Steam Controller | daily.dev
og:description: A hobbyist reverse-engineered the Steam Controller to run Zork on it entirely on the device's own processor. He wrote a Rust program emulating the Intel 8080...
og:url: https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc
og:image: https://api.daily.dev/og/posts/qJiWROhYc.png
og:image:alt: Running Zork On The Steam Controller
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Running Zork On The Steam Controller

**[Hackaday](https://daily.dev/sources/hackaday)** · 2 min read · 1 upvotes · 0 comments

## Summary

A hobbyist reverse-engineered the Steam Controller to run Zork on it entirely on the device's own processor. He wrote a Rust program emulating the Intel 8080 CPU and CP/M operating system, ported it to run on the controller's internal chip, and streamed I/O and the Zork disk data over USB since the controller has no keyboard or screen. He used an undocumented Valve flashing tool to load custom firmware, bricking the controller a few times before succeeding, exploiting the fact that the firmware is unsigned and only checksum-verified.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://hackaday.com/2026/08/20/running-zork-on-the-steam-controller>

## Questions this post answers

### How did someone get Zork running directly on a Steam Controller?

A Rust program emulating an Intel 8080 CPU and CP/M was written and ported to run on the Steam Controller's internal processor. Since the controller has no keyboard or screen, input and output are streamed over USB. The CP/M disk lives in the controller itself, while the Zork disk data is streamed over USB as well.

_daily.dev surfaces oddball hardware hacks like this for developers who enjoy pushing devices beyond their intended use._

### How do you flash custom firmware onto a Steam Controller?

An undocumented tool bundled with Steam allows flashing firmware onto the Steam Controller. Valve includes the original firmware unsigned in the same folder, protected only by a simple CRC checksum rather than cryptographic signing, which makes it possible to load custom firmware, though experimenting with it risks bricking the device.

_daily.dev helps hardware tinkerers keep tabs on firmware reverse-engineering finds like this one._

## Similar posts on daily.dev

- [Who Had “New OS For The Z80” On Their 2026 Bingo Card?](https://daily.dev/posts/who-had-new-os-for-the-z80-on-their-2026-bingo-card--eb8lfemqw) · Hackaday · 0 upvotes · 0 comments
- [My Anti AI computer](https://daily.dev/posts/my-anti-ai-computer-vqs0dbnds) · Lobsters · 0 upvotes · 0 comments
- [I wanted my emulation PC to feel like a console, so I removed every reason to touch a keyboard](https://daily.dev/posts/i-wanted-my-emulation-pc-to-feel-like-a-console-so-i-removed-every-reason-to-touch-a-keyboard-ewbaqvcxb) · XDA Developers · 3 upvotes · 0 comments
- [Rust Helps Make A $1 Handheld Console](https://daily.dev/posts/rust-helps-make-a-1-handheld-console-3a8t7bb3c) · Hackaday · 0 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust), [#embedded](https://daily.dev/tags/embedded), [#firmware](https://daily.dev/tags/firmware), [#reverse-engineering](https://daily.dev/tags/reverse-engineering)

[View this post on daily.dev](https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Running Zork On The Steam Controller","url":"https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc"},"datePublished":"2026-08-21T05:15:50.312Z","dateModified":"2026-09-13T19:20:38.822Z","description":"A hobbyist reverse-engineered the Steam Controller to run Zork on it entirely on the device's own processor. He wrote a Rust program emulating the Intel 8080...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e208973438352819694a955bf1cce83?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9e208973438352819694a955bf1cce83?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hackaday","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hackaday","logo":"https://media.daily.dev/image/upload/s--JhDfhy70--/f_auto,q_auto/v1767541814/logos/hackaday","url":"https://daily.dev/sources/hackaday"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rust,embedded,firmware,reverse-engineering","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hackaday","item":"https://daily.dev/sources/hackaday"},{"@type":"ListItem","position":3,"name":"Running Zork On The Steam Controller"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/running-zork-on-the-steam-controller-qjiwrohyc#faq","mainEntity":[{"@type":"Question","name":"How did someone get Zork running directly on a Steam Controller?","acceptedAnswer":{"@type":"Answer","text":"A Rust program emulating an Intel 8080 CPU and CP/M was written and ported to run on the Steam Controller's internal processor. Since the controller has no keyboard or screen, input and output are streamed over USB. The CP/M disk lives in the controller itself, while the Zork disk data is streamed over USB as well. daily.dev surfaces oddball hardware hacks like this for developers who enjoy pushing devices beyond their intended use."}},{"@type":"Question","name":"How do you flash custom firmware onto a Steam Controller?","acceptedAnswer":{"@type":"Answer","text":"An undocumented tool bundled with Steam allows flashing firmware onto the Steam Controller. Valve includes the original firmware unsigned in the same folder, protected only by a simple CRC checksum rather than cryptographic signing, which makes it possible to load custom firmware, though experimenting with it risks bricking the device. daily.dev helps hardware tinkerers keep tabs on firmware reverse-engineering finds like this one."}}]}
```

