Skip to content
Implementation of the Quattro sound driver used in 90s Namco arcade games
C C++ Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ini
src
.gitignore
COPYING
Makefile
QuattroPlay.cbp
font.bmp
font.png
readme.md

readme.md

QuattroPlay

About

This program implements the sound drivers used by Namco arcade games from the mid 80s to the late 90s. It can play music and sound effects from over 140 games, with a tracker-style pattern visualization, channel muting and more.

QuattroPlay is free software licensed under the GPL version 2.

Supported Sound Drivers

  • Thunder Ceptor (FM only)
  • System 86 (FM only)
  • System 1 (Except some games)
  • System 2/21 (all known games supported)
  • NA-1/2 (all known games supported)
  • Quattro (System 11/12/22/23/NB/FL, all known games supported)

Build instructions

The only dependency is SDL2 (sudo apt-get install libsdl2-dev). Ver 2.0.8 or above is required, 2.0.9 is recommended especially on Linux.

The makefile is tested on Arch Linux, Linux Mint, Ubuntu and Windows (using MSYS2).

The program works on macOS, but you might have to do modifications to the makefile. I can't help you there.

Usage

Currently zipped MAME ROMs are not supported, you will have to store them in a subdirectory under /roms.

Then run it from command line/terminal:

bin/QuattroPlay.exe <gamename>

or

./bin/QuattroPlay <gamename>

Running without the argument will allow you to select a game from a menu. It is also possible to load .ini files with associated data and wave files by drag and drop while the program is running.

GUI usage

The current user interface is a bit complicated... Currently it only uses the keyboard.

Use the arrow keys to move the selection and press Enter once to edit the value. Use the arrow keys to set the value and press Enter again to set it.

There are three groups of values. The first are Track slots. By entering a value here you can play music or sound effects. The second group control Registers. These are used to control various parameters of the song. The third group is not editable but used to display information on the 32 Voices (sound channels).

To simply play sounds, simply move the selection to the top left value (Track 0), and press I or D to modify the value. Press S to stop a sound or R to restart.

By highlighting one of the values in the last group you can mute or solo channels by highlighting them and pressing M or S.

Command line usage

./bin/QuattroPlay [options] <gamename> [<song ID>]

If Song ID is specified, the song will automatically start. If enabled with the -w or -v parameters, the filenames will also contain the game name and song ID.

  • -ini: Set game config path
  • -w: log to WAV.
  • -v: log to VGM.

Key bindings (a mess)

This might not be complete yet.

Global

  • Q: exit
  • P: pause
  • U: update tick (be sure to pause first)
  • Esc: Go to main screen
  • F1: Go to about screen. If no game is loaded, select audio device.
  • F3: Reset sound driver. If no game is loaded, refresh game definitions.
  • F5: toggle stereo/quad output
  • F6: unmute all voices
  • F7: decrease volume
  • F8: increase volume
  • F10: toggle fast forward
  • F11: log sound to file
    • Logs started from the GUI have filenames hardcoded to qp_log.wav. Don't log for too long; 30 seconds = 30 MB.
    • Format: 32-bit float, 4 channels, rate is either 85333 or 88200.
  • F12: display rendering stats
  • Space: Go to playlist screen
  • Arrow keys: move selection

Playlist screen

  • Enter: Play selected song
  • R: Restart current song
  • N: Play next song
  • B: Play previous song
  • 1: Make song selection follow the playlist (could be useful for videos)
  • L: Display keyboard, while active:
    • 8: Show pitch modulation
    • 9: Show volume modulation
    • I: Transpose one octave down (shift notes right)
    • D: Transpose one octave up (shift notes left)

Main screen

  • 0-9: Preset action (song triggers, etc)
    • These are configured in the game config files, check the /ini directory.

if Track selected

  • L: Change between display modes (e.g. pattern view)

if Track or Register selected

  • C: clear register/track
  • S: stop track
  • I: increase value
  • D: decrease value
  • Enter: enter edit mode, while in Edit mode:
    • Up/Down: add/remove 0x10
    • Left/Right: add/remove 0x01
    • Shift: Hold down to multiply increment with 0x100
    • Enter: play song/change register
    • Esc: exit edit mode

if Voice selected

  • M: Mute voice
  • S: Solo voice
  • R: Reset mute/solo for all voices. Same as F6.

Notes

  • Playlists are all defined in the .INI files. If you find any errors or have any suggestions, please create an issue in the github repository.
  • The C30 chip is not emulated, instead the C352 is used. This makes VGM logging possible.
  • The C140 chip is not emulated, instead the C352 is used. The compressed sample format differs, breaking VGM logs in a few games.
  • The C219 chip is not emulated, instead the C352 is used. This actually improves the sound quality of VGM logs, as the C219 chip is not accurately emulated in VGM players.
  • Position envelopes (used by a few songs in Cyber Commando) are not supported.

Copyright

© 2016-2017 Ian Karlsson

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
You can’t perform that action at this time.