• v0.9.3 b98657e17f

    v0.9.3 Stable

    joe released this 2026-08-23 07:09:41 +01:00 | 24 commits to main since this release

    A release about being able to see what the game is telling you. Balloons behave the way the
    arcade's do rather than the way its source appeared to say, mines are bombs, and four of the
    five things the playfield says in words — the song, the difficulty, the score, the judgement
    — turned out to be set on grounds that could not carry them.

    Fixed

    • The song, its difficulty and the score are set on plates. They were small text laid
      straight onto the header band, competing with a drifting wave pattern for the same pixels
      — the playfield was the only screen in the game not putting a plate under a word that has
      to be read over a pattern. All three now sit on one, in the dark slate the roll counter
      already used rather than the song picker's brown, which belongs against the menus' warm
      ground and reads as mud on cyan. The difficulty wears its own colour, the same one its
      card wore in the picker. A title too long for the room is cut with an ellipsis rather than
      run under the score.

    • The lead-in call-out moved into the lane. "get ready" was dim grey text set above the
      lane, in the band the gauge lives in — the one place nobody is looking while they wait for
      the first note. It is now in the lane, at nearly half its height, cream over an ink
      outline like every other word in the game, and it fades out over the last third of a
      second instead of vanishing at zero.

    • The judgement word is readable now. GOOD, OK, BAD and MISS were set flat, alone among
      the words on the playfield, and placed where the reference places them — which works for
      the reference, whose gauge is in a corner, and not for us, whose gauge runs the width of
      that same band. The word was being drawn inside the gauge and its cells swallowed it. It
      is two thirds larger, outlined like everything else in the game, and dropped far enough to
      straddle the top of the lane, which is the darkest ground on the screen and the best thing
      to read a light word against. MISS is lighter as well: at #905050 it measured 2.9
      against its own outline where the other three measure 5.3, 12.1 and 13.4.

    • A letter shows beside the wheel while the song list is being crossed at speed. Holding
      a direction long enough to reach the accelerated repeat puts a row past every 35 ms, which
      is faster than a title can be read; the letter of the row the wheel is on now sits in the
      margin beside it and fades away when the scrolling stops. A single press never shows it —
      at that speed the bars say where you are and a letter over them would be noise.

    • --frame-log <file> records where every frame's time went — audio refill, our own
      update, issuing the drawing, and handing the frame over — one row per frame, written when
      the song ends. A frames-per-second number cannot describe a stutter; this can say which
      third of the frame it was in, which is usually the whole question. Off unless asked for.

    • Two things drawn every frame that did not need to be. A title too long for its plate
      was re-shortened a character at a time, sixty measurements a frame on this library's
      longest title; it halves the interval now and takes seven. A mine's fuse was drawn in
      twelve straight pieces, fifty draw calls a bomb on a chart with 360 of them; eight pieces
      is where it stops reading as a curve. Together they were costing more than everything else
      the playfield draws.

    • Mines are drawn as bombs. They were a grey disc, which is the one thing a note the
      player must not hit cannot afford to be — half a second on screen is not long enough to
      read a note by its colour alone. The reference has always drawn a bomb with a lit fuse
      (Graphics/5_Game/Mine.png, in every stock skin), so ours does too: a near-black body
      measured off that sprite, the collar, the fuse's S traced against the sprite's own body
      radius, and the spark at its tip. The body keeps our note's rings rather than the sprite's
      flat black — our lane is #222, and a black ball on it is a hole.

    • A balloon grows through six stages rather than five, opening at its smallest and
      bursting at its widest whatever its target.
      OpenTaiko loads six frames per skin and
      draws five of them: its threshold array is declared five long and its loop runs j < 5,
      so the widest frame every stock skin ships is never reached. Its ladder also opens part of
      the way up when the target is smaller than the frame count — a three-hit balloon starts at
      frame 3, looking like one somebody already got to — and lets the first frame swallow the
      remainder of an uneven division, so an eleven-hit balloon sits at its smallest for six of
      its eleven hits. Ours divides instead: even across the target, ends pinned, and frames
      skipped rather than omitted when there are fewer hits than frames. The sizes and colours are measured off Open-World
      Memories' own sprites, against the note drawn into them — 0.91 to 2.15 note radii, deep
      orange to near-white. That skin duplicates its second and third frames, so one of the six
      steps stands still; the numbers are copied as they are rather than smoothed.

    • Balloons hold at the hit zone, and inflate instead of deflating. They were drawn as a
      long bar scrolling past like a drumroll, with a disc at the judge ring that started wide
      and shrank as it was hit. Both are backwards. A balloon has no bar: from its head until
      its end the note holds at the hit zone, and only when the span runs out does it let go and
      leave with its tail. And it grows — the reference compares five thresholds against the
      hits still needed, not the hits taken, so it opens small and deep orange and is at its
      widest and palest through the last fifth before it bursts. It is now drawn as its sprites
      are: the note, a neck, and a balloon swelling away to the right of it — and it is there
      from the moment the note stops at the hit zone, not from the first hit — its count with
      it, since a count that is a target is worth reading before you start rather than after.
      The reference waits for a hit for both, which reads as the note vanishing on arrival and
      something else appearing in its place.

    • A drumroll's hits fly to the soul gauge like every other hit. They were the one
      struck note that went nowhere: not being judged, they got no burst, no judgement and no
      combo, so the flight was the only ordinary feedback left to them — and it was missing.
      At sixteen hits a second the effect was that the drum appeared to stop answering for the
      length of the roll. The flier is coloured by the surface struck and sized by the roll, as
      the reference sends it, and it flashes the gauge when it lands like any other. Balloons
      are deliberately left out: they answer a hit by deflating, and only the pop flies.

    Downloads