Skip to content

0.5.0

Choose a tag to compare

@YuutaTsubasa YuutaTsubasa released this 22 Oct 15:24
· 68 commits to main since this release

This release makes character mods practical. With 0.4.9's sprite replacement, a modder can now give a character new looks, new colours and new handling, for example turning Mighty into someone else entirely.

  • Character mods (Mods/Characters/<name>.ini): one file per character (mighty, knuckles, charmy, vector, bomb, heavy, espio).

    • [Palette] gives the character's 18 colours new values, as #RRGGBB or raw 32X colours. Espio's shimmer has its own [Cycle] sets. Colours change only the picture: fades, the per-colour priority over the backgrounds, and both player and partner follow.
    • [Stats] changes the character's handling by name: acceleration, speed_cap, deceleration, gravity, jump, jump_release, roll_friction, spin dash, glide, Vector's air dash, Mighty's wall cling and wall jump, tether reach and more (20 fields). These change the game, and take effect the next time it starts. They are data, so the game stays on its recompiled code.

    Guide, with a Sonic-style example: docs/CHARACTER_MODS.md. The research behind it: docs/CHARACTERS.md.

  • Sprite sheets: OPTIONS > EXTRAS > EXPORT SPRITES writes every frame of each character to Mods/Textures/Sheets, without playing.

    • Each sprite bank becomes one image, 32x_<bank>.png, with its frames side by side in a grid and lined up on their hotspots, plus 32x_<bank>.txt describing the layout.
    • Edit a sheet, put it and its .txt in Mods/Textures, and the frames you changed are drawn instead. Unedited frames are left to the game, so an unchanged sheet costs nothing.
    • A frame's own 32x_<bank>_<frame>.png still wins over its cell.
  • TIME ATTACK names from the ROM: the character choices now read their names from the game's own table. ROM hacks that rename characters, or fill the unused slot, show up correctly.

  • Fix: frames after an empty slot in a character's sprite table were named by hash instead of bank and frame (Mighty, Charmy, Bomb, Heavy). They now get proper names. Replacements named by hash still work.

Limits:

  • Character colours apply in levels and the lobby. The select screen, results screen, title and special stages keep the game's colours.
  • Stats need a restart.
  • Editing a frame of a graphic the game changes as it runs freezes that frame.

Validation:

  • Windows: all 43 CTest cases pass, including the new character_mods and sprite_sheets tests. They show that:
    • an identity character file or an unchanged sheet gives identical pictures with lockstep holding;
    • a recolour changes only that character's pixels;
    • doubled acceleration exactly doubles the speed ramp, with the 68K still native;
    • a recoloured sheet changes only its character.
  • Lockstep: the 33 lockstep runs with random input are bit-identical. So is a combined run with a character file (colours and stats) and an edited sheet active, with the 68K 100% native.
  • Speed: a palette override costs nothing measurable.
  • Linux: all 40 Linux CTest cases pass.
  • Packages: the packaged Windows and Linux builds pass the startup tests, and the packaged Windows build loads character mods.
  • Android: the APKs have not been tested on a device for this release.

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

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