Zelda Js Sms banner
haroldo-ok haroldo-ok

Zelda Js Sms

Development community

Description

A W.I.P., faithful, playable vibe-port of Matthew-SA/zelda-js (a JavaScript clone of the NES classic The Legend of Zelda) to the Sega Master System, written in C with devkitSMS (sverx's SMSlib) and SDCC, following the sega-master-system-skill-for-claude workflow. Ported using Arena

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

Zelda-JS → Sega Master System port

A faithful, **playable** port of [Matthew-SA/zelda-js](https://github.com/Matthew-SA/zelda-js) (a JavaScript clone of the NES classic *The Legend of Zelda*) to the **Sega Master System**, written in C with **devkitSMS** (sverx's SMSlib) and **SDCC**, following the [sega-master-system-skill-for-claude](https://github.com/haroldo-ok/sega-master-system-skill-for-claude) workflow.

The ROM

`zelda-sms.sms` (112 KiB) — runs on real SMS hardware, a flash cart, or any SMS/Game Gear emulator (Emulicious, Fusion, etc.).

Controls

Action SMS pad
Move Link D-Pad
Swing sword Button 1
Start / restart START

What's ported

  • The complete overworld. The original game's full 16×8-screen Hyrule is present and explorable. The source 12288×4224 overworld art is downsampled (each NES 48 px "screen-tile" → one SMS 16×16 metatile of four 8×8 tiles), quantised to the SMS master palette, deduplicated (242 background tiles, 90 metatiles) and stored in ROM banks.
  • Per-tile collision derived directly from the original overworld-collision.png (walkable / tree-rock wall / water).
  • Link: 4-direction walk, walk animation, sword swing in each direction, hit knockback + invincibility blink.
  • Enemies (octorok-style): spawn on open ground (like the JS scanGrid/openSpaces), wander tile-to-tile, hurt Link, and die to the sword with a count of kills.
  • HUD: heart life bar (red full / grey empty) and a live minimap of the 16×8 screen grid with Link's position marked.
  • Screen transitions between every overworld screen, a title screen and a game-over screen with restart.

Architecture

The SMS has no framebuffer, a tile/sprite VDP (256×192, two 16-colour palettes, ≤64 sprites), and 8 KiB RAM — nothing like a canvas. The port keeps the clean game logic and rewrites the platform layer:

Zelda-JS (JS/Canvas) SMS port (C/devkitSMS)