CTR-AP v0.1.1
CTR-AP v0.1.1 - fixes from the wild, DeathLink, one-lap cups
The first patch release, built almost entirely from player reports on v0.1.0. Thank you Bethany, Anezia, kabarakh, and Spark for the excellent bug reports.
📖 New here? Follow the setup guide.
Update both halves together: this client and the v0.1.1 ctr.apworld are a pair. Seeds generated with the new apworld need this client (they carry a newer settings format the old client does not know). Old v0.1.0 seeds keep working on this client unchanged.
Fixed
- The black screen freeze after finishing your goal with all 18 Sapphire Relics received. The credits now always return you to the hub in Archipelago seeds. (#2, #38)
- The rare crash when driving through a hub door while the Aku Aku hint for a newly opened area was playing. (#17, #37)
- Winning a Gem Cup entered from another hub no longer strands you outside a locked Gemstone Valley: the podium ceremony now plays in the hub you entered from. (#34, #36)
- The Purple Gem Cup check could fail to send if you had already received gem items from the multiworld. Gem cup wins now always send their check. (#35, #36)
- The pause screen gem display now lights exactly the gem colours you have received, instead of a colour-blind count. (#35, #36)
- Warp pad token requirements now show the actual required token colour and count. An "any colour" requirement cycles through all five colours. (#19, #20)
- The relic trial target time now starts at the highest tier you can still earn on that track and steps down live when the clock passes it, instead of always showing the Platinum time. (#21, #22)
- The Linux / Steam Deck build no longer crashes with "Illegal instruction" during the intro. (#3, #30)
- Debug numpad keys are disabled by default in release builds. Typing your port number with NumLock on can no longer arm test machinery. (#16, #18)
- Phantom race log lines during hub loads are gone. (#4, #25)
New
- DeathLink. Off by default. Two send modes:
mask_resetsends a death only on a full wipeout (fell off, eaten),any_hitalso sends on every hit that lands on you. Receiving a death always forces the full mask-carry reset. Adeathlink_amnestyoption sends one death per N eligible deaths for the high-cadence mode. (#6, #39, dowlle/ctr-archipelago-apworld#5) - One-lap cup races (a community idea, spotted in hypnoshark's Twitch chat). A quality-of-life YAML option: all cup races run a single lap, in adventure and arcade. Off by default. Bonus worth knowing: cup legs also award that track's position checks, so an early cup can hand you several extra locations. Logic does not rely on this yet; that lands in v0.2.0. (#7, #31, dowlle/ctr-archipelago-apworld#3)
- Received Wumpa Fruit is real fruit. Wumpa Fruit filler items now grant actual fruit to your kart at the next race's start (or live, mid-race). (#11, #26)
- Oxide's Final Challenge unlock rework. The unlock is now a mode (
sapphire_relics,gold_relics,platinum_relics,any_relic_type,total_relics) plus a relic count (1 to 18). The in-game door and the generator logic now agree in every mode. (#23, #32, dowlle/ctr-archipelago-apworld#2) - Your goal location no longer hides progression. When a location is your seed's goal, it is generated as filler-only, so nothing another player needs sits behind your final challenge. (#27, dowlle/ctr-archipelago-apworld#4)
- Out-of-date client banner. If a seed was generated with a newer apworld than this client understands, the hub shows a persistent red warning instead of quietly misbehaving. This protects every future upgrade. (#8, #32)
Breaking change for existing YAMLs
The old oxide_final_challenge_unlock: 18_gold_and_platinum_relics value is removed (it never worked as documented; that was the bug). A YAML carrying it fails generation with Archipelago's standard invalid-option error. Regenerate your YAML from the new template, or replace the value with one of the new modes. The default (18_sapphire_relics behaviour) is unchanged and old YAMLs using the default keep working.
What is in this release
ctr_native_ap.exe: the game executable with Archipelago support built in.ctr.apworld: the Archipelago world, for whoever generates the multiworld.extract_assets.py: the optional space-saving asset extractor.ap-config.example.txt: a documented template for your server settings (optional; the in-game OPTIONS → Connection screen is the recommended way).SETUP.md: step-by-step setup (the living guide, or as shipped with this release).
The ctr.apworld is also attached separately for multiworld hosts who only need the world file.
Known limitations
- NTSC-U (North American) discs only. PAL and Japanese discs are detected and refused.
- The disc image must be a raw MODE2/2352 dump (a
.cue/.bin, a raw.bin, or a.chd). A cooked 2048-byte.isodoes not carry the audio and video sector data the game needs. .chdimages require thechdmantool to be installed and on your PATH.- On reconnect the server replays your item history, so previously received Wumpa Fruit re-banks (capped at 10, cleared each race). Harmless, noted for transparency.
- The Linux / Steam Deck build is attached as an EXPERIMENTAL asset for testing: 32-bit binary, needs glibc 2.38 or newer (SteamOS is fine). Known rough edges on Linux: the intro video glitches, the announcer voice is silent, and the track fly-by intro does not load. Self-build instructions live in BUILDING.md.
What's next
The headline for v0.2.0 is the big one promised on release day: live position checks (earn checks for reaching and holding positions mid-race, including inside Gem Cups) as the foundation for progressive boost and character-stat item packs, with a proper difficulty dial on top. Also queued: Universal Tracker support, removing option-excluded locations from seeds entirely, and surface-comfort items. No dates promised, hobby project honesty applies.
Found a bug or have an idea? Open an issue.
Verify your download
ctr-archipelago-v0.1.1-windows-x86.zip
SHA-256: 5e9f629f9d1a2469682cef38e27b9dd86024ef2f1b59da61231bf88b91693816
ctr-archipelago-v0.1.1-linux-x86.tar.gz (experimental)
SHA-256: 70970a3581a7e65b6723a58ff8883392967fb354da672ae597df777ca21ff97d
Credits
- The CTR-tools CTR-ModSDK decompilation project, which this port is built on.
- Reverse engineering and Archipelago work by Icebound777 and Taor - the randomizer design this project carries forward.
- Bethany, Anezia, kabarakh, and Spark for the v0.1.0 field reports that shaped this release.
- PsyCross, for PlayStation hardware-abstraction code that parts of the native platform layer are derived from.
- thecodingbob, whose in-game config menu framework this fork's options menu is ported from.
- SDL3, for cross-platform windowing, input, timing, and audio.
- apclientpp, the Archipelago client library powering the in-process connection.
- Crash Team Racing is a trademark of its respective rights holders. This is an unofficial, fan-made project and is not affiliated with or endorsed by them.
AI disclosure
Parts of this project were developed with AI assistance. See the AI disclosure in the repository README for the honest, detailed version.