Anne Jan Brouwer – home

Portals

For the Konsool

annejan.com

Portals starting up on a Konsool: the SynthEngine 3D and Graceloader screens, the title seen through a portal, then the menus, the stories and the settings. Music and sound effects, no speech.

A Portal-like puzzle game for the Konsool. Twenty test chambers, two portals, and GLaDOS watching. Then stories: packs of new chambers told from a desk between the rounds.

Ghost races against your best runs, and other people's. Lifts between the chambers. Cubes, buttons, turrets, faith plates, light bridges and energy pellets. A chamber editor on the badge itself. GLaDOS speaks, through SAM, the C64's Software Automatic Mouth.

Put it on your Konsool Stories Speedrun board

Put it on your Konsool

  1. Connect the Konsool to this computer with USB.
  2. On the Konsool, press the purple diamond: a USB icon shows top right. That is BadgeLink mode.
  3. Press Install and pick Tanmatsu in the list: that is your Konsool.

    Straight from the Konsool's own app repository, as its app store would: Portals, and Graceloader, the loader it runs under, if your Konsool does not have that version yet. It works in Chrome and Edge. On Linux the browser may only open the Konsool with badgelink's udev rule, 60-badgelink.rules, in /etc/udev/rules.d/.

    How it plays

    Shoot two holes in the white panels of a test chamber, one blue and one orange. Walk into one and come out of the other, keeping your speed: fall far enough into a floor portal and a wall portal flings you across the room. Then the chamber starts adding things.

    The player seen through a blue portal
    Portals. White panels only. Look through one at the other and you see yourself.
    A cube on a floor button
    Cubes and buttons. Carry a cube, stand on it, send it through a portal. A door stays open while all its buttons are down.
    A blue fizzler grill across a room
    Grills and glass. A grill destroys the cube you carry and shuts your portals. Glass stops a shot, not your eyes.
    A moving platform over goo
    Platforms and faith plates. A platform keeps its own schedule. A faith plate throws you, or a cube, over the goo.
    A reflection cube in a red laser beam
    Lasers. Turn a beam with a reflection cube, or send it through a portal, into a catcher or a relay. Laser fields burn.
    A light bridge over goo
    Light bridges. Hard light you can walk on. Put a portal in its way and it comes out of the other.
    Blue gel under an orange portal
    Gel. Blue bounces you 3.7 m up, orange runs you at 11 m/s, white makes any wall take a portal. It drips through portals too.
    An orange portal by a pellet receiver
    Energy pellets. A glowing ball that bounces off everything, through portals, into its receiver. Or into you.
    Crushers in a corridor
    Crushers. They slam down one after the other, every three seconds. Keep to the beat.
    A sphere on a white floor
    Spheres. Carried like a cube, but it rolls when you walk into it. It has a cup somewhere.
    A turret in a test chamber
    Turrets. One sees you for 0.6 s and fires. Drop something on it, or carry it off.
    An excursion funnel across a canyon
    Excursion funnels. A tractor beam that carries you and your cubes along it, through portals too.
    The twenty test chambers
    1. The gap: get across a pit of goo.
    2. The ledge: up onto a ledge no jump reaches.
    3. The fling: fall 10 m into a floor portal and fly out of a wall.
    4. The button: a cube on a button holds a door open.
    5. Delivery: the cube is up on a ledge, the button down below.
    6. Faith plate: a plate throws you over the goo.
    7. The grill: send the cube across through a portal instead.
    8. Through the glass: you can see the exit, not shoot at it. Look over it.
    9. The ferry: ride a moving platform across the goo.
    10. Two buttons: a door that needs both at once.
    11. Against the clock: three seconds of door, four seconds of walk.
    12. Redirection: a laser, a catcher out of its line, and a cube to turn the beam.
    13. Hard light: a bridge pointing the wrong way.
    14. Repulsion: blue gel in the wrong place, a ledge too high.
    15. Catch: an energy pellet, and a receiver out of its line.
    16. Relay: a platform that waits for a laser, and a laser field on the ledge you hoped to use.
    17. Gauntlet: a corridor under three crushers.
    18. Edgeless: a sphere, and a cup behind glass.
    19. Sentry: a turret guards the exit. It cannot see straight up.
    20. Excursion: a tractor beam, and a ledge across the goo, high up.

    Behind the title screen the chambers play themselves. With Lifts on, each chamber ends in a lift that carries you up through the chamber and down into the next. GLaDOS reads every chamber's line out loud, in SAM's voice, and the turrets talk back.

    On the Konsool's keyboard

    W A S Dwalk
    cursor keyslook
    Spacejump
    Q / Efire the blue / orange portal
    Fpick up or put down
    Ggyroscope: look round by turning the badge
    Rrestart the chamber
    Escthe menu: chambers, settings, editor, recordings

    Every key but Esc can be changed under Esc → Controls. Settings has the rest: portal depth (how many portals deep you see through a portal), quarter resolution, music and menu music, sound, GLaDOS's voice, lifts, ghost races, frame times, screen and keyboard light, and Portal LEDs, which light the badge's LEDs blue and orange while your portals are open.

    Make your own chambers

    The chamber editor: a top-down map of Redirection, with a list of brushes
    The chamber editor on Redirection, a layer at a time from above. Drawn from the game's own drawing code.

    Esc → Chamber editor opens the chamber you are in, as a copy. It shows one layer at a time from above: Q and E go down and up, the arrows move, a key picks a brush, Space paints (hold it to paint a line) and B fills a box. Every piece above has a brush: white panels, goo, doors and their buttons, droppers, lasers, bridges, gel, pellets, crushers, turrets, funnels.

    P play-tests it on the spot; F saves it to /sd/portals/chambers/, and Chamber select lists it after the twenty. If it has a mistake, a door that is not a box for instance, the editor says what and does not save.

    A chamber is a plain text file, a picture of each layer in letters, so you can also write one on a computer:

    name: 11  Two rooms
    hint: The button opens the door.
    size: 8 5 9
    facing: north
    
    layer 1
    ########
    #......#
    #......#
    #......#
    ###aa###
    #......#
    #.1..C.#
    #...S..#
    ########

    One layer of five: # metal, . air, a a door, 1 its button, C a cube, S where you start. The layer under it is the floor: white panels (W) and the exit (E).

    Every letter, and the rest of the format

    Race yourself

    The ferry chamber with a race timer in the corner
    The tool-assisted run on The ferry, 21.40 s into all twenty.

    With Ghost races on, every attempt is recorded. Beat your best and that run becomes the chamber's ghost, racing beside you next time. Put a friend's ghosts in /sd/portals/ghosts/rivals/ and race theirs.

    Record a run saves what you press, frame by frame, to the SD card; Watch a recording plays it back and times every chamber. The tool-assisted run, attached to every release, finishes all twenty chambers in about 40 s; on a badge it has done it in 39.58 s.

    Then put it on the speedrun board, straight from your Konsool over USB. The board replays every run with the game's own code, so the times are the replay's: real runs and tool-assisted ones apart, for the whole game, each story and each chamber. Something went wrong in a run? Send the recording as a bug report from the same page, and it can be played back exactly as it went.

    To the speedrun board

    Stories

    After the twenty test chambers: stories. Each is a pack of new chambers with its own music, and some are told from a desk between the rounds. They go on the SD card; put them on your Konsool from scene.rs/stories, the same way as Portals itself.

    A round of Human in the loop

    Human in the loop

    Aperture's test generator needs a human to break its drafts. You are the human. From a DOS desk: GLaDOS's flawed chambers to cheese, a debugger for the broken ones, mail, a birthday cake that keeps moving, and a choice: the cake or the queue. From a story brief by Renze of Nicolai Electronics.

    A desk story · eight chambers · office music

    A round of Off to Hackfest

    Off to Hackfest

    Hackfest is on Saturday, at Sickhouse in Enschede. A few geeky chores first, then the way there: by train, by bike or by van.

    A desk story · three ways there · chiptune

    A chamber of After hours

    After hours

    The tests are over. The testing is not. Chambers for after the twenty: the last train home, the cleaners' paint, a parcel to post, a two-way funnel, a laser to bend, bowling night, pellets in the dark, turrets on the night shift, a deadline under the presses, then a production floor, a canyon and a spire.

    Fourteen chambers · synthwave

    Told from a desk

    A desk story starts at a terminal, not in a chamber. Read the files, the mail and the calendar; type GLADOS (or GO) for the next round. In Human in the loop the rounds are GLaDOS's drafts: solving a draft the way she meant teaches her nothing, so you cheese it, she patches the flaw, and you play the patched draft again until it is final. A broken draft opens in a debugger, with a few changes to spend; play-test it and reach the exit.

    The terminal: rounds logged, mail, the calendar
    The desk: flaws logged, mail in, the cake moved again.
    The debugger: a top-down map with a fizzler taken out
    The debugger: one change of three made.

    Put a story on your Konsool Write your own

    Under the hood

    Portals runs on the Konsool's ESP32-P4 under Graceloader, on SynthEngine 3D, a software renderer. The engine has no stencil buffer, so the view through a portal is drawn first, clipped to the portal's edges, and the room after it, with holes where the portals are; nested views go up to three deep.

    GLaDOS's voice is SAM, the C64's Software Automatic Mouth from 1982. The music is made as it plays, a tune for each story, and it follows the game: up when a turret spots you, dull when you die, muffled in a lift. Every chamber has a scripted solution, and every build has a player on the PC solve all of them first: a change that breaks one does not build.

    Made with Claude: Portals and this page were written with an AI, and played on a real badge.