Skip to content

v1.5

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Oct 02:36
· 2 commits to main since this release

v1.5, or: it turns out 71 pixels either side is a lot of places to hide a bug

The port plays A Link to the Past. As of this release it plays it properly in widescreen, instead of in a 4:3 box with the camera politely pretending nothing had changed. It also lets you move the buttons without editing an ini file, gives the second item on X a switch and a box of its own, and adds a small mercy for anyone who has ever lost an afternoon to the digging game. Your saves, settings, rumble and MSU pack are all where you left them.

Widescreen that actually looks at the screen

Previous releases drew a wider picture and left everything else alone. The camera still parked itself where a 256 pixel screen wanted it, so the extra space was mostly a window onto whatever happened to be lying around in video memory.

Now the camera knows. Outdoors it stops a margin in from an area's edge so there's real map out at the sides. Indoors it does the same, and because a dungeon room is exactly as wide as the SNES tilemap, that meant holding two rooms at once: the room you're in and the one you're walking into, drawn straight from the game's own room buffers while it loads. Walking between rooms is one continuous picture now, margins and all, rather than a scroll that ends with the sides snapping open.

Everything that only ever had to work in the middle 256 pixels then queued up to complain:

  • The HUD spreads to both edges, and stays spread through the places it used to snap back: beating a boss, opening either map, the flute menu, dying, and the warp to the pyramid.
  • The death screen is widescreen, red flash, GAME OVER and all.
  • The credits are widescreen, all the way through the tour.
  • The file select, copy, erase and name screens keep their backdrop going past the old edges, with the boxes exactly where they were.
  • The lantern draws its cone of light into the margins instead of showing you three more copies of it, and it knows to go out when you walk up the stairs into a lit room.
  • The Triforce room no longer greets the saviour of Hyrule with mirrored wall corners and no curtains.
  • Zora's Domain, the Master Sword's grove and the other special areas get the same camera as everywhere else.
  • Sprites wake up only as far as the margins really reach. Before this, standing in the armos statue half of a double width room in Ganon's Tower woke the Lanmolas in the other half, who started the fight without you, in a room you hadn't entered, out of sight.
  • Garnishes, which is the game's word for little trailing effects, stop being binned the moment they cross the old screen edge. The fire snake in the dark rooms has all four of its flames again instead of crawling around with one.
  • The magical boomerang flies to the edge of the screen you actually have, rather than turning back with a third of the picture still ahead of it.

There is a Widescreen Camera switch in the settings if you want the old framing back.

Buttons go where you tell them

Remapping used to mean opening zelda3.ini, finding [KeyMap], counting to seven in a comma separated list and hoping the seventh thing was A.

There's a Controls screen now, both on the start menu and in the game (Select, Settings, then R until you reach the Power Glove). It shows a SNES pad in line art with the button you're on lit up, and every button's keyboard key and controller button side by side. Press A on one, then press anything: whichever you press, key or pad button, is what changes. Taking a button another one already has swaps the two, keys that already do something else are refused, and there's a reset to defaults for when it all goes wrong.

The pad is drawn in code, pixel by pixel, because this repo ships none of Nintendo's art and the game has no picture of its own controller to borrow. You are, after all, holding it.

The second item on X

It used to be a stowaway inside "Switch Items With L/R", so you couldn't have one without the other. It has its own switch now, Second Item On X, and a box in the HUD, because assigning an item to X and then having to remember what it was is not a feature, it's a memory test. At 4:3 the box sits under the item box; in widescreen it sits beside it and the counters shuffle over.

The canes needed a word about this. A Link to the Past was written by people who assumed there would only ever be one item button, which was fair, since there was only one. So Byrna's spark checked every frame whether it was still the Y item and killed itself on frame one if not, the cane swing took its colour from whatever was on Y (put the two canes on two buttons and they swapped identities), and the Magic Cape only drained magic while it was on Y. They all ask about the button that actually started them now.

A pity timer for the digging game

The heart piece at the digging game is a 1 in 32 chance a dig, and only from the 25th dig of a round. That reads fine on paper and ruins an afternoon in practice.

Digging Game Pity, off by default in Features, hands it over outright after 250 digs without one. The count is a plain variable in the port: nothing of it reaches your save file, which stays exactly the 8K a cartridge holds, so saves still work on real hardware. Once you've dug the piece up the game stops offering it, which it should always have done.

Smaller things that were wrong for a long time

  • The Magic Hammer came out of its chest one room to the left, off screen, along with the door debris and some water effects. They all worked out where a new room was by assuming the camera was parked at the old room's edge.
  • Silver arrows left the tip of the old brown one poking out beside them in the HUD, but only if you had 1000 rupees or more. Four digits push the counter row across; the silver arrow hadn't been told.
  • The splash you make landing in deep water is three sprites, and the middle one has been flying 512 pixels to the left of where it belongs for as long as anyone has been looking. It is back where it should be, which means a lot of people are about to see it for the first time.
  • A fade during dungeon transitions could run past the end of its own palette table and cycle every colour on screen forever, which was briefly spectacular.

Getting it running

  1. Download the game for your system, and the tools if you want them.
  2. macOS (Apple Silicon, macOS 11+): unzip and drag the app to Applications, then run xattr -dr com.apple.quarantine /Applications/alttp-zig.app (and the same for zelda3-tools.app) once. Still not notarized. Still haven't paid Apple $99.
  3. Linux (x86_64, glibc 2.35+): chmod +x the AppImage and run it. If it complains about FUSE, install libfuse2 or fuse3, or add --appimage-extract-and-run.
  4. Windows (x86_64): unzip anywhere and run zelda3.exe or zelda3-tools.exe. SmartScreen will still clutch its pearls: "More info", then "Run anyway".
  5. Give the game your US ROM and press Play. For randomizer seeds, generate one on alttpr.com from the Japanese 1.0 ROM (MD5 03a63945398191337e896e5771f77173) and drop it on the Randomizer page. No game data is included, as ever.