Skip to content

v0.5 - Memcard writeback, music, safer exit

Choose a tag to compare

@logdog2325 logdog2325 released this 27 May 17:00
· 4 commits to main since this release

⬆ Superseded by v0.6

v0.6 carries every feature of v0.5 plus the Pokemon creator for XD/Colosseum, Gen 3 EV legality caps, the cold-boot memcard scan fix, and the proper Swiss exit. Grab v0.6 unless you specifically need this build.


⚠️ Back up your saves first

v0.5 introduces direct memory-card writeback. Always back up your .gci files with GCMM first. The bytes you write replace what's on the card with no undo.

What's in v0.5

Memory-card writeback (XD + Colosseum)

After the v0.4 scan/read path, you can now save edited Pokémon back to the physical memory card via "Save to memory card" in the memcard submenu.

  • Self-verify before write: PokéBridge re-parses its own re-encrypted output before touching CARD_Write. If our checksum/encryption logic produces a save we can't even round-trip ourselves, we refuse to write and tell you instead of stomping the card.
  • PKHeX-correct body checksum: the body checksum at slot 0x10..0x20 is stored in PKHeX's reverse word order (a prerelease build got this wrong and corrupted a tester save).
  • GCMM-canonical I/O pattern: CARD_SetGamecode/SetCompany + CARD_Open, matching Suloku's GCMM. Sector-aligned writes via CARD_GetSectorSize.
  • Pokémon Box is detection-only — parser not implemented yet.

Background music

  • 3-track playlist (Title / Match Intro / Colosseum) loops gaplessly via libaesnd + a software timer that advances tracks at each track's natural duration.
  • Why libaesnd, not libasnd? libasnd's DSP task spin-loops on mailbox handshakes in IRQ context and races EXI completion, deadlocking CARD_Mount. Diagnosed publicly by Extrems. Swiss / Wii64 / pcsxgc all use libaesnd for the same reason.
  • BYO songs: drop WAVs in data/ and run python3 tools/embed_audio.py {title,match,colosseum} data/your_song.wav. The embed tool byte-swaps 16-bit PCM to BE for the GameCube DSP.
  • Audio headers are gitignored; setup_assets.sh writes silent stubs if you skip them.

Exit-to-loader UX

  • Picking "Exit" shows a confirmation screen, then returns to Swiss / IPL.
  • START is a global exit shortcut from the main menu.

Install

Drop the attached pokebridge.dol onto your Swiss SD at sd:/apps/pokebridge/boot.dol.