{"id":35707040,"url":"https://github.com/rh1tech/murmprince","last_synced_at":"2026-01-16T11:47:59.971Z","repository":{"id":330302412,"uuid":"1120564358","full_name":"rh1tech/murmprince","owner":"rh1tech","description":"Prince of Persia (RP2350 Port)","archived":false,"fork":false,"pushed_at":"2026-01-06T01:14:44.000Z","size":54530,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T20:40:18.524Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rh1tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-21T13:42:04.000Z","updated_at":"2026-01-06T01:13:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rh1tech/murmprince","commit_stats":null,"previous_names":["rh1tech/murmprince"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/rh1tech/murmprince","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rh1tech%2Fmurmprince","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rh1tech%2Fmurmprince/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rh1tech%2Fmurmprince/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rh1tech%2Fmurmprince/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rh1tech","download_url":"https://codeload.github.com/rh1tech/murmprince/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rh1tech%2Fmurmprince/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478376,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-06T03:18:35.241Z","updated_at":"2026-01-16T11:47:59.965Z","avatar_url":"https://github.com/rh1tech.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MurmPrince\n\nPrince of Persia for Raspberry Pi Pico 2 (RP2350) with HDMI output, SD card, and PS/2 keyboard.\n\nBased on [SDLPoP](https://github.com/NagyD/SDLPoP) — an open-source port of Prince of Persia.\n\n## Supported Boards\n\nThis firmware is designed for the following RP2350-based boards with integrated HDMI, SD card, PS/2, and PSRAM:\n\n- **[Murmulator](https://murmulator.ru)** — A compact retro-computing platform based on RP Pico 2, designed for emulators and classic games.\n- **[FRANK](https://rh1.tech/projects/frank?area=about)** — A versatile development board based on RP Pico 2, HDMI output, and extensive I/O options.\n\nBoth boards provide all necessary peripherals out of the box—no additional wiring required.\n\n## Features\n\n- Native 320×200 HDMI video output via PIO\n- 8MB QSPI PSRAM support for game data\n- SD card support for game resources and saved games\n- PS/2 and USB keyboard input\n- I2S audio output\n\n## Hardware Requirements\n\n- **Raspberry Pi Pico 2** (RP2350) or compatible board\n- **8MB QSPI PSRAM** (mandatory!)\n- **HDMI connector** (directly connected via resistors, no HDMI encoder needed)\n- **SD card module** (SPI mode)\n- **PS/2 or USB keyboard**\n- **I2S DAC module** (e.g., TDA1387) for audio output\n\n### PSRAM Options\n\nMurmPrince requires 8MB PSRAM to run. You can obtain PSRAM-equipped hardware in several ways:\n\n1. **Solder a PSRAM chip** on top of the Flash chip on a Pico 2 clone (SOP-8 flash chips are only available on clones, not the original Pico 2)\n2. **Build a [Nyx 2](https://rh1.tech/projects/nyx?area=nyx2)** — a DIY RP2350 board with integrated PSRAM\n3. **Purchase a [Pimoroni Pico Plus 2](https://shop.pimoroni.com/products/pimoroni-pico-plus-2?variant=42092668289107)** — a ready-made Pico 2 with 8MB PSRAM\n\n## Board Configurations\n\nTwo GPIO layouts are supported: **M1** and **M2**. The PSRAM pin is auto-detected based on chip package:\n- **RP2350B**: GPIO47 (both M1 and M2)\n- **RP2350A**: GPIO19 (M1) or GPIO8 (M2)\n\n### HDMI (via 270Ω resistors)\n| Signal | M1 GPIO | M2 GPIO |\n|--------|---------|---------|\n| CLK-   | 6       | 12      |\n| CLK+   | 7       | 13      |\n| D0-    | 8       | 14      |\n| D0+    | 9       | 15      |\n| D1-    | 10      | 16      |\n| D1+    | 11      | 17      |\n| D2-    | 12      | 18      |\n| D2+    | 13      | 19      |\n\n### SD Card (SPI mode)\n| Signal  | M1 GPIO | M2 GPIO |\n|---------|---------|---------|\n| CLK     | 2       | 6       |\n| CMD     | 3       | 7       |\n| DAT0    | 4       | 4       |\n| DAT3/CS | 5       | 5       |\n\n### PS/2 Keyboard\n| Signal | M1 GPIO | M2 GPIO |\n|--------|---------|---------|\n| CLK    | 0       | 2       |\n| DATA   | 1       | 3       |\n\n### I2S Audio\n| Signal | M1 GPIO | M2 GPIO |\n|--------|---------|---------|\n| DATA   | 26      | 9       |\n| BCLK   | 27      | 10      |\n| LRCLK  | 28      | 11      |\n\n## Building\n\n### Prerequisites\n\n1. Install the [Raspberry Pi Pico SDK](https://github.com/raspberrypi/pico-sdk) (version 2.0+)\n2. Set environment variable: `export PICO_SDK_PATH=/path/to/pico-sdk`\n3. Install ARM GCC toolchain\n\n### Build Steps\n\n```bash\n# Clone the repository with submodules\ngit clone --recursive https://github.com/rh1tech/murmprince.git\ncd murmprince\n\n# Or if already cloned, initialize submodules\ngit submodule update --init --recursive\n\n# Build using the build script (recommended)\n./build.sh                          # Build M1 @ 378 MHz (default)\n./build.sh --board M2               # Build for M2 layout\n./build.sh --board M1 --cpu 504     # Build M1 @ 504 MHz\n./build.sh clean --board M2         # Clean rebuild for M2\n\n# Or build manually with CMake\nmkdir build \u0026\u0026 cd build\ncmake -DBOARD_VARIANT=M1 -DCPU_SPEED=378 -DPSRAM_SPEED=133 ..\nmake -j$(nproc)\n```\n\n### Build Options\n\n| Option | Description |\n|--------|-------------|\n| `--board M1` or `-b M1` | Use M1 GPIO layout (default) |\n| `--board M2` or `-b M2` | Use M2 GPIO layout |\n| `--cpu 252\\|378\\|504` | CPU speed in MHz (default: 378) |\n| `--psram 100\\|133\\|166` | PSRAM speed in MHz (auto-selected) |\n| `clean` | Delete build directory and rebuild |\n\nSpeed presets:\n- 252 MHz CPU → 100 MHz PSRAM (no overclock)\n- 378 MHz CPU → 133 MHz PSRAM (medium overclock)\n- 504 MHz CPU → 166 MHz PSRAM (max overclock)\n\n### Release Builds\n\nTo build all 6 variants (M1/M2 × 3 speeds) with version numbering:\n\n```bash\n./release.sh\n```\n\nThis creates versioned UF2 files in the `release/` directory:\n- `murmprince_m1_252_100_X_XX.uf2`\n- `murmprince_m1_378_133_X_XX.uf2`\n- `murmprince_m1_504_166_X_XX.uf2`\n- `murmprince_m2_252_100_X_XX.uf2`\n- `murmprince_m2_378_133_X_XX.uf2`\n- `murmprince_m2_504_166_X_XX.uf2`\n\n### Flashing\n\n```bash\n# With device in BOOTSEL mode:\npicotool load build-make/murmprince.uf2\n\n# Or with device running:\npicotool load -f build-make/murmprince.uf2\n\n# Or use the flash script:\n./flash.sh\n```\n\n## SD Card Setup\n\n1. Format an SD card as FAT32\n2. Download [prince.zip](https://github.com/rh1tech/murmprince/raw/main/sdcard/prince.zip) and extract it\n3. Copy the `prince` folder to the root of your SD card\n\n### Upgrading from Version 1.00\n\nWhen upgrading from version 1.00, copy the `prince/midi_cache` directory from the new archive to your SD card's `prince` folder.\n\n**Note:** The MIDI cache contains pre-rendered audio for all MIDI music tracks (~62 MB). If the cache files are missing or outdated, they will be regenerated automatically during gameplay. Regeneration takes additional time during game loading.\n\n## Controls\n\n- **Arrow keys**: Move/Run/Climb\n- **Shift**: Walk carefully / Pick up items\n- **Up Arrow**: Jump (while running) / Climb up\n- **Down Arrow**: Crouch / Climb down\n- **Space**: Show remaining time\n- **Escape**: Pause / Menu\n- **Ctrl+A**: Restart level\n- **Ctrl+R**: Quickload\n- **Ctrl+Q**: Quit\n\n### Title Screen\n\n- **Alt+F1..F12**: Start at level 1-12\n- **Alt+Shift+F1**: Start at level 13\n- **Alt+Shift+F2**: Start at level 14\n\n### Cheat Mode\n\n- **Alt+Esc**: Toggle cheat mode on/off\n\nWhen cheat mode is enabled:\n- **Shift+L**: Skip to next level\n- **K**: Kill current guard\n- **R**: Resurrect kid\n- **Shift+T**: Add max hit point (big potion)\n- **Shift+S**: Restore hit point (small potion)\n- **Shift+W**: Feather fall (slow falling)\n- **Shift+I**: Flip screen upside down\n- **Shift+B**: Toggle blind mode\n- **+/-** (numpad): Add/subtract time\n- **H/J/U/N**: View room left/right/up/down\n- **Ctrl+B**: Return view to kid's room\n- **C**: Show current room info\n- **Shift+C**: Show adjacent room info\n\n## License\n\nGNU General Public License v3. See [LICENSE](LICENSE) for details.\n\nThis project is based on:\n- [SDLPoP](https://github.com/NagyD/SDLPoP) by David Nagy — Open-source port of Prince of Persia\n\n## Author\n\nMikhail Matveev \u003c\u003cxtreme@rh1.tech\u003e\u003e\n\n## Acknowledgments\n\n- Jordan Mechner for the original Prince of Persia\n- David Nagy for the SDLPoP open-source port\n- The Raspberry Pi foundation for the RP2350 and Pico SDK\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frh1tech%2Fmurmprince","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frh1tech%2Fmurmprince","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frh1tech%2Fmurmprince/lists"}