*************************************************** * * * Eternal SPU Plugin v.1.41 * * Official Manual * * * *************************************************** What's new? v.1.40 -> v.1.41 (31 May, 2003) ------------------------------------------------------------------------ * Fixed a problem that the record file got broken if SPU was closed during recording. * Fixed a bug in new interface, i.e. SPUplayCDDAchannel(). * Revised the recovery algorithm when the XA buffer over/under-flows. * Fixed some other small bugs. What's new? v.1.30 -> v.1.40 (17 May, 2003) ------------------------------------------------------------------------ * The first release with Eternal SPU plugin Linux port. * Additional audio devices are supported. SDL (Simple DirectMedia Layer) and WaveMapper are added to Windows port, and SDL and OSS are supported by Linux port. * Additional three reverb algorithms are implemented ("Freeverb","Iori's" and "Neill's"). Reverb type "Neill's", which is based on the result of analysis by Neill Corlett, must reproduce the most accurate reverb effect of real PSX. Thanks to Neill Corlett. * Pseudo-Noise emulation codes are completely revised. We believe that the noise sound gets nearly perfect. * Accuracy of pitch modulation is improved. Pitch errors in some games are fixed. We also believe that the pitch modulation gets nearly perfect. * Now, decoded result of XA sound can be read-back from sound buffer using DMA. The level meter of "Tales of Destiny" gets working. * Fixed the sound problem with some Konami's games like "Jikkyo Oshaberi Parodius". * Recovery algorithm in buffer overflow for XA stream is changed to get less noisy sound. * The "Record" function is completely replaced. Although the new SPU file format is incompatible with old one, is able to record register read/write, DMA read/write, XA stream and CDDA stream. * "Cache VAG decode" option added. Faster, but less compatibility. We recommend not to enable this option because some of games will make odd tones. * Mixing algorithm for wet component of reverb is changed. * Obsoleted the gray check of "Update before accessing register" option. * SPUasync - Smooth is fixed. Now it can work even with "Update before accessing register" option. * Information for developer of PSX emulator: We added new interface for CDDA stream to improve compatibility. i.e.: void CALLBACK SPUpalyCDDAchannel( short *pcm, int nbytes); This function enables to play CDDA sound through SPU plugin, and DMA read-back of CDDA waveform from SPU sound buffer will get working. Please contact us for more details. ------------------------------------------------------------------------ # Index ------------------------------------------------------------------------ 0. Introduction 1. Usage 2. Configure 2-1-0. [Audio device] - DirectSound / SDL / WaveMapper / OSS 2-1-1. [Audio device] - Buffer size 2-2-0. [Audio out method] - Thread / Timer / SPUasync 2-2-1. [Audio out method] - Async mode 2-3-0. [Misc] - Show realtime config window 2-3-1. [Misc] - Wait for XA buffer is free 2-3-2. [Misc] - Cache VAG decode 2-3-3. [Misc] - Fine tune 2-3-4. [Misc] - Reverb 2-4-0. [Special game fix] - Update before accessing register 2-4-1. [Special game fix] - SPU IRQ-Wait CPU action 2-4-2. [Special game fix] - SPU IRQ-Force interruption flag7 3. SPU file output function 3-1. How to record 3-2. How to play 4. FAQ 5. Disclaimer 6. Thanks 7. Credit ------------------------------------------------------------------------ 0. Introduction ------------------------------------------------------------------------ Eternal SPU Plugin is a sound plugin for PlayStation emulators. You can use this plugin on following PlayStation emulators. - PSEmu Pro : discontinued - ePSXe : http://www.epsxe.com/ - AdriPSX ILE : http://www.adripsx.com/ - PCSX : http://www.pcsx.net - PSinex : http://psinex.psxemu.com/ - FPSE : discontinued ------------------------------------------------------------------------ 1. Usage ------------------------------------------------------------------------ First, copy "spuEternal.dll" (for Windows) or "libspuEternal.so.1.41" (for Linux) into the plugin folder of emulator. After running the emulator, select [Eternal SPU Plugin x.x] in sound plugin configuration dialog. In case of ePSXe, you can call it by hitting [Config] button. If you finished config, reboot emulator. Enjoy! ------------------------------------------------------------------------ 2. Configuration ------------------------------------------------------------------------ 2-1-0. [Audio device] - DirectSound / SDL / WaveMapper / OSS You can select the audio device. [DirectSound] : Output sound using DirectSound. Need DirectX3 or higher. Windows version Only. [SDL] : Output sound using SDL (Simple DirectMedia Layer) Library. For Windows version, you must install "SDL.dll" into one of the following directories. 1. The directory in which the emulator is installed. 2. The system directory. 3. The directories listed in the PATH. Similarly, it is required that "libSDL.so" is properly installed for Linux version. [Wave Mapper] : Output sound using standard Windows Wave Mapper. It can't be used in a system which has no Wave devices. Windows version Only. [OSS] : Output sound using OSS (Open Sound System(TM)) driver. Linux version Only. ------------------------------------------------------------------------ 2-1-1. [Audio device] - Buffer size You can set the Sound buffer length between 0 and 999. Although default value is [64], you should set value by your own. * Smaller value will give shorter sound delay. * If the value is too small, the sound will be noisy. ------------------------------------------------------------------------ 2-2-0. [Audio out method] - Thread / Timer / SPUasync You can select the audio output method. Please set the method which best fits your PC. [Thread] --> Compatibility is higher than [Timer]. Load is higher than [Timer]. [Timer] --> Compatibility is lower than [Thread] Load is lower than [Thread]. [SPUasync] --> Compatibility is the highest. * When you use this function, it may be necessary to set [buffer size] larger than the others, or sound will be very noisy. * Must be supported by emulator. ------------------------------------------------------------------------ 2-2-1. [Audio out method] - Async mode You can select the mode of SPUasync. [Simple] --> This mode doesn't perform complicated processing. If frame rate is high or low, a sound will be choppy. SPU is always synchronized with PSX CPU core. [Wait] --> When frame rate is high, gives the waiting to become the optimal frame rate. When the frame rate is low, clears a delayed part to prevent repeating the same sound. SPU is always synchronized with PSX CPU core. [Smooth] --> SPU trims it's processing speed dynamically followed to frame rate. As a result, SPU may act asynchronously with PSX CPU core. Although sound won't be choppy with higher or lower frame rate, following games which use SPU-IRQ may cause some problems with this setting as well as "Thread" or "Timer". Ex.) * Valkyrie Profile * Star Ocean 2 * MetalGear Solid ...etc ------------------------------------------------------------------------ 2-3-0. [Misc] - Show realtime config window Show configuration window during emulation to change settings. You can use this option in case of window mode only. ------------------------------------------------------------------------ 2-3-1. [Misc] - Wait for XA buffer is free This function has emulator to wait for XA buffer is free to be able to put all XA data into XA buffer. * During reproduction of XA, even if you removes FPS limit, you can't change the speed of emulator. * Emulator's motion may become unstable. ------------------------------------------------------------------------ 2-3-2. [Misc] - Cache VAG decode In order to make processing fast, cash the decoded sample for every VAG block. This function still has some problems. ------------------------------------------------------------------------ 2-3-3. [Misc] - Fine tune You can set the pitch of sound. 10 : 1 half pitch high -10 : 1 half pitch low 120 : 1 octave high -120 : 1 octave low ------------------------------------------------------------------------ 2-3-4. [Misc] - Reverb You can select the Reverb emulation type. [Off] --> No reverb effect. [TiMidity] --> Reverb used by TiMidity. The same reverb effect with previous version. [Freeverb] --> Reverb used by Freeverb. One of the nice alternatives. [Iori's] --> Reverb developed by Iori in try and error. Another alternative. Less accurate than "Neill's", but high quality effect. [Neill's] --> Reverb based on the result of analysis by Neill Corlett. Most accurate one. ------------------------------------------------------------------------ 2-4-0. [Special game fix] - Update before accessing register These are options for solving the problems in specific games. Keep in mind that these options have great load depending on states. [Unchecked] --> When register reading, DirectSound buffer is not updated. [Checked] --> When register reading, DirectSound buffer is updated. This option is effective in following games. Ex.) * FinalFantasy8 : Opening BGM / air plane BGM * FinalFantasy9 : Air plane BGM * ChronoCross : BGM No.59 * DragonQuest7 : Ending BGM * GensoSuikoden2 : Battle BGM ...etc [Checked Gray] --> Obsoleted. ------------------------------------------------------------------------ 2-4-1. [Special game fix] - SPU IRQ-Wait CPU action Since this option is for specific games, so problem may occur in other games. This option will give good effect to following games. Ex.) * Valkyrie Profile * Star Osean2 * MetalGear Solid ...etc ------------------------------------------------------------------------ 2-4-2. [Special game fix] - SPU IRQ-Force interruption flag7 This option generated SPU-IRQ compulsorily. This option is effective in following games. Ex.) * Valkyrie Profile * Tales of Destiny ...etc ------------------------------------------------------------------------ 3. SPU Log file output function ------------------------------------------------------------------------ 3-1. How to record This function is to record sound by recording access events to a file. You can specify target event in "Rec option". 1. [Show realtime configure] is confirmed and PSEmulator is started, the [Record] button will become usable. 2. When you push the [Record] button, start SPU file recording. When you push the [Record...] button, stop SPU file recording. 3. The file "spulog.spu" is created in the folder of "..ePSXe". * It may not work depending on the timing which push [Record] button, and music. ------------------------------------------------------------------------ 3-2. How to play If you want to listen to the generated SPU file, - Eternal SPU Player : close source - SPU plugin for KbMediaPlayer : open source Please get these programs at http://www1.odn.ne.jp/psx-alternative/ ------------------------------------------------------------------------ 4. FAQ ------------------------------------------------------------------------ Q. Fastest setting? A. Please push the [Default] button. You should set [Buffer size] by your own. Q. Most highest compatibility setting? A. Please use [SPUasync]. When using this function, it is necessary to set [Buffer size] larger than usual. Must be supported by emulator. Q. Sound decay time is not accurate? A. We implemented envelope referring to PSX console, but may still have issues... Q. Very noisy... A. Please make buffer size larger than the current value. When you use [SPUasync], it is necessary to set [Buffer size] larger than usual. Q. Reverb & Noise emulation is not accurate? A. Try v1.40 or above. :-) Q. No sound on Windows2000... A. This plugin is executing multi thread, and changing thread priority. please try on "Administrator" user. ------------------------------------------------------------------------ 5. Disclaimer ------------------------------------------------------------------------ This program is freeware and cannot be sold. Also this program cannot be distributed without our permission. This program cannot be used for any commercial purposes. You may not reverse engineer, decompile, or disassemble the enclosed software. Authors are not responsible for any damages that this program may cause, and are also not responsible for anything this plugin will be used for. Please use this plugin under your responsibility. ------------------------------------------------------------------------------- 6. Thanks ------------------------------------------------------------------------------- - SPU plugin interface part in Pete's webpage by Pete - DSP part in Snes9x by Gary Henderson - DirectSound implementation part in UOMAME32j by NJ - Reverb type "TiMidity" by authors of TiMidity - ADSR analyse program by null2 - Reverb type "Freeverb" by authors of Freeverb - Reverb type "Neill's" analyzed by Neill Corlett - Linux port is based in part on the work of the FLTK project. (http://www.fltk.org) Thank you very much. ------------------------------------------------------------------------------- 7. Credit ------------------------------------------------------------------------------- Eternal SPU Plugin v.1.41 for PSX Emulator Release Date : 31 May, 2003 Developed by : PSX SPU Plugin Development Project Main Crews : Iori, Takashi Yano, Gunshinn, 2510, syo, Andy Location : PSX Alternative! URL : http://www1.odn.ne.jp/psx-alternative/ Contact : Andy : Takashi Yano : Gunshinn -------------------------------------------------------------------------------- Copyright (C) PSX SPU Plugin Development Project