Repository navigation
Releases: esotericode/Smooth64
Release list
Smooth64 — The Expanse
Smooth64 — The Expanse
A huge open world to test size in, on an engine with no arbitrary limits whose collision cost no longer grows with the world.
Play
Download Smooth64-Browser.zip, extract it, and open Smooth64-Play.html.
Or download the HTML file directly. Both work offline, with no setup or ROM. Choose Roam the Expanse on the welcome screen, or The Expanse under Menu → Choose a world. Sound and music start after your first click, tap, or key press (a browser rule).
What's new
The Expanse is a fourth world, built to find out whether big levels work:
- Rolling ground 240,000 units across, in 38,848 triangles. The engine used to stop at 65,534 units and 4,096 triangles.
- Hills, a hollow, and a mountain 14,000 units high with a snowy top.
- Over 500 crates, stacks and stone blocks to run into and climb.
- A landmark tower with a coloured cap at every travel point, tall enough to see from far away.
- Coin trails from the middle out to each rim, 156 coins in all.
- Eight travel points in Menu → Travel points: the Crossroads, the Crate Yard, the Mountain Top, the four rims and the Far Corner, about 153,000 units from the middle.
- Sheer cliffs at the rims. Jump off and you fall into the void and come back to your beacon.
The engine has no arbitrary limits (these changes came with this release too):
- A world holds as many triangles as memory allows (it was 4,096), and coordinates reach ±536,870,912 (they stopped at ±32,767).
- There is no invisible ceiling or missing floor far above or below: the "nothing here" heights sit at ∓1.1 billion.
- Two 32-bit overflows in the vendored collision code are fixed. A single floor 64,000 units across used to vanish or turn into a ceiling.
Collision cost no longer grows with the world. The core keeps its triangles in a grid, as the original game did, so each check looks only at the triangles nearby. A tick in the Expanse takes about 12 µs instead of 3.6 ms; the other worlds tick about 14 times faster.
Movement is unchanged. Old and new builds give identical state bytes and sounds on every tick of random play in all four worlds (118,800 ticks for the grid) and among thousands of random walls, floors and ceilings (50,400 ticks), plus 67,500 ticks for the lifted limits.
Verification
All 15 native and 93 Node tests pass. tests/expanse.test.mjs shows every travel point spawns exactly on its pad and the floor is the drawn ground everywhere. It also shows crates and towers stop runs from every side, and that a run and jump at the Far Corner match the same move in the middle tick for tick. A jump off a rim falls into the void and returns you to a beacon. Native and WASM builds agree byte for byte far out. The engine tests check that 40,000 triangles tick less than ten times slower than 2 (the old scan was about 860 times slower). They also check that walls at every offset from the grid's cells stop a run exactly where they should. The browser check visits the Expanse and travels to the Far Corner. This is automated verification plus rendered screenshots, not a human play session.
Controls: WASD move · Space jump · Shift crouch · J punch/dive · drag orbit · R checkpoint · P pause.
Smooth64 — Controller menus
Smooth64 — Controller menus
Every menu now works from a gamepad, coins sound gentler, and the far peaks in Hoarfrost Heights stop flickering.
Play
Download Smooth64-Browser.zip, extract it, and open Smooth64-Play.html.
Or download the HTML file directly. Both work offline, with no setup or ROM. Sound and music start after your first click, tap, or key press (a browser rule).
What's new
- Menus from a gamepad. On the welcome screen, in the pause menu, the move guide and the star screen:
- the D-pad or left stick moves between choices, and repeats like an arrow key while held;
- A selects, B goes back (it closes the move guide first, then the menu), and Start opens or closes the menu;
- left or right sets a slider, and A flips a switch;
- long pages scroll a step at a time as you move, so the move guide can be read on the way down;
- an orange ring shows where you are; it steps aside as soon as you use the mouse, touch or keyboard.
- A gentler coin. The bright arcade ding is replaced by two soft mallet notes a fifth apart, generated in code. It rings around 520 Hz instead of 3 kHz and plays 5 dB quieter, so a hundred coins in a row stay pleasant. The star jingle's closing sparkle uses the same chime.
- Steady far peaks. In Hoarfrost Heights the distant mountains' snow caps sat right on their rock, which the depth buffer cannot separate that far away, so their tops shimmered. Each is now a rock base and a snow cap that meet at one ring. The frozen falls' glint, the hut's windows and painted titles are held steady too.
Verification
All 15 native and 83 Node tests pass. New tests cover the gamepad's menu input (presses, repeats, held buttons, Start), how focus picks the next control, and the coin chime's length, pitch and level. The browser check now plays through the menus with a mocked gamepad alone: choosing a world, changing settings and sliders, scrolling the move guide, travelling to a checkpoint and resuming. Narrow-lens renders of the distant peaks confirmed the flicker is gone. This is automated verification, not a session with a physical controller.
Controls: WASD move · Space jump · Shift crouch · J punch/dive · drag orbit · R checkpoint · P pause · gamepad: left stick, A, X/B, triggers, Start.
Smooth64 — Hoarfrost Heights
Smooth64 — Hoarfrost Heights
A second full level: climb a mountain of ice, from a camp on a frozen lake to the summit of the Hoarfrost Horn, and slide home.
Play
Download Smooth64-Browser.zip, extract it, and open Smooth64-Play.html.
Or download the HTML file directly. Both work offline, with no setup or ROM. Choose Hoarfrost Heights on the welcome screen. Sound and music start after your first click, tap, or key press (a browser rule).
What's new
A high valley floats on a sea of cloud under the Hoarfrost Horn. The level is about five times Cinder Caldera's footprint and three times its height. The route runs through eight stretches:
- Mirror Lake: hop across snow floes over frostbite water, which bites like lava. A tilted ice floe slides you straight into a jump, and an ice runway you cannot stop on ends in a long jump.
- Pinewood Drifts: deep snow slows your run; jump and grab out of each terrace. A fallen, iced-over pine spans a ravine, snapped in two.
- The Glacier: crevasses, a snow bridge, and an ice chute. Jump before its lip to clear the Great Crevasse.
- The Icefall: a 950-unit wall-kick chimney and a grippy rock rib beside an ice chute that cannot be climbed, up to the Icefall Star on the Shoulder, halfway up the Horn.
- The Frozen Falls: ledges along the Horn's sheer face, wall kicks between a frozen waterfall and a serac, and a long hang from the icicles across the curtain.
- Gale Ridge: paths cut into the face, in a wind that always blows south. Stand still and it blows you off, so keep moving and jump each gap from its very edge.
- The Cornice and the Summit: rock steps up the west ridge, a hang under a snow cornice above the slick crest, a wall-kick chimney between two towers, and the Aurora Star on the summit cairn. The clock stops here.
- The Avalanche Run: the way home, an ice luge from the summit round the Horn and over the lake into camp. Jump from the slide at each of its two lips.
Also in the level:
- Surfaces you can read. Blue ice will not hold you: you slide down any slope of it, and a full run skids ~1,200 units. Landing a jump and letting go of the stick stops you dead, even on ice. Bright deep snow caps your run, and grey rock grips even at 45°.
- Eight Frost Shards, each behind an optional challenge: the watchtower, the Lone Floe, the Great Pine, a crevasse ledge, a serac needle, an ice pillar under the icicles, the Weathervane across a windy gulf, and the Horn's Tip. Find all eight and the Polar Star shines on an ice spire on the Mirror Isle.
- Nine checkpoint beacons and 100 coins.
- The level sounds like ice. Footsteps crunch on snow and ring on ice, the wind gusts on Gale Ridge, and frostbite water splashes and fizzes instead of sizzling.
- Twilight, snowfall and an aurora, drawn in real time: a sea of cloud, a frozen waterfall that glints, blown snow over the ridge, prayer flags, and a flag on the summit.
Verification
All 15 native and 80 Node tests pass. Every leg of the route, all eight shards and the Polar Star are proven reachable by driving the unchanged movement core with controller inputs. Negative checks show where a move is required: the wall kicks up the falls, the chimney and the Horn's Tip; the hangs across the falls and along the cornice; the jumps at the luge's lips; and the long jump home from the Weathervane. Native and WASM builds agree byte-for-byte from all nine checkpoints. A scan dropped the explorer over a grid covering the whole level: every fall settles somewhere with a way out, ends in a ledge grab, or drops into the clouds.
The browser check covers the level's HUD totals and objectives and keeps each world's progress separate. The level was also reviewed through rendered screenshots. This is automated verification, not a human play session.
Controls: WASD move · Space jump · Shift crouch · J punch/dive · drag orbit · R checkpoint · P pause.
Smooth64 — Original music
Smooth64 — Original music
Four original tracks now play quietly in the background, in the spirit of late-'90s console soundtracks.
Play
Download Smooth64-Browser.zip, extract it, and open Smooth64-Play.html.
Or download the HTML file directly. Both work offline, with no setup or ROM. Sound and music start after your first click, tap, or key press (a browser rule).
What's new
- Four tracks, each with its own key, tempo and instruments:
- Basalt Tide: electric piano, strings and vibraphone, drifting through major ninths.
- Hush of the Spire: a harp and music-box lullaby in three.
- Lantern Trail: marimba, soft brushes and an ocarina on an easy, swung walk.
- Skyline Drift: a choir pad, a deep bass and a few bells.
- One track blends into the next. Tracks shuffle so that all four play before any repeats, never the same one twice in a row. Each opens and closes sparsely and ends on a ringing chord. The next track starts under that chord, in whichever nearby key shares the most notes with it.
- Quiet by design. At the default 50% the music sits well under the sound effects. Menus muffle it, the shard and star jingles briefly duck it, and it pauses while the tab is hidden. Menu → Settings → Music sets the volume; 0% turns it off.
- Performed live, not recorded. The scores are note data, played by a small Web Audio synthesizer: FM electric piano, mallets, bells, an ocarina, string and choir pads, basses and brushes, in a hall reverb. The whole soundtrack adds about 20 KB to the download.
- This replaces the v0.5.0 soundtrack. If you turned its music off, it stays off.
Music sources
Everything is original: composed for Smooth64 and synthesized in the browser. It uses no samples, recordings, third-party music, or Nintendo audio. The sound effects are still Kenney's CC0 samples; see THIRD_PARTY.md. docs/SOUNDTRACK.md describes the tracks and how to edit and render them.
Verification
All 15 native and 61 Node tests pass. New tests cover:
- the scores: every melody fills its form, no clashing melody notes, every note in range, and sparse starts and ends;
- the shuffle order, and hand-overs with no silence;
- scheduling ahead without late bursts;
- pausing, ducking, stopping and restarting, volume and muting;
- keeping a v0.5.0 mute.
The browser check confirms that the music starts with play, stops at 0%, keeps its setting across reloads, and plays from the offline file with no network requests or console errors. Offline renders put every track within 0.7 LU of the others. At the default volume a track averages about −34 LUFS, with footsteps around −26. These are measurements, not a listening test on speakers.
Smooth64 — Sound
Smooth64 — Sound
The explorer can be heard now: footsteps, jumps, flips, landings, slides, lava, and every pickup. Gamepad sticks also get a proper dead zone.
Play
Download Smooth64-Browser.zip, extract it, and open Smooth64-Play.html.
Or download the HTML file directly. Both work offline, with no setup or ROM. Sound starts after your first click, tap, or key press (a browser rule).
What's new
- Sound effects, timed by the movement code itself. The original actions already say when to play a sound: a footstep on specific animation frames, one jump sound per takeoff, a whoosh on each flip's spin frames, a landing thud, a scrape for as long as a slide or skid lasts, a burn for as long as the lava boost. The core now reports those requests each tick (
s64_sounds), and the game voices them. Nothing is guessed from the picture. - What you'll hear: footsteps that soften at a walk and tiptoe, a push-off and a little "hup" on every jump (rising for double and triple jumps), spin whooshes on backflips and somersaults, soft landings and heavy ground-pound impacts, the scrape of braking, turning and sliding, a wall tap you can time wall kicks to and a kick when you leave the wall, gloves catching ledges and clinking along the grates, punches and dives, bonks, a yelp and crackle in lava, and a whistle on long falls.
- Pickups ring out: coin chimes, an arpeggio for Ember Shards, a checkpoint whoosh as the beacon lights, a fanfare for each star, and a secret jingle when the Crimson Star appears.
- The stride matches the sound. Walking, running, and tiptoeing now plant a heel on exactly the frames the original plays its footstep, so every step sound lands on a footfall.
- Menu → Settings → Sound effects sets the volume (0 mutes). It's saved with your other settings.
- Gamepad stick dead zone. Both sticks now use a 15% scaled radial dead zone (the SM64 PC port's default), so a drifting stick no longer walks the explorer, turns the camera, starts the timer, or skips the intro shot. Travel beyond the zone is rescaled, so the first movement past it is still the gentlest tiptoe and full tilt still runs. Menu → Settings → Stick dead zone adjusts it from 5% to 35% if your controller needs more.
Sound sources
Every sample is CC0 (public domain, no attribution required) from Kenney: his official Godot starter kits (3D Platformer, FPS, Racing, City Builder) and the Kenney set bundled with the Python Arcade library. The two continuous textures (the slide scrape and the lava crackle) are generated in code. No Nintendo audio is used. See THIRD_PARTY.md and tools/build_sounds.py for the exact files, revisions, and checksums.
Verification
All 15 native and 52 Node tests pass. The native/WASM parity check now compares the sound requests as well as all 80 state bytes on every tick. New tests cover how sound IDs map to cues, the sprite's sync marker, sustained and released loops, volume and muting, footstep variety, stick drift and range, and heel strikes on the footstep frames. The browser check confirms footsteps and the coin chime play during real gameplay, that volume and dead zone settings persist, and that the offline file plays sound with no network requests or console errors.
Smooth64 — Game polish
Smooth64 — Game polish
A cleaner game experience, with the same rules everywhere.
Play
Download Smooth64-Browser.zip, extract it, and open Smooth64-Play.html.
Or download the HTML file directly. Both work offline, with no setup or ROM.
What's new
- A clean default HUD shows power and collectibles. The pause menu holds objectives, checkpoints, world selection, controls, and settings.
- Technical readouts and testing controls are behind Menu → Settings → Developer tools, off by default. Movement hints and the on-screen timer have their own saved settings.
- Cinder Caldera and the playground share coins, healing, lava damage, checkpoint beacons, collection effects, and recovery rules.
- The playground now has 34 healing coins across eleven destinations, including a connected Lava crossing practice area. All original courses remain available.
- Each world's collectibles and checkpoints survive switching worlds and retries. Starting one world over leaves the other world's progress intact. Reloading starts fresh runs.
- Ledge transitions keep gloves planted, and running/decelerating feet stay above the floor as the body moves.
- Menus clear queued movement, gamepad Start opens the menu, touch cancellation releases controls, and collecting a star immediately pauses the game.
The full Cinder Caldera adventure is included: two stars, eight Ember Shards, and five checkpoint beacons.
Verification
All 14 native and 44 Node tests pass, including 7,452 native/WASM state comparisons and traversal checks for the level and new lava practice route. Desktop, touch, settings, world switching, and offline browser checks pass in Chromium with no JavaScript or WebGL errors. The movement core and WASM are unchanged from v0.3.0.
Smooth64 — Cinder Caldera
Smooth64 — Cinder Caldera
Download Smooth64-Browser.zip, extract it, and double-click Smooth64-Play.html. Or download the HTML file directly and open it in Edge, Chrome, or Firefox. No installation or server needed. Choose Cinder Caldera on the welcome screen.
A full level
Climb a volcanic crater to the Ember Star on top of the central Spire. The route circles the crater through six sections:
-
Ashfall Landing: the start, and a broken gate you can wall-kick up.
-
Basalt Steps: columns shrink as the gaps over the lava widen, finishing with a long jump.
-
The Forge: a ledge-grab rampart and a step that is too high to jump, so you need a backflip.
-
The Chimney: 1,160 units of consecutive wall kicks.
-
Chain Bridge: hang from grates between chain posts.
-
Obsidian Ridge: narrow beams and blades, then a very slippery chute.
-
The Spire: a spiral of narrowing ledges, a wall-kick corridor, a backflip step, and a jump for the summit rim.
-
Lava is the core's own
SURFACE_BURNING. A touch costs three wedges of health and launches you upward. Coins heal one wedge, like the original. -
Eight Ember Shards, each behind an optional challenge. Finding all eight lights the Crimson Star on a lava altar that takes a long jump to reach.
-
Five checkpoint beacons. Touch one to make it your respawn point; R returns you there. Falling at zero health does too.
-
A power meter, coin/shard/star counts, a run timer with best time, a skippable intro camera, and a star-get summary.
Every leg of the main route and every shard is proven reachable in the test suite by driving the real movement core with controller inputs.
Movement presentation
- Changes of action now crossfade over 0.12 s of display time instead of snapping in a single tick.
- The side somersault turns back around through its landing instead of snapping 180°.
- The slide kick is now a low, feet-first slide rather than a standing kick.
- The ground pound lands on the seat that the core's recovery starts from.
- Letting go of the stick at walking speed keeps the walk cycle.
- Fall-damage knockbacks topple over instead of running.
- Rollouts somersault.
- Single and double jumps use distinct poses that blend continuously through the apex. There are also new lava-boost and hard-knockback poses.
- Dust on takeoff and landing, sparks on wall kicks, a ground-pound shockwave, skid dust, and fire on lava boosts.
- The camera rises to look down narrow shafts instead of pressing against the explorer's back.
The movement actions are unchanged. The host adds one function, s64_heal, which queues the heal counter the way the original coin interaction does. Native and WASM builds agree byte-for-byte on 1,500 more ticks in the caldera, including heals.
Controls: WASD move · Space jump · Shift crouch · J punch/dive · drag orbit · R checkpoint · P pause.
Smooth64 — Hands, feet & new heights
Smooth64 — Hands, feet & new heights
Download Smooth64-Browser.zip, extract it, and double-click Smooth64-Play.html. Or download the HTML file directly and open it in Edge, Chrome, or Firefox. No installation or server needed.
- Orb gloves and little shoes, with custom poses for running, punches, kicks, flips, long jumps, dives, slides, crouching, landings, ceiling hangs, and ledge climbs.
- Ledge hangs now put the body below the lip and keep the hands anchored. The camera follows the visible character. A live arrow shows the camera-relative direction to climb.
- Four connected new areas: Ledge garden, Wall-kick tower, Skyline circuit, and Canopy walk. The original six areas are intact.
- 15 collectible sparks, route counts, and a reset-sparks button. Respawning keeps collected sparks for the current session.
Ledge controls: release the stick to hang; push toward the platform to climb after a brief pause; press A / Space for a quick climb. Pull away or press Z / Shift to drop. The reported all-directions-drop behavior did not reproduce in the regression scenarios; the original controls are retained.
The two development branches are integrated: animation metadata and secondary poses, geometry batching, local shadows, and the canopy route join the anchored ledge rig and compact courses. The large expanse layout remains in branch history.
The C movement core and compiled WASM are unchanged. The update passed 13 native behavioral tests and 15 Node tests, including 5,592 ticks of native/WASM state comparison, ledge cases at four camera orientations, a complete wall-tower ascent, and hand-anchor checks. Physical gamepad and visual browser QA remain unverified for this edition in the development environment.
Controls: WASD move · Space jump · Shift crouch · J punch/dive · drag orbit · R respawn · P pause. Choose areas 07–10 in the left destination panel for the new courses.
Smooth64 — double-click to play
Download Smooth64-Browser.zip, extract it, and double-click Smooth64-Play.html. Click Enter playground. No installation, Python, terminal, compiler, internet connection, or ROM is needed to play. WASD moves, Space jumps, Shift crouches, J attacks. The source and fidelity notes are in the repository. Complete N64 equivalence is not yet verified.