{"slug": "extracting-sound-effects-from-a-switch-game", "title": "Extracting sound effects from a Switch game", "summary": "A developer extracted sound effects from Nintendo Switch Sports by obtaining a dumped game file from torrent sites, bypassing the need for a modded Switch. The process involved navigating ad-ridden sites to find the game dump, then extracting the audio assets, including Golf sounds added in a later patch.", "body_md": "# Extracting sound effects from a Switch game\n\nAs part of my [previous post reverse engineering the Denon XML API](https://blog.alexbeals.com/posts/automating-denon-avr-zones) I talked about my love for the Golf sound effects in Nintendo Switch Sports, complete with a [way to build an ambient soundscape](/posts/automating-denon-avr-zones#music-to-my-ears). But where did I get those sound files? There are in-game [recordings on YouTube](https://www.youtube.com/watch?v=f6_ub4MUWHE) but the sounds are all muddled together, and separating them out is a bit of a nightmare.\n1\nThough software like [demucs](https://github.com/facebookresearch/demucs) keeps making it easier.\nSo where and how *do* I get them?\n\nPut on your ~~pirate's hat~~ caving helmet.\n2\nIt's a little sickening that there's no such product on the market (or in Google Images — not even a custom [Spelunky](https://en.wikipedia.org/wiki/Spelunky) skin??). Also every vintage miner's helmet that I looked up to Photoshop was AI generated. In lieu of [low-background steel](https://lowbackgroundsteel.ai/), here's some slop straight from the ChatGPT furnaces.\nIt's time to go ~~thieving~~ spelunking.\n\n`.xci`\n\nand `.nsp`\n\nand `.nca`\n\n, oh my!\n\nMy approach is, as the title spoiled, to extract the sound assets from the raw Switch Sports game file. To do that we need the game file. To dump the game file we need a modded Switch. To mod the Switch we either need unpatched hardware (you can check your serial number [here](https://ismyswitchpatched.com/serial-check), though my prefix of `XAW1`\n\nis unfortunately patched\n**012412** 3\nThere used to be a hardware exploit using a memory buffer overflow in the Tegra's [pre-boot mode](https://switch.hacks.guide/user_guide/rcm/).\n) or [solder on a modchip](https://www.youtube.com/watch?v=zX7eBg2gIzI).\n\n[RP2040 Picofly modchip](https://wayayeo.org/product/rp2040-picofly-switch-modchip/)\n\nThat all seems like a lot of work. Alternatively, other people have already done this, albeit often to illegally distribute the dumped games for Switch emulators like [Yuzu](https://www.gamesindustry.biz/nintendo-issues-dmca-takedown-notice-against-over-8500-yuzu-emulator-repositories) or [Ryujinx](https://gbatemp.net/threads/ryujinx-emulator-taken-down-after-devs-reach-agreement-with-nintendo.661497/). Both emulators are now gone as part of the **deluge** of copyright strikes by Nintendo, but the dumped games are still out there.\n4\nI'm soooo subtle. I advise making sure you own a copy of the game *before* following this path.\nFinding them requires searching through **torrent** s of ad-ridden sites that try to **leech** your money and time with fake links, but if you follow the breadcrumbs\n5\nIt's fun that this term has caught on for navigation when it explicitly failed in *Hansel and Gretel*: the birds ate them! Use the white pebbles! Though saying it's from *Hansel and Gretel* isn't exactly right: that was published in 1812 and it's just a tweak of *Nennillo e Nennella* in Basile's 1636 *Pentamerone* where [it's bran](https://www.worldoftales.com/European_folktales/Italian_folktale_30.html#gsc.tab=0:~:text=When%20Nennillo%20and%20Nennella%20had%20eaten%20all,bran%20that%20was%20strewn%20upon%20the%20ground), though that pulls from Montanus's 1557 *The Little Earth-Cow*, where [it's hemp seeds](/images/extracting-sound-effects-from-a-switch-game/55.jpg), though that pulls from oral history likely dating back to Ariadne's thread and beyond — there are no original stories.\nyou can find what you're looking for.\n\nIn our case the base game isn't enough: Switch Sports only released with Tennis, Bowling, Chambara,\n6\nChambara holds the dubious honor of being the only sport more recognizable inside Switch Sports than out of it: [\nSoccer, Badminton, and Volleyball, with Golf not being added until v1.3.0 seven months later. While it seems like you should be able to extract the Golf sound files from just the v1.3.0 patch, Nintendo releases online patches as ](/images/extracting-sound-effects-from-a-switch-game/8.png)`.nsp`\n\n7\n**N** intendo **S** ubmission **P** ackage, kind of like an `.apk`\n\nfor Android.\nfiles, which are changesets against the base game rather than raw files. Therefore to extract the new sound files, we're going to need the v1.3.0 `.nsp`\n\npatch file **and** the v1.0 `.xci`\n\n8\nN**X** **C** ard **I** mage. I think.\nfile (a raw dump of the original physical cartridge). Notably though we *don't* need the updates in-between, as each patch is defined solely in reference to v1.0.\n\n## Master keys for encrypted locks\n\nFirst we need to extract `.nca`\n\n9\n**N** intendo **C** ontent **A** rchives, kind of like a `.zip`\n\nfile for Nintendo.\nfiles from both of the wrappers. They're encrypted, and decrypting them requires official Nintendo decryption keys that live on the Switch. These can ostensibly be pulled from a modded Switch using [Lockpick](https://github.com/shchmue/Lockpick_RCM), though the repo has been taken down: it's easier to just find `prod.keys`\n\nlists online. These lists contain many keys, but for Switch Sports we just need `header_key`\n\nand `key_area_key_application_0c`\n\nfor the base `.xci`\n\n, and `titlekek_0c`\n\nfor the `.nsp`\n\npatch.\n10\nIf you're curious why we only need the `_0c`\n\nsuffixed keys, the firmware for the base game and updates is 13.3.4.0, which just uses Master Key `0xC`\n\n(you can use `hactool -i -k prod.keys file.xci`\n\nto find that, though it's a little chicken-and-egg): [ Most ](/images/extracting-sound-effects-from-a-switch-game/6.png)`prod.keys`\n\nlists have all firmware keys so this is mostly irrelevant.\n\n[search files and repos](https://github.com/THZoria/NX_Firmware/blob/a9e20653cf8ff1dc350b18340b2a788e1cc3cf08/prod.keys#L32)for these substrings\n\nOnce you have these, the easiest tool I found to decrypt the files was [NxFileViewer v3.0.2](https://github.com/Myster-Tee/NxFileViewer/releases/tag/3.0.2).\n11\nNote that from here on out all the tooling I'm using is on Windows. Some of it may exist on macOS (I didn't verify) but everything that's video gaming–adjacent is still Windows first, even as the brand slides into decay.\nFirst you drag-and-drop your `prod.keys`\n\nfile, and then you can drop in the `.xci`\n\nor `.nsp`\n\nyou want to explore. For the `.xci`\n\nwe're looking for the main `.nca`\n\nfile under \"Secure\": it should be the biggest file and have the `(Program)`\n\nsuffix. Right-click and save it as a raw file to export.\n\n[find software to handle](https://github.com/LordNed/BFRES-Extractor), not\n\n`.bfres`\n\n`.bkres`\n\n.\n\n`fff189342ce634d6f5ee09f88a625204.nca`\n\n.\nYou can see the file structure even without exporting the `.nca`\n\n. Bowling models!\n12\n\nWe can do the same thing for the `.nsp`\n\nupdate file (though because it's a patch it shows an unexpandable \"Section 1\" instead of the file structure). In order to combine them we'll again need to export the `(Program)`\n\n-suffixed `.nca`\n\nfile, `0dea81236257713f3c7e1dcec6a48893.nca`\n\n, though this time we also need the `AccessKey`\n\nfrom the Ticket (`.tik`\n\n) file (`6DFD41E888641F694AF33F03F2E57C01`\n\n).\n\nPhew! With all of this pulled together we're finally ready to extract.\n\n## Extracting sound files\n\nWe can download `hactool`\n\n[version 1.4.0 from GitHub](https://github.com/SciresM/hactool/releases/tag/1.4.0), and then run it with the `--romfsdir`\n\nflag to extract using Command Prompt:\n\n```\nhactool -k <prod.keys> --basenca=<v1.0.nca> --romfsdir=<output_dir> <v1.3.0.nca> --titlekey <AccessKey>\n```\n\nIn my case with hard data that looks like this:\n13\nYou can safely rename the `.nca`\n\nfiles: the hexadecimal name isn't necessary. I'm not sure if the titlekey needs to be lowercase.\n\n```\nhactool.exe -k prod.keys --basenca=fff189342ce634d6f5ee09f88a625204.nca --romfsdir=\"D:\\Desktop\\Switch Sports Golf Extraction\\romfs_3\" \"0dea81236257713f3c7e1dcec6a48893.nca\" --titlekey 6dfd41e888641f694af33f03f2e57c01\n```\n\nIn the output directory that you choose, navigate to `Sound/Resource`\n\n. There's two main types of files here: raw `.bwav`\n\ns in the `Stream`\n\nfolder and compressed `.bwav`\n\nsets as `.bars.zs`\n\n.\n\nTo extract the `.bars.zs`\n\nfile I used [BARSReaderGUI v1.0.1](https://github.com/natv1337/BARSReaderGUI/releases/tag/1.0.1), which has a \"Batch Extract\" option. Just select the overall `Sound/Resource`\n\nfolder and it decompresses all subfiles.\n\nAnd voila, everything's converted into `.bwav`\n\n! This is just a normal\n14\n[\"Normal? What do you know about normal? What does anyone in this family know about normal?!\"](https://www.youtube.com/watch?v=yL-owHxF2lc&t=3m17s)\nsound file, which you can play using\n\n[v2.25.9 of](https://www.foobar2000.org/windows)with the\n\n`foobar2000`\n\n`vgmstreamdecoder`\n\n[plugin component](https://www.foobar2000.org/components/view/foo_input_vgmstream). You can also export them as\n\n`.wav`\n\nor `.mp3`\n\nor countless other formats:Take a listen:\n\nFilename (`.bwav` ) | Sound | Description |\n|---|---|---|\n`SE_` | The sound from overswinging an Iron club | |\n`SE_` | Pond ambient noise | |\n`SE_` | Waterfall ambient noise |\n\n## The Sportsmates speak Minionese??\n\nMost of the audio files are for the ball, the swings, or the ambient sounds, which I expected. What I didn't expect were the files like `SE_Glf_Env_Walla_MiddleMale_07.bwav`\n\nthat make up the crowd's background talking noise (Nintendo certainly never expected you to hear that audio this clearly). Click on a Sportsmate to hear their Golf environmental \"dialogue\"!\n15\nBig shoutout to [this polygon-backed image map generator](https://www.fla-shop.com/image-map/) for making the clickable image possible, and an even bigger shoutout to the voice actors for making up nonsense syllables!\n\nCongrats on making it to the end! I couldn't find good resources on how to do this, so hopefully this guide is helpful for others trying to extract Switch game assets (and ideally it's engaging even if you're not). Regardless of which bucket you fall in, give yourself [a round of applause](#), [listen to some tunes](#), and maybe thank the sound team:\n16\nDid I extract the exact font from the credits following [this guide](https://www.reddit.com/r/splatoon/comments/13dstg3/i_extracted_the_fonts_from_splatoon_3_and_you_can/), use [SARC-Tool](https://github.com/aboood40091/SARC-Tool/releases/tag/v0.5) to extract the `bfotf`\n\nfiles from `Font.Nin_NX_NVN.bfarc`\n\n, and use [NintyFont](https://github.com/hadashisora/NintyFont/releases/tag/v1.0-alpha.2) to convert to `.ttf`\n\n? Along with extracting the credits video? All just to have custom sound-specific credits? Sure did. Even made a version of [the easter egg](https://nintendowire.com/guides/nintendo-switch-sports/how-to-play-the-credits-minigame-and-win-a-secret-title/)!\n\n-\nIt's a little sickening that there's no such product on the market (or in Google Images — not even a custom\n\n[Spelunky](https://en.wikipedia.org/wiki/Spelunky)skin??). Also every vintage miner's helmet that I looked up to Photoshop was AI generated. In lieu of[low-background steel](https://lowbackgroundsteel.ai/), here's some slop straight from the ChatGPT furnaces.[↩︎](#fnref1:exist) -\nThere used to be a hardware exploit using a memory buffer overflow in the Tegra's\n\n[pre-boot mode](https://switch.hacks.guide/user_guide/rcm/).[↩︎](#fnref1:patched) -\nI'm soooo subtle. I advise making sure you own a copy of the game\n\n*before*following this path.[↩︎](#fnref1:own) -\nChambara holds the dubious honor of being the only sport more recognizable inside Switch Sports than out of it:\n\n[↩︎](#fnref1:clip-150-chambara) -\n**N** intendo**S** ubmission**P** ackage, kind of like an`.apk`\n\nfor Android.[↩︎](#fnref1:nsp) -\nN\n\n**X****C** ard**I** mage. I think.[↩︎](#fnref1:xci) -\n**N** intendo**C** ontent**A** rchives, kind of like a`.zip`\n\nfile for Nintendo.[↩︎](#fnref1:nca) -\nIf you're curious why we only need the\n\n`_0c`\n\nsuffixed keys, the firmware for the base game and updates is 13.3.4.0, which just uses Master Key`0xC`\n\n(you can use`hactool -i -k prod.keys file.xci`\n\nto find that, though it's a little chicken-and-egg):[Most](/images/extracting-sound-effects-from-a-switch-game/6.png)`prod.keys`\n\nlists have all firmware keys so this is mostly irrelevant.[↩︎](#fnref1:0c) -\nNote that from here on out all the tooling I'm using is on Windows. Some of it may exist on macOS (I didn't verify) but everything that's video gaming–adjacent is still Windows first, even as the brand slides into decay.\n\n[↩︎](#fnref1:windows) -\nI don't know how to convert these: I could only\n\n[find software to handle](https://github.com/LordNed/BFRES-Extractor), not`.bfres`\n\n`.bkres`\n\n.[↩︎](#fnref1:bowling) -\nYou can safely rename the\n\n`.nca`\n\nfiles: the hexadecimal name isn't necessary. I'm not sure if the titlekey needs to be lowercase.[↩︎](#fnref1:mods) -\n[\"Normal? What do you know about normal? What does](https://www.youtube.com/watch?v=yL-owHxF2lc&t=3m17s)*anyone*in*this*family know about**normal**?!\"[↩︎](#fnref1:normal) -\nBig shoutout to\n\n[this polygon-backed image map generator](https://www.fla-shop.com/image-map/)for making the clickable image possible, and an even bigger shoutout to the voice actors for making up nonsense syllables![↩︎](#fnref1:imagemap) -\nDid I extract the exact font from the credits following\n\n[this guide](https://www.reddit.com/r/splatoon/comments/13dstg3/i_extracted_the_fonts_from_splatoon_3_and_you_can/), use[SARC-Tool](https://github.com/aboood40091/SARC-Tool/releases/tag/v0.5)to extract the`bfotf`\n\nfiles from`Font.Nin_NX_NVN.bfarc`\n\n, and use[NintyFont](https://github.com/hadashisora/NintyFont/releases/tag/v1.0-alpha.2)to convert to`.ttf`\n\n? Along with extracting the credits video? All just to have custom sound-specific credits? Sure did. Even made a version of[the easter egg](https://nintendowire.com/guides/nintendo-switch-sports/how-to-play-the-credits-minigame-and-win-a-secret-title/)![↩︎](#fnref1:recreate)", "url": "https://wpnews.pro/news/extracting-sound-effects-from-a-switch-game", "canonical_source": "https://blog.alexbeals.com/posts/extracting-sound-effects-from-a-switch-game", "published_at": "2026-06-29 04:27:46+00:00", "updated_at": "2026-06-29 04:58:10.593213+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Nintendo", "Switch Sports", "Yuzu", "Ryujinx", "Nintendo Switch", "Golf"], "alternates": {"html": "https://wpnews.pro/news/extracting-sound-effects-from-a-switch-game", "markdown": "https://wpnews.pro/news/extracting-sound-effects-from-a-switch-game.md", "text": "https://wpnews.pro/news/extracting-sound-effects-from-a-switch-game.txt", "jsonld": "https://wpnews.pro/news/extracting-sound-effects-from-a-switch-game.jsonld"}}