Skip to content

Releases

0.15.19

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 05 Nov 04:03
efcf391

The game now tells you when a new version is out (#90, PR #132).

  • How it works: at start, the game asks GitHub once whether a newer release is out. This runs in the background, so a slow or missing connection never holds up the game. If a newer one is out, the title screen says so, and NEW VERSION 0.x.y appears right under START GAME. Pick it to open that release's page with the downloads.
  • What is sent: only that one request. Nothing about you or your game is sent, and nothing is downloaded or installed by itself. On Android the system always asks before an APK is installed, and the iOS build is installed by hand.
  • Turning it off: OPTIONS > EXTRAS > CHECK FOR UPDATES. It is on by default, and the change takes effect at the next start.

This version doesn't show the notice yet, since it is the latest. You'll first see it when the next release comes out.

Validation:

  • Windows: 0 warnings; all 146 CTest cases pass, including new tests for reading and comparing versions. A build asked GitHub for real and found nothing newer. With CHECK FOR UPDATES off, it made no request.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): 0 warnings; all 146 CTest cases pass; lockstep is bit-identical on arm64. The packaged macOS app asked GitHub for real (through the system's own networking) and found nothing newer than 0.15.19.
  • Linux: 0 warnings; all 146 CTest cases pass. The packaged build asked GitHub for real too.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: on an AYN Thor, a test build calling itself 0.15.17 asked GitHub for real. It showed NEW VERSION 0.15.18 under START GAME, and picking it opened the release page in the browser. Both 0.15.19 APKs install over 0.15.18 and run at full speed (60.0 and 59.9 fps; the game's sound was off for this run). The menu stays on the title screen.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 58 and the same signing certificate as 0.15.18, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.18

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 01 Nov 19:59
61a7020

This release fixes five bugs found in an internal review of the code. Each one was reproduced on the real game first, then checked again after the fix with the same steps.

  • SOUND on/off takes effect at once (#119, PR #125). OPTIONS → SOUND → SOUND used to wait for the next start: turned OFF, the game kept playing; started OFF and turned ON, it stayed silent. It now switches immediately. While SOUND is off the game goes on making its sound in the background without playing it, so music from mods picks up at the right place when SOUND comes back on.
  • Touch: a button no longer sticks after the menu (#120, PR #128). The bug: hold a direction, open the menu with another finger, lift the first finger while the menu is open. The direction stayed held after the menu closed. Lifting a finger now always lets go of its button.
  • Touch: TOUCH PAD OFF really turns the controls off (#124, PR #129). OFF used to hide the on-screen buttons only after the next touch, and the hidden buttons, the menu button included, still responded. They now disappear as soon as you leave the menu and ignore touches. ON now shows the controls at once, too.
  • A music mod file the game cannot play is skipped (#122, PR #126). An unusable file in Mods/Music (not a WAV, or ADPCM) made that piece silent every time. Such a file is now left out at start-up, with a line in the log saying why, and the game plays its own music for that piece.
  • First-time setup: the file dialog is handled safely (#123, PR #127). Browse's file dialog handed its answer back from another thread with no lock. If setup finished while the dialog was still open (a gamepad press, Enter, or a dropped file), the answer was written into memory that was already gone. It is now kept where both sides can safely reach it.

Not fixed yet: #121. Clicks in the first-time setup screen may land in the wrong place on a Retina Mac. It needs a high-density screen to reproduce, which I could not test on.

Validation:

  • Windows: 0 warnings; all 146 CTest cases pass.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): 0 warnings; all 146 CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: 0 warnings; all 146 CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.17 on an AYN Thor (Android 13) and run at full speed (59.9 fps; the game's sound was turned off for this run). The menu stays on the title screen. The two touch fixes were checked on the Thor with real two-finger touches, before and after.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 57 and the same signing certificate as 0.15.17, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.17

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 01 Nov 14:46
d85cff3

This release redoes the menu's small lines: the notes beside its entries and the hints along the foot of each page.

  • The game's own letters for notes and hints (PR #116). With MENU FONT set to GAME, the notes (LOOK UP, NOT USED BY THIS GAME, ...) and hints (UP/DOWN CHOOSE ...) were still drawn in a system-style font. They now use a small version of the game's own letters, made from the ROM's font by folding each pair of rows into one.
  • Notes fit instead of being cut short (PR #117).
    • Notes are at most half the size of the entries, so they read as captions.
    • A long note takes two close lines right after its entry. The value moves to its own line if that makes the room. Only on a very narrow screen, such as a phone held upright, does the note go below the entry.
    • A hint too long for one line takes two.
    • The marker for more rows above or below was a letter V. It is now an arrow on a small banner, as on the AWARDS pages, and tapping it scrolls.
    • The game's font gains [ and ], so CHEATS' "[Cheats]" note is drawn in the same letters as the rest.

Validation:

  • Windows: all 146 CTest cases pass. Screenshots at three window sizes (portrait 450x800, 800x450, 1280x720), all three MENU SIZEs, and five pages: no note or hint is cut short.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): all 146 CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all 146 CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.16 on an AYN Thor (Android 13) and run at full speed (59.5 to 59.8 fps). The menu stays on the title screen, and the hints show in the game's letters.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 56 and the same signing certificate as 0.15.16, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.16

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 01 Nov 05:43
3e53ab1

This release lets you bind the left and right triggers to the game's buttons. The request came from CaptainLibrary: some 6-button pads report their C and Z buttons as triggers, so they couldn't be used for jumping.

  • Triggers in CONTROLS (#113, PR #114). Some 6-button pads, such as the 8BitDo M30 and the Retro-Bit Mega Drive / Saturn pads, send C and Z as the right and left triggers, and their buttons can't be remapped. Before, the game only listened for buttons, so C and Z did nothing.
    • In CONTROLS, pick a gamepad page, choose a button such as C JUMP, and pull the trigger. The row then reads RIGHT TRIGGER or LEFT TRIGGER.
    • A trigger counts as pressed past half way, so resting a finger on it does nothing.
    • Fast-forward and rewind start on the triggers. When you give a trigger to a game button, it is taken off fast-forward or rewind, so one pull does one thing. FAST FORWARD PAD and the state and rewind pad choices skip inputs the game already uses.

Validation:

  • Windows: all 146 CTest cases pass, including new tests on an SDL virtual gamepad (pulling the triggers presses C and Z; light pressure doesn't) and on the binding page.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): all 146 CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all 146 CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.15 on an AYN Thor (Android 13) and run at full speed (59.8 fps). The menu stays on the title screen.
  • Not tried with a physical M30 or Retro-Bit pad; the trigger press is checked with SDL's virtual gamepad.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 55 and the same signing certificate as 0.15.15, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.15

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 31 Oct 07:34
0845011

This release lets you replace the music's drum samples with your own WAV files. The idea came from GamerG, who asked whether the drums could be played from cleaner recordings.

  • Drum sample mods (PR #110). The drums, cymbals and hits in the music are the 32X's PWM samples: 11 kHz, 8-bit recordings, which is why they sound dull next to the FM. You can now play WAV files in their place, one sample at a time:
    • Put 00.wav, 01.wav and so on in Mods/Samples, or in a mod pack's Samples folder. The numbers are the same as the PWM pads in the MUSIC PLAYER.
    • Each file plays at the moment the game strikes the sample, at the note's own volume and pan. It is brought to the level of the sample it replaces, so the mix stays balanced.
    • Samples the game plays lower from the same recording use the same file, slowed the same way.
    • chaotix_headless --dump-pwm-samples DIR writes the game's own samples as WAVs, so you can hear what each number is.
    • What each sample sounds like, and how it works: docs/SAMPLE_MODS.md.
    • Without files, nothing changes.

The original keyboard's samples haven't been identified, so no drum pack ships with the game. A test with the free CC0 FreePats Electric and Synthesizer Percussion kit plays fine.

Validation:

  • Round trip: the game's own samples, dumped and played back as files, match the original drums at 0.96-0.98 correlation, within 0.15 dB.
  • Windows: all CTest cases pass, including new tests for the sample table and the replacement.
  • Lockstep: all 33 sweep runs with random input are bit-identical. 2400 frames with a drum pack loaded are bit-identical too.
  • macOS (M1): all CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.14 on an AYN Thor (Android 13) and run at full speed. The menu stays on the title screen.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 54 and the same signing certificate as 0.15.14, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.14

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 30 Oct 19:31
2922747

This release adds the rest of the improvements from ToastedSquidBread's review: a livelier music player, a more polished menu, and achievements you have to earn.

  • Keyboards in the MUSIC PLAYER (#102, PR #103). Like the game's own SOUND TEST, the page now shows what each channel is playing as the song goes:
    • a keyboard for each of FM 1-6 (red) and PSG 1-3 (green), with the key being played lit and a level bar
    • a pad for each PWM drum sample, lit when struck
    • GAME'S SOUND TEST on the page opens the game's original SOUND TEST screen.
  • Menu polish (#96, PR #105):
    • The hint lines along the bottom of the pages ("Up/Down choose ...") are in pixel letters like the rest of the menu.
    • Pages fade in as they open, without slowing down your input.
    • The PLAYER and PARTNER cards show each character with the arm holding the ring, as the game draws them.
  • Achievements you have to earn (#95, PR #106).
    • 16 achievements are gone. They came just from playing: the first ring, entering each place, playing as each character, and the claw.

    • 6 new ones take some doing:

      award what
      WORLD TOUR clear a level in every attraction
      THE WHOLE TEAM clear a level as every leader
      NOBODY LEFT BEHIND clear a level with every partner
      SPEED DEMON clear a level in under 30 seconds
      RING HOARDER reach a goal with 100 rings
      CURTAIN CALL see the ending
    • The "every ..." ones build up over many sessions, and the AWARDS list shows how far you've got. That makes 28 achievements.

    • Achievements you already earned that were removed stay in your save file; they're just no longer listed.

Validation:

  • Windows: all CTest cases pass, including new tests for the keyboards, the achievement sets and the character cards.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): all CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.13 on an AYN Thor (Android 13) and run at full speed. The menu stays on the title screen.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 53 and the same signing certificate as 0.15.13, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.13

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 30 Oct 17:35
c47f7ee

This release fixes three things found in a video review of the port by ToastedSquidBread: two widescreen gaps and Knuckles' glide on a keyboard. Thank you for the report!

  • The HUD no longer jumps at the start of a level (#92, PR #97). With the HUD at the screen's edge (the default), SCORE, TIME and RINGS flew in, stopped at their 4:3 place, and jumped to the edge a moment later when the clock started. They now fly straight to the edge and stay there.
  • The way into the special stage fills the screen (#91, PR #98). After jumping into the giant ring, the white flash and the starfield before the special stage were 4:3 with black bars for about two thirds of a second. They are now widescreen, and lead straight into the widescreen stage.
  • Knuckles can turn round while gliding on a keyboard (#93, PR #99). Pressing left while still holding right sent both directions to the game, which a real controller can never do, and Knuckles dropped out of the glide. Now the direction pressed last wins until it is let go. This applies to every player and every device: keyboard, stick and d-pad.

Validation:

  • Windows: all CTest cases pass, including new tests for each fix.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): all CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.12 on an AYN Thor (Android 13) and run at full speed. The menu stays on the title screen.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 52 and the same signing certificate as 0.15.12, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.12

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 30 Oct 01:27
1d0d519

This release fixes the sound mix: the music is louder, and the 32X drums and samples come through as they should.

  • Sound mixed at PicoDrive's levels (PR #87). Players said the music sounded like it was missing some 32X channels. Nothing was missing, but the 32X's PWM channel (the drums and sampled sounds) was mixed too quietly against the FM synth, and the whole game was about 7 dB quieter than PicoDrive.
    • FM, PSG and PWM are now mixed at the same levels PicoDrive uses. Next to PicoDrive on the same ROM, the title music and BOTANIC BASE 1 are now within 0.3 dB, and the bass-drum band is within 1 dB. It was 9 dB short before.
    • The PSG noise channel is now as loud as a PSG tone at the same volume. Before, it was half as loud.
    • Replacement music from music mods keeps the same balance against the game's music, so the saved setting doesn't need changing.
  • No pop when a volume changes. Muting the music or moving a volume slider in OPTIONS > SOUND used to pop. Volume changes now fade in over about 40 ms.
  • Knuckles' Chaotix's own sound and timing are unchanged; only the final mix changed.

Validation:

  • Windows: all 139 CTest cases pass, including a new test that a volume change moves smoothly instead of jumping.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): all 139 CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all 139 Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.11 on an AYN Thor (Android 13) and run at full speed (59.7 and 59.9 fps in a level). The menu stays on the title screen.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 51 and the same signing certificate as 0.15.11, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.11

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 29 Oct 18:43
1c7da04

This release makes the game run faster, especially on phones, without changing how it plays.

  • Faster SH-2 processors (Issue #62, PR #84). The 32X's two SH-2 processors take about 28% less time per frame on an AYN Thor (32-bit), and about a third less on a desktop PC.
    • In a level, the game writes data hundreds of times a frame right next to some of its own program code. Each of those writes used to make the port re-check all of its translated code against the ROM. Now only code whose bytes actually changed is re-checked.
    • The SH-2's cache memory is accessed directly, a 32X fill is done in runs, and the timers no longer divide.
    • On the Thor's 32-bit build in a level, a frame now takes 2.14 ms instead of 2.40 ms. That is about the time PicoDrive's 64-bit build takes, and every frame is still drawn. The game plays exactly as before.

Validation:

  • Windows: all 139 CTest cases pass, including new tests for the SH-2 memory accesses and the per-function code-write counts.
  • Lockstep: all 33 sweep runs with random input are bit-identical. Machine state and picture hashes every 10 frames also match 0.15.10 in all 33 configurations plus the title and attract demo.
  • macOS (M1): all 139 CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all 139 Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.10 on an AYN Thor (Android 13) and run at full speed (59.8 fps). The menu stays on the title screen.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 50 and the same signing certificate as 0.15.10, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.

0.15.10

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 29 Oct 04:17
f2d1f94

This release fills the title screen on wide windows and makes the menu reachable by touch.

  • Widescreen title (Issue #77). On a wide window, the title screen's floor and horizon now run out to the sides instead of black bars. The game draws that floor wider than the screen; only black bars were hiding it. The girders, logo and characters are one picture made for 4:3, so they keep their size, with the floor and dark sky beside them. The SEGA logo and the opening stay 4:3.
  • Menu button on touch screens (Issue #72). The on-screen controls have a menu button (three bars, top left). It opens the same menu as Escape, with BACK TO TITLE, so LEVEL SELECT is a tap away on a phone. A phone's back button or gesture now opens and closes the menu too, instead of doing nothing.

Validation:

  • Windows: all 139 CTest cases pass, including new tests for the title's margins and the touch menu button.
  • Lockstep: all 33 sweep runs with random input are bit-identical.
  • macOS (M1): all 139 CTest cases pass; lockstep is bit-identical on arm64.
  • Linux: all 139 Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests.
  • Android: both APKs install over 0.15.9 on an AYN Thor (Android 13) and run at full speed (59.9 fps); the title fills the wide screen with the menu on it, and the touch menu button opens the menu.

Downloads: the Windows x64 zip, the Linux x64 tar.gz, the macOS arm64 zip, the iOS .ipa, and two Android APKs: arm64-v8a/x86_64 (the usual one) and armeabi-v7a (32-bit ARM). Both APKs use version code 49 and the same signing certificate as 0.15.9, so they update in place.

You must supply your own Knuckles' Chaotix (Japan, USA) ROM. No ROM image or game assets are included.