CPS-2+ hardware
An extended CPS-2 system for MiSTer and HBMAME
CPS-2+ is an extended version of Capcom's CPS-2 arcade system. It gives a game more program memory, more graphics, more sound samples and a larger sound program.
We made CPS-2+ for the Arrange editions of Vampire Savior 2 and Vampire Hunter 2. These editions come from Capcom's 2005 PlayStation 2 collection. Their added fighters, art and voices do not fit in the original CPS-2 memory.
Stock CPS-2 games run on CPS-2+ without change. A game uses the extensions only when it asks for them.
Capacity
The table compares the memory that a game can use.
| CPS-2 | CPS-2+ | |
|---|---|---|
| Main program | 4 MB, encrypted | 4 MB, encrypted, plus a 4 MB extension that is not encrypted |
| Graphics | 32 MB | 64 MB |
| QSound samples | 8 MB | 16 MB or 32 MB |
| Sound program (Z80) | 256 KB | 512 KB |
The clocks, the palettes, the sprite format, the QSound program and the sound volume do not change.
Main program
The original 4 MB program area stays encrypted with the game's own key. The key decrypts only part of this area, often the first 1 MB.
The extension adds 4 MB at CPU addresses A00000 to DFFFFF. This area is not encrypted. The CPU can read data and run instructions there.
The extension is not encrypted on purpose. CPS-2+ does not add a new security key, and no game gets a new key.
Graphics
The graphics memory is 64 MB. The lower 32 MB is the original graphics. The upper 32 MB is new.
A sprite selects the upper half through its object entry. The game writes the entry through a second address, an alias of the object memory. A write through the usual address selects the lower half again.
A scroll-layer tile selects the upper half with bit 9 of its attribute word. Tiles from the two halves can mix in one layer.
Rendering does not change. Flips, priorities and palettes work as they do on CPS-2.
Sound
The QSound sample memory uses a 25-bit address. A game can have 8, 16 or 32 MB of samples. The two Arrange editions use 16 MB.
The Z80 sound program can be 512 KB. The program keeps its fixed 32 KB area. One more bit in the bank register selects 30 banks of 16 KB.
The sound DSP and its program do not change.
How a game asks for the extensions
On MiSTer, the game's MRA file sends a header to the core. The header tells the core the size of each memory area. A stock game sends the stock header, and the core works as a stock CPS-2.
In HBMAME, the set definition gives the same sizes. Stock sets do not change.
A reset clears the sprite selections and the sound bank. The loaded game stays in memory.
Where it runs
- MiSTer: the CPS+ core, jtcps2-cpsplus_20261006.rbf. It needs a 128 MB SDRAM module. The core also plays the CPS+ arranged soundtracks.
- HBMAME: the CPS+ driver, cps2plus. It runs the sets vsav2s05, vsav2s06, vhunt2s02 and vhunt2s03.
- CPS-2+ games do not run on the standard jtCPS2 core or in stock MAME.
Our Arrange kits include the CPS+ core. You do not have to get it separately.
Games that use CPS-2+
| Program extension | Graphics | Samples | Sound program | |
|---|---|---|---|---|
| Vampire Savior 2 Arrange | 4 MB | 64 MB (8 MB of new art in the upper half) | 16 MB | 256 KB |
| Night Warriors 2 Arrange / Vampire Hunter 2 Arrange | 4 MB | 64 MB (8 MB of new art in the upper half) | 16 MB | 512 KB |
Each game image is about 92 MB, so it takes longer to load than a stock game.
For game authors
- Put new encrypted code only in the range that the game's key decrypts. Put data anywhere.
- Put new code that is not encrypted in the 4 MB extension.
- Write every object entry through the alias when the sprite must use the upper graphics. Do this also for byte writes and reused slots.
- Clear bit 9 of a scroll tile's attribute word for lower-half tiles. Make sure that the game does not use bit 9 for a different purpose.
- Sample offsets are still 16 bits and wrap in a 64 KB bank.
Source and licenses
The CPS+ core is a GPL-3.0 fork of Jotego's jtcores. The source for this build is at github.com/strygo/jtcores, revision 9886018d.
The HBMAME driver is one class, cps2plus_state. It adds to the standard CPS-2 driver and keeps the stock behavior.
Related projects
- Vampire Savior 2 Arrange, a CPS-2+ game
- Night Warriors 2 Arrange, a CPS-2+ game with the 512 KB sound program
- CPS+, arranged soundtracks on the same core