Arcade Patches
Translations, restorations and arranged soundtracks for classic arcade games.
← All patches

CPS+

Arranged CD-era soundtracks for CPS-1 & CPS-2 arcade games on MiSTer

v1.3bMiSTer FPGA (CPS-1.0, CPS-1.5 and CPS-2 cores)
Hardware
MiSTer FPGA (CPS-1.0, CPS-1.5 and CPS-2 cores)
Version
1.3b
Updated
2026-09-19

From Final Fight CD onward, Capcom kept sending its arcade soundtracks back to the studio. Every CD-based home port got a full re-recording of the music, the 'arrange' versions, produced by the original composers' teams. For thirty years those recordings stayed locked to the home versions. CPS+ puts them where they always belonged, under the arcade games themselves.

On a MiSTer, the real CPS-1 or CPS-2 hardware logic runs the game while the CD-era soundtrack plays the music, started, looped and faded by the game itself, exactly the way Capcom's own console releases timed it. Hit sounds, voices and the announcer stay pure arcade. It sounds like the arcade board grew a CD drive.

Version 1.3 brings the arranged soundtracks to two new Super Turbo projects, Grand Master Challenge and Super Street Fighter II EX: The Ultimate Championship, with either the Anniversary Edition arrangement or the HD Remix soundtrack. It also moves the Final Fight EX and Street Fighter Alpha 2 Gold MRAs onto those projects' latest sets.

Get started

CPS+ MiSTer kit: cores, MRAs and the pack builder
SHA-256: c234ed13e33ebbfb3732b95de773a0c4840900d491f98a84b8683435568f293a
  1. Download and unzip the kit.
  2. Edit builder/discs.toml and point it at the disc rips you own (each entry is optional), or pass them on the command line with --disc mtwins_pce_disc=/discs/chiki.7z. make_packs.py --list shows every pack and the disc it wants.
  3. Run python3 builder/make_packs.py (Python 3.11+, numpy, ffmpeg). It builds out/mister/, laid out like your SD card. The three X68000 packs also need git, cmake and a C/C++ compiler, and take up to an hour each to render. The Strider pack needs MAME and your PlayStation BIOS set, and takes about five minutes to record.
  4. Copy the contents of out/mister/ to your MiSTer SD card, merging with what's there. Arcade ROM zips go where they always do.

The download is tools: the MRAs, the three CPS+ cores with their GPL-3.0 source, and the pack builder. It makes the packs on your machine from discs, disks and albums you own, naming anything it skips for want of a disc. It also assembles out/mister/ for you, holding the cores, your packs, and only the MRAs those packs can load, so nothing on the card fails to start.

Five MRA groups pair CPS+ audio with sets that are not stock: the Alpha 2 Gold MRAs load the SFA2 Gold reconstructed sets, the Grand Master Challenge and Super Street Fighter II EX MRAs load those projects' HBMAME sets, ‘Final Fight EX (Arrange)’ loads the Final Fight EX set, and ‘Final Fight 30th Anniversary CPS2 Edition (Arrange)’ loads the CPS2 conversion of Final Fight that the Arcade Offset project distributes. Build the first four with their own kits first (links below).

Game coverage

Every soundtrack is built from one disc, one set of disks, or one album you own. Where a disc came out in several regions, the ones listed below all produce the same pack.

Arcade gameSoundtrackBuilt from
Final Fightffightu, ffightj, ffightus01, ffightjs01 Sega CD arrangeFinal Fight CD (Sega CD)
SNES soundtrackFinal Fight Original Sound Collection (CD audio)
X68000 FM soundtrackFinal Fight Original Sound Collection (CD audio)
X68000 MIDI soundtrackFinal Fight Original Sound Collection (CD audio)
Double Impact remixFinal Fight: Double Impact remixed soundtrack (Download)
Final Fight 30th Anniversary CPS2 Editiona CPS2 conversion of Final Fight, distributed by Arcade Offsetffightae_cps2 Sega CD arrange (USA disc)Final Fight CD (Sega CD)
Forgotten WorldsLost Worlds in Japanforgottn, lostwrld PC Engine CD arrangeForgotten Worlds (PC Engine CD)
Ghouls'n GhostsDaimakaimura in Japanghoulsu, daimakai X68000 MIDI soundtrackDaimakaimura (X68000)
Hyper Street Fighter IIhsf2, hsf2j, hsf2a Anniversary Edition arrangeHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
CPS-1 soundtrackHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
Magic SwordMagic Sword: Heroic Fantasy in Japanmswordu, mswordj Double Impact remixFinal Fight: Double Impact remixed soundtrack (Download)
Mega TwinsChiki Chiki Boys in Japanmtwins, chikij PC Engine CD arrangeChiki Chiki Boys (PC Engine CD)
Saturday Night Slam MastersMuscle Bomber in Japanslammastu, mbomberj FM Towns arrangeMuscle Bomber (FM Towns)
Street Fighter AlphaStreet Fighter Zero in Japan and Asiasfau, sfzj, sfza Saturn arrangeStreet Fighter Alpha: Warriors' Dreams / Street Fighter Zero (Saturn)
Street Fighter Alpha 2Street Fighter Zero 2 in Japan and Asiasfa2u, sfz2j, sfz2a Saturn arrangeStreet Fighter Zero 2 / Alpha 2 (Saturn)
SNES soundtrackStreet Fighter Alpha Anthology (PlayStation 2)
Street Fighter Alpha 2 GoldZero 2 Alpha and Zero 2 Dashsfa2g, sfz2al, sfz2alj, sfz2d, sfz2da, sfa2d Saturn extended arrangeStreet Fighter Zero 2′ or SF Collection Disc 2 (Saturn)
Street Fighter II': Champion Editionsf2ceuc, sf2cejc Anniversary Edition arrangeHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
X68000 MIDI soundtrackStreet Fighter II' Champion Edition (X68000)
Street Fighter II': Hyper Fightingsf2hfu, sf2hfj Anniversary Edition arrangeHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
Street Fighter II: The World Warriorsf2uk, sf2jl Anniversary Edition arrangeHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
StriderStrider Hiryu in Japanstriderua, striderjr PlayStation Sound RemixStrider (PlayStation)
Super Puzzle Fighter II TurboSuper Puzzle Fighter II X in Japanspf2tu, spf2ta, spf2xj Saturn arrangeSuper Puzzle Fighter II Turbo (Saturn)
Super Street Fighter IIssf2u, ssf2j, ssf2a Anniversary Edition arrangeHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
X68000 MIDI soundtrackSuper Street Fighter II (X68000)
HD RemixSuper Street Fighter II Turbo HD Remix official soundtrack (Download)
Super Street Fighter II TurboSuper Street Fighter II X in Japan, plus Grand Master Challenge and Super Street Fighter II EXssf2tu, ssf2ta, ssf2xj, ssf2tgmc, ssf2tuc, ssf2xuc Anniversary Edition arrangeHyper Street Fighter II: The Anniversary Edition (PlayStation 2)
HD RemixSuper Street Fighter II Turbo HD Remix official soundtrack (Download)
UN SquadronArea 88 in Japanunsquad, area88 SNES soundtrackCapcom Music Generation: Area 88 Original Soundtrack (CD audio)

Which disc you need

Capcom Music Generation: Area 88 Original SoundtrackCD audioone disc, ripped to FLAC or WAV
Chiki Chiki BoysPC Engine CDJapan
DaimakaimuraX68000a zip of the game's disk images, plus your own Roland SC-55 ROM set; the soundtrack is rendered on your machine
Final Fight CDSega CDUSA and/or Japan, and each region builds its own pack
Final Fight Original Sound CollectionCD audiodiscs 1–2, ripped to FLAC or WAV
Final Fight: Double Impact remixed soundtrackDownloadCapcom's free 2010 release, still served at finalfightgame.com/remix; the zip as downloaded, or unpacked
Forgotten WorldsPC Engine CDUSA or Japan
Hyper Street Fighter II: The Anniversary EditionPlayStation 2Japan or Europe, or the USA Street Fighter Anniversary Collection; all three carry identical audio data
Muscle BomberFM TownsJapan
Street Fighter Alpha AnthologyPlayStation 2USA
Street Fighter Alpha: Warriors' Dreams / Street Fighter ZeroSaturnSF Alpha (USA) or SF Zero (Japan); the European release is not supported
Street Fighter II' Champion EditionX68000a zip of the game's disk images, plus your own Roland SC-55 ROM set; the soundtrack is rendered on your machine
Street Fighter Zero 2 / Alpha 2SaturnSF Zero 2 (Japan), SF Alpha 2 (USA or Europe), SF Zero 2′ (Japan) or SF Collection Disc 2; the songs are the same on all five
Street Fighter Zero 2′ or SF Collection Disc 2Saturnthe same on both, any SF Collection region
StriderPlayStationUSA, the disc bundled with Strider 2; the kit records the game's own sound test with MAME and your PlayStation BIOS set
Super Puzzle Fighter II TurboSaturnUSA, Europe, or Super Puzzle Fighter II X (Japan)
Super Street Fighter IIX68000a zip of the game's disk images, plus your own Roland SC-55 ROM set; the soundtrack is rendered on your machine
Super Street Fighter II Turbo HD Remix official soundtrackDownloadOC ReMix's OCRA-0012 FLAC set, from ocremix.org/album/12 or its official torrent

Under the hood

Nothing in the game is modified. CPS-1 and CPS-2 games post sound commands to their audio hardware, and the CPS+ core watches for them. When one matches the loaded pack, it streams that arranged track and holds the command back from the sound chip. Everything else plays as it always did: hit sounds, voices, the announcer, and the jingles a pack deliberately leaves alone.

The trigger tables were reverse-engineered from Capcom's own console releases and checked against the arcade programs, down to the loop points and fades.

A pack carries the arranged tracks and the table that says which sound command starts each one. The MRA points at the pack, and MiSTer loads it into memory alongside the ROM. A stock MiSTer runs all of this as it comes.

A given disc always produces the same pack, and the builder checks yours against a published hash.

Making your own packs

Community packs are a first-class goal, so the format is documented and the tools ship in the kit. build_pack.py init <game> starts a project; you supply the tracks and say which sound command triggers each one; build_pack.py build produces the pack, which you can listen through, check, and point an MRA at.

Any QSound CPS-2 title is a potential target, and CPS-1 and CPS-1.5 games work too. PACK_FORMAT.md in the kit covers the trigger contract, the pack layout, and how to author one.

FAQ

What do I need installed to build the packs?

Python 3.11 or newer, numpy, and ffmpeg on your PATH. On a Mac: brew install python ffmpeg, then pip3 install numpy. On Linux, use your package manager. 7-Zip is only needed if your rips are .7z archives. The three X68000 packs additionally need git, cmake and a C/C++ compiler (see the X68000 question below). The Strider pack needs MAME as well (see the Strider question below).

Nothing is installed on the MiSTer itself. The kit is plain files copied to the SD card, and a stock MiSTer runs them as-is.

What disc rip formats does the builder accept?

A .cue sheet with its .bin files beside it, a .mds/.mdf pair, or a .zip/.7z archive containing exactly one cue sheet. For the PlayStation 2 sources, point it at the .iso (or a zip containing it). The two CD-audio sources (the Final Fight OST and the Area 88 soundtrack) are folders of .flac or .wav files instead of a disc image. The X68000 games are a zip of their .dim or .xdf floppy images. The two album sources are the downloads themselves: Capcom's Double Impact zip, as downloaded or unpacked, and the OC ReMix folder holding the FLACs. The Strider PlayStation disc can be .chd, or .cue with its bins.

CHD rips need converting back first with chdman extractcd, since the builder doesn't read CHD directly.

A pack failed hash verification. What now?

It almost always means the disc isn't one of the supported releases listed above, or the rip is damaged. Check which release you have, re-rip if in doubt, and run make_packs.py again. A nonstandard ffmpeg build can also encode slightly differently; the stock Homebrew or distro ffmpeg matches the published hashes.

The builder won't stage a pack that fails, so a bad rip can't reach your SD card. There's a --no-verify flag if you want one anyway.

What do the X68000 soundtracks need, and why are they different?

The X68000 ports of Ghouls'n Ghosts, Street Fighter II' Champion Edition and Super Street Fighter II shipped their music as MIDI, meant for a Roland SC-55 on the desk next to the computer. There is no recording to copy, so the kit renders one on your machine, the same way the published packs were made: your disk images, your SC-55 ROM set, and a cycle-accurate SC-55 emulator built from source at a pinned revision.

That means git, cmake and a C/C++ compiler (Xcode's command-line tools on a Mac, build-essential and cmake on Debian or Ubuntu), a one-time build of a few minutes, and then ten minutes to an hour of rendering per game. The result is hash-checked like every other pack. The kit's X68000.md walks through it.

The published packs were rendered and rebuilt byte-for-byte on a Mac. Whether the emulator's output is bit-identical on every CPU has not been proven; if it isn't on yours, the builder stops at the hash check rather than staging different audio.

What does the Strider pack need, and why is it different?

The PlayStation port's Sound Remix music is sequenced and played by the game's own sound driver through the console's sound chip, so there is no recording on the disc to copy. The kit makes one: MAME boots your disc, walks into the game's sound test, plays the ten performances and records the console's output. The builder then cuts the reviewed performances from that recording and checks each against its published hash.

That means MAME installed (brew install mame on a Mac, your package manager on Linux, the official build on Windows), your Strider (USA) disc as .chd or .cue, and MAME's PlayStation ROM sets, psu.zip and psx_cd.zip, in a folder you point discs.toml at. The recording takes about five minutes. The kit's PSX.md walks through it.

The pack was verified with MAME 0.288 from Homebrew on a Mac and with the official Windows build. Those two record a few samples a tiny, inaudible step apart, so the kit accepts both and checks each against its own hashes. If your MAME build renders differently, the builder stops at the hash check rather than staging different audio.

Will this touch my existing MiSTer setup?

No. The CPS+ cores have their own names and the MRAs live in their own folder, so your existing cores, MRAs and ROMs are untouched. To remove it, delete the _Arcade Patches folder, the three cores and games/CPS+.

Is any of the music in the download?

No, the kit is tools only. Every pack is made on your machine from a disc you own.

Do the packs work in MAME or on a real arcade board?

No. CPS+ is a MiSTer feature: the streaming player lives in the FPGA cores and the pack loads into the MiSTer's DDR memory. Everywhere else the games just play their stock music.

The companion projects do cover other targets: SFA2 Gold, Final Fight EX, Grand Master Challenge and Super Street Fighter II EX all ship HBMAME sets. See their pages, linked below.

I built the 1.2 packs. Do I need to rebuild them for 1.3?

No. Every pack you built with 1.2 still works with 1.3. Three packs (the two Double Impact remixes and HD Remix) have new reference hashes, because they now build to the same bytes on every computer, but the difference is inaudible and the files are the same size. Copy the new MRAs to your card.

If you use the Gold, Final Fight EX or Grand Master Challenge MRAs, rebuild those sets with their projects' latest kits: the MRAs now expect the new sets.

I built the 1.1 packs. Do I need to rebuild them for 1.2?

Six packs changed. The three Final Fight soundtrack packs (SNES, X68000 FM and X68000 MIDI) now start their opening where the arcade's own song starts, in both regions, and leave the phone ring to the board. The three Super Street Fighter II packs (Arrange, Turbo Arrange and X68000 MIDI) now let the QSound logo jingle play from the arcade board. Ten SSF2-family MRAs also changed, carrying each region's factory EEPROM defaults.

Drop the 1.2 kit over your old one, add the new sources to discs.toml, and run make_packs.py again. Every pack it builds is checked against the published hashes, so the six changed ones come out corrected and the rest come out identical, and out/mister/ picks up the new MRAs. The other 17 packs and the three cores are unchanged, hash for hash.

Release history

1.3b (2026-09-19)

1.3 (2026-09-17)

1.2 (2026-09-10)

1.1 (2026-09-01)

1.0 (2026-08-25)

Source & related projects

Notes