Skip to content

Releases: dowlle/ctr-native-ap

CTR Archipelago v0.1.4.1 (stability pre-release)

Choose a tag to compare

@dowlle dowlle released this 24 Jul 22:51
f22eea3

CTR Archipelago v0.1.4.1 (pre-release)

Pre-release / stability fix. This build adds crash protections for an in-race crash family reported since v0.1.4 shipped, plus new performance telemetry to help me chase reported stutters. It is marked pre-release because the crash fixes target rare paths that are hard to trigger on demand: the guards are code-reviewed, build-verified, and mirror a retail-verified sibling handler, but the exact averted-crash moments have not all been exercised in-game. If v0.1.4 is working fine for you, staying on it is a reasonable choice. If you have hit an in-race crash or feel stutters, this build is for you.

Fixed

  • Crash when an explosion catches a dropped TNT or Nitro sitting on a crate spot (reported twice within a day of the v0.1.4 release, both on Oxide Station, via the in-client crash reporter). The handler now checks the crate link the same way the game's own sibling handler does. (#136, part of the wider guard sweep tracked in #137)

  • Instance creation during thread-pool exhaustion now fails safely instead of crashing one frame later, and logs an [AP POOL] line so reports can tell me it happened. (#136)

  • Two more guards from the same family: the warped-burst weapon explosion and the spider shadow no longer crash if the instance pool is exhausted at their spawn moment. This exact guard content ran a full online multiplayer evening session without issues before release. (#139)

New: performance telemetry (please send me your stutters)

The client now watches its own frame timing and writes rate-limited [AP PERF] lines into ctr-ap.log when a frame stalls, attributing the stall to the network layer, the seed verifier, or the game engine itself. This costs nothing in normal play and exists purely so stutter reports become diagnosable.

If you feel stutters, lag spikes, or short hangs: please tell me. The most useful report is: your ctr-ap.log (or a support-bundle.bat archive), roughly when it happened, whether you were online in a multiworld or playing alone, and what was going on at that moment (race start, lots of weapons, a music or track change, connecting). Post in the Discord thread or open a GitHub issue.

Thanks to the players who sent crash bundles. The reporter upgrade from v0.1.4 is what made both crashes symbolizable, so if you crash, please do run support-bundle.bat and share the archive.

Compatibility

  • Client-only release. The v0.1.4 ctr.apworld stays current: keep your existing apworld, YAML, seeds, and saves. The guards are purely additive and change nothing in normal play.
  • Windows-only. Linux users stay on v0.1.4 for now; these fixes ship for Linux in the next full release.

Checksums

  • ctr-archipelago-v0.1.4.1-windows-x86.zip: df09310833cea540119c08d41159d595a4544ae8f5802f1bad7a0fe23c1a7728

CTR-AP v0.1.4 - the smoother-ride patch

Choose a tag to compare

@dowlle dowlle released this 23 Jul 08:54
2f762e1

⚠️ Known crash in this build, fixed in v0.1.4.1. A weapon blast that catches a mine sitting on a crate spot can crash the game mid-race. It has been reported in Oxide Station, Roo's Tubes and Polar Pass, and it turns up most in busy, weapon-heavy races. The fix is in the v0.1.4.1 pre-release. That build is Windows only and ships the client on its own, so keep the ctr.apworld and Crash.Team.Racing.yaml from this release, they have not changed. There is no Linux or Steam Deck build of v0.1.4.1 yet; a complete release with one will follow in 0.1.5. Details and reports in #137.

The quality-of-life train. The long-standing Gemstone Valley pause crash is fixed for real, boss outros play when they should, traps last long enough to matter, the first launch walks you through setup instead of erroring, and the game finally has proper credits. Option texts got cut in half so picking settings no longer means scrolling.

Thanks MarioSpore, PerihLeaff and wheezingteapot for the reports that shaped this cycle, and everyone in the Discord who keeps breaking things in useful ways.

Downloads

  • Windows: ctr-archipelago-v0.1.4-windows-x86.zip (contains everything)
  • Steam Deck / Linux: ctr-archipelago-v0.1.4-linux-x86.tar.gz
  • Hosts and players: ctr.apworld and Crash.Team.Racing.yaml are attached separately
  • Debugging a crash? ctr_native_ap.debug holds the Linux debug symbols, matched to this exact build

📖 Setup guide (as shipped). Update the client and the apworld together, they are a pair.

Fixed

  • The Gemstone Valley pause crash is fixed. A hub with every pad open sat two instances under an internal cap, and opening the pause menu pushed it over. The cap is raised in hubs and a full pool now skips an icon instead of crashing. If you ever see a missing pause icon, that is the safety net doing its job, please report it. (#56)
  • Boss outros play on a first win even when you already hold Keys. The old check read your received Keys as "boss already beaten" and skipped the cutscene, starting from the last boss backward. First wins now play the outro, repeat wins skip it. (#111)
  • Arenas-off seeds can no longer ask for Purple CTR Tokens anywhere. Verified with a 600-seed census across both unlock modes and all density settings, zero violations, and confirmed in game. Reported by MarioSpore. (#118)
  • Crashes that unwind through std::terminate or abort now reach the crash reporter instead of exiting silently. (#110)
  • Crash reports name the faulting module and thread context, so a ctr-ap-crash.txt from the wild is actually diagnosable. (#119)
  • Linux distros without 32-bit audio support get a clear, actionable message instead of silent audio failure, and the setup guide documents the fix (installing the 32-bit ALSA-PipeWire bridge). Reported by wheezingteapot. (#113)
  • An out-of-memory condition during a level load now exits with a crash report naming the exact shortfall instead of freezing the game.
  • In-race crashes when a crate explosion spawns with the instance pool full are fixed. On a busy track a TNT or Nitro blast could hit an internal instance limit and take the game down. The explosion effect is now guarded and the blast still deals its damage, so play continues. If you ever see an explosion with no fireball, that is the safety net doing its job, please report it. This is also the likely cause of the Mystery Caves race crashes. (#57, #135)

New

  • First launch sets you up instead of erroring out. The game creates the assets folder, tells you exactly where your disc image goes, accepts any .bin filename, and rejects non-disc files with a clear message. (#114)
  • Paste works in the connection screen. Ctrl+V a server address, slot or password straight into the fields; multiline and oversized pastes are handled safely. (#115)
  • Traps last 20 seconds (was 4 to 6), long enough to actually sabotage a race. The boost trap no longer wipes your banked reserves, and the no-brakes trap now pushes you to true USF speed. (#116)
  • The game has credits now. Finishing your goal rolls an AP section (maintainer, randomizer design lineage, the CTR-ModSDK decompilation contributors, ported mods, libraries) ahead of the vanilla roll. (#117)
  • Option texts cut in half. Every option in the template YAML and on the options page now reads as player documentation: what it does, what the values mean, one warning if it matters. The heaviest option dropped from 1,232 characters to under 600. (apworld #19)
  • New defaults: two_stage_density: full and one_lap_cups: on. Default seeds get the densest two-stage gating and faster cups. Both stay fully configurable, and existing YAMLs that set these options are unaffected.
  • Support bundles now carry your seed's full gate tables. The parsed pad, boss and cup requirements are written to ctr-ap.log at connect, so a bug report shows exactly how your seed gates everything.

Known issues

  • Mid-race crash when a blast catches a mine on a crate spot (#137). Confirmed on this build in Oxide Station and Roo's Tubes, with a similar report in Polar Pass. Fixed in the v0.1.4.1 pre-release, see the note at the top. If you hit it, ctr-ap-crash.txt next to the game is the thing to attach.
  • Generation can rarely fail in a multiworld (#75). Fails loudly at generation, reroll. Solo unaffected.
  • Mystery Caves race crash (#57): a likely root cause was found and fixed this cycle (the crate-explosion crash under Fixed). If a Mystery Caves crash still happens on 0.1.4, please attach ctr-ap-crash.txt so it can be confirmed.
  • Post-boss cutscene softlock (#51) did not reproduce in release testing, including a deliberate first-win outro with Keys held under the new #111 handling. One clean run is not proof, so it stays listed.
  • A burst of trap items received together fires them all at once rather than queueing them. Harmless but chaotic; a stagger is on the list.
  • The map screen can briefly show a cup as closed after its requirement arrives until the items apply on the next transition. The pads themselves open immediately.

Testing

Verified in game on the release builds: the pause menu across all five hubs with every pad open (the exact #56 crash scenario, measured two instances from the old cap), first-win and repeat boss outros with Keys held, all five trap types with the duration, boost-reserve and USF checks, connection-screen paste abuse, the assets first-run flow including wrong-file rejection, a full Oxide goal run with the credits roll, and an arenas-off pad sweep confirming no Purple requirements. Logic passed the full fuzz matrix on the exact shipped apworld, 19,500 generations across 12 profiles, zero failures, plus the 600-seed arenas-off census. The connect-time seed verifier passed the 13-profile sweep on the release binary, all thirteen seed OK (solo: definitive), including the community-report regression seed regenerated exactly. The crate-explosion crash fix (#57, #135) landed after the matrix; it is native only and additive, so the gates above still hold, and normal play was confirmed with a Hot Air Skyway crate smoke on the release binary.

Next

The 0.2.0 design campaign: the character phase, item packs, and the adaptive podium rung budget, with solo/offline play (#89) behind those. Custom track support is being explored in the open (#133). No dates, hobby project honesty applies.


Checksums

  • zip 2d96718e2b31a3cb33554a833203b895a03fea62ae53688fa18ff1b9e0352343
  • tar.gz 650545efd4f4a1de65ec930d94f8066aace62e0ec2298f2e309a567a0e86155e
  • apworld 896d270e1405edfe76c5b5a97631069d1c624b9266c12266087d508c4cc32fbd
  • debug acc6c9568da56e1dbc256821ae6157cd00991415d2a46ba067a35e29a4ddd05b

CTR-AP v0.1.3 - the correctness patch

Choose a tag to compare

@dowlle dowlle released this 21 Jul 17:57
3b27248

A correctness patch. Vanilla warp pad mode is fixed and no longer experimental, audio settings finally save, the client survives losing its server, and the seed logic tells the truth about Gem Cup legs. No new gameplay, a dozen things now behave the way they always should have.

Thanks Bethany, BEXUS and MarioSpore for the reports, and everyone in the Discord who keeps breaking things in useful ways.

Downloads

  • Windows: ctr-archipelago-v0.1.3-windows-x86.zip (contains everything)
  • Steam Deck / Linux: ctr-archipelago-v0.1.3-linux-x86.tar.gz, now less than half the old download size
  • Hosts and players: ctr.apworld and Crash.Team.Racing.yaml are attached separately
  • Debugging a crash? ctr_native_ap.debug holds the Linux debug symbols, matched to this exact build

📖 Setup guide (as shipped). Update the client and the apworld together, they are a pair.

Fixed

  • Vanilla warp pad mode could generate unbeatable seeds. Fixed, and no longer experimental. Fair warning: vanilla got noticeably tighter, only Crash Cove and Roo's Tubes are open at the start, which is how the original game works. (#80)
  • Podium rungs earned through Gem Cup legs are now fully in logic and visible in Universal Tracker, closing the v0.1.2 known issue. Found by Bethany. (#86)
  • Audio settings survive a restart now, in the AP build and the vanilla build both. (#53)
  • Losing the server no longer crashes the game. The client rides out the disconnect and reconnects by itself. (#103)
  • Boss garage stars no longer turn red from received Keys. From BEXUS's session. (#84)
  • The seed check could flash a false "seed not completable" right after you sent a check. Root caused from Bethany's seed. (#85)
  • The seed check also cried wolf on merged destination shuffle: it did not know a podium check can be earned through a Gem Cup leg. Advisory only, never blocked play. (#107)
  • The multiworld reachability log line reads like information now instead of an alarm. (PR #102)
  • Turning off Gem Cups with shuffled gems could leave live checks on the excluded cups, and one contradictory option combo now fails generation with a clear message. (#50)
  • A requirement-weight config with Trophy at 0 crashed generation. It now fails with a message telling you what to change. (#87)
  • Every vendored networking dependency is now pinned and hash-verified at build time, recorded in versions.txt inside the bundle. (#78)

New

  • Pads with remaining relic or token checks pulse blue on the map instead of going quiet, so you can see where checks remain at a glance. (#60)
  • Items you send to other players show in the hub feed as "ITEM TO PLAYER", the same way received items already do. Reported by MarioSpore. (#63)
  • The crash reporter arms at launch instead of the first frame, so startup crashes finally leave a ctr-ap-crash.txt. (#93)
  • The Linux download dropped from 27 MB to 11 MB. The debug symbols ship separately as ctr_native_ap.debug. (#92)
  • The APWorld Manager listing shows a description and author instead of a blank row. (apworld #11)

Known issues

  • Generation can rarely fail in a multiworld (#75). Fails loudly at generation, reroll. Solo unaffected.
  • Gemstone Valley pause crash (#56) and Mystery Caves crash (#57), both still unreproduced. With the reporter now arming at launch a crash file is much more likely, please attach ctr-ap-crash.txt.
  • Post-boss cutscene softlock (#51) did not reproduce in release testing with the outro path exercised deliberately. One clean run is not proof, so it stays listed.
  • A crash from an internal exception may still exit without a crash report, rare after this release's guards. (#103)

Testing

Verified in game on the exact shipped builds: audio persistence, the garage star matrix, the sent-item feed in both directions, the map pulse, the seed check through podium bursts and on the merged-shuffle seeds that used to trip it (plus a deliberately broken seed to prove it still flags real problems), server-loss survive and reconnect, and the boss outro path. Logic changes passed all eleven checks of the Archipelago index matrix plus a dedicated vanilla-mode run, about 19,000 generations, zero failures.

Next

The 0.2.0 design campaign: the character phase, item packs, and the adaptive podium rung budget, with solo/offline play (#89) behind those. No dates, hobby project honesty applies.


Checksums

  • zip e2819fe832341b9e1624506414392d2a3bbf7ddcbec5dbe5e80837c202db37fd
  • tar.gz 880e45d93ecca4733d8654ba9c2fa1cbd4e6a7e54e92a7ba596d23343bb34372
  • apworld 52137acf0ffd54305e08c5b6e07d6a3881ff2f114cf0de21aa427766fbec63b6
  • debug 0141f3954005db111daf71c8d2ebb06c4627d6d87cba3854655872f69f8a7022

CTR-AP v0.1.2 - position checks in logic, Universal Tracker, and the Steam Deck

Choose a tag to compare

@dowlle dowlle released this 20 Jul 22:51
480ee5a

Position checks become real randomizer locations, Universal Tracker works, and the Steam Deck is playable without a keyboard. Plus a batch of fixes from launch week.

Thanks MarioSpore, therawkhawk64, Bethany and Anezia for the reports, and everyone in the Discord who played and broke things.

Downloads

  • Windows: ctr-archipelago-v0.1.2-windows-x86.zip (contains everything)
  • Steam Deck / Linux: ctr-archipelago-v0.1.2-linux-x86.tar.gz (experimental)
  • Hosting? ctr.apworld and Crash.Team.Racing.yaml are attached separately

📖 Setup guide (as shipped). Update the client and the apworld together, they are a pair.

⚠️ Audio sounding wrong? The old extractor truncated audio data. Skip extraction entirely: drop your NTSC-U disc image into assets as ctr-u.bin. Steam Deck users never need the extractor. Thanks Icebound777.

New

  • Position checks in logic. Finish and held-position rungs on the 16 trophy races are full locations, including through Gem Cup legs. (#9, #41)
  • Universal Tracker support. UT rebuilds the seed's real logic from slot data instead of guessing. Reported by Anezia. (#29)
  • Steam Deck connection screen. On-screen keyboard on focus, and the edit works from the pad: X or START saves, TRIANGLE cancels. (#73, #74)
  • DeathLink in the options menu, applied live, no hotkey. (PR #70, building on #6)
  • Seed check on connect. Warns you if a solo seed cannot be finished. Built after Bethany hit one. (#42)
  • Crash reporter. Writes ctr-ap-crash.txt next to the exe. Please attach it to reports. (#43)

Fixed

  • Gem Cups could lock themselves on completion and strand checks behind them, sometimes making a seed unfinishable. Thanks MarioSpore. (#61)
  • Turning off battle arenas did not actually remove their checks, which could still be required. Thanks MarioSpore. (#50)
  • A received DeathLink death could fire a burst of outgoing deaths. (#45)
  • Traps and Wumpa no longer re-fire on reconnect. Thanks therawkhawk64. (#46)
  • Extractor audio truncation. (#47)
  • Shuffled warp pads could route a return exit to the wrong hub. (apworld #8)
  • Two fixes picked from the upstream decompilation project: a crash at the Naughty Dog intro box (CTR-tools/ctr-native#32) and the kart shifting forward during the big turbo (#36). The first may also cover the post-boss softlock.

Known issues

  • Vanilla pad mode can generate an unbeatable seed (#80). Treat it as experimental. The seed check catches it on connect, so reroll if warned. Default randomized mode is fine.
  • Generation can rarely fail (#65). Roughly thirty times rarer than before, fails loudly, reroll. Solo unaffected.
  • Gemstone Valley pause crash (#56) and Mystery Caves crash (#57), both unreproduced. The crash reporter finally gives us something to work with.
  • Post-boss cutscene softlock (#51), likely fixed but not retested.
  • Position rungs through Gem Cup legs are awarded in game but not fully in logic (#86). The "including through Gem Cup legs" claim above was only half true and we missed that at release: the game does send the rungs when you finish a track as a cup leg, but the seed logic and Universal Tracker treat a rung as out of logic until the track's own pad opens, so UT can hide rungs a cup would already grant. This cannot make a seed unbeatable, it only understates what is reachable. Found by Bethany.

Testing

Played in game: the Gem Cup fix, Steam Deck keyboard and controller, the extractor, and a connect and race smoke. The seed checker ran against six option profiles, which is how #80 was found. Generation passed the full Archipelago index check matrix, 14,000 generations, no failures.

Not verified in game: #45 (needs a two player room), #46, #41.

Next

Item packs (progressive boost and character stats) and the character phase, plus fixing vanilla pad mode properly. No dates, hobby project honesty applies.


Checksums

  • zip 51098512f9a17112187ea7b1230ebe7e5fad03f94f6299946b028496eef02e40
  • tar.gz 71d388cbe10285e5ed93c00091a7d3fa4de83294289689e18d3914039a31efa8
  • apworld 87277feea1f0c3996d3d45f688f75d9725ffa4780fc28eff36a0acbd629d1623

CTR-AP v0.1.1

Choose a tag to compare

@dowlle dowlle released this 17 Jul 13:13

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_reset sends a death only on a full wipeout (fell off, eaten), any_hit also sends on every hit that lands on you. Receiving a death always forces the full mask-carry reset. A deathlink_amnesty option 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 .iso does not carry the audio and video sector data the game needs.
  • .chd images require the chdman tool 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.

CTR-AP v0.1.0

Choose a tag to compare

@dowlle dowlle released this 15 Jul 11:35

CTR-AP v0.1.0 - first public release

CTR-AP is an Archipelago integration for a native PC port of Crash Team Racing (PlayStation, 1999). It lets Crash Team Racing take part in an Archipelago multiworld: trophies, relics, tokens, gems, and boss wins become checks, and the items you need to progress arrive from the multiworld.

📖 New here? Follow the setup guide.

The default seed gives you the full experience: randomized warp-pad requirements with destination shuffle, the Gems hidden in the multiworld, Gem Cups and Battle Arenas included, and a sprinkle of trap items.

Bring your own disc

This release ships no game data. You provide the game files from your own copy of the NTSC-U (North American) Crash Team Racing disc. Nothing here contains Crash Team Racing game assets, and none are distributed.

Easiest setup: name a raw .bin dump of your disc ctr-u.bin and place it in an assets folder next to the executable.
Alternatively, the bundled extract_assets.py reads your disc image (.cue, .bin, or .chd), verifies the region, and copies out just the files the game needs, which saves disk space. See the setup guide for the full walkthrough.

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. Other regions may be supported later.
  • The disc image must be a raw MODE2/2352 dump (a .cue/.bin, a raw .bin, or a .chd). A cooked 2048-byte .iso does not carry the audio and video sector data the game needs.
  • .chd images require the chdman tool to be installed and on your PATH.
  • After beating your goal, the game may freeze on a black screen once the credits end. Your goal is already sent to the multiworld at that point - close the game and relaunch. A relaunch shows your completed seed correctly.
  • Windows only for now; a Linux/Steam Deck build is on the roadmap.

What's next

v0.1.0 is the beginning, not the finish line. On the roadmap - no dates promised, hobby project honesty applies:

Planned next: live position checks (earn a check for reaching 1st mid-race, including inside Gem Cups) as the foundation for progressive boost and character-stat item packs · splitting the Oxide's Final Challenge relic requirement into Gold and Platinum tiers · per-seed AI difficulty · a proper Ultimate Sacred Fire trap tier with the blue flame, plus more trap types · received Wumpa Fruit actually giving you fruit · enforced relic-race minimum-time and all-boxes options · skippable podium cutscenes · per-track boss garage unlocks · Steam Deck/Linux · DeathLink.

Exploring: custom community tracks in the randomizer pool · a solo/offline mode · boss shuffle.

Long-term: Arcade Cups and Time Trial ghosts as checks, character unlocks as multiworld rewards, Mirror/N-Verted/Retro-Fueled seed modifiers, music shuffle, and a Shortcut Unlock item.

Found a bug or have an idea? Open an issue.

Verify your download

ctr-archipelago-v0.1.0-windows-x86.zip
SHA-256: 2174191a475565145ba8401ef2469df0d066ef815dd92eb565a07e1f8de4332f

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.
  • 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.