-
Notifications
You must be signed in to change notification settings - Fork 7
About improved SNESAPU.DLL
The SNESAPU published here is based on version 2.0 of Alpha-II Productions with various improvements and customizations.
Some features are ported from version 3.0, however, in order to reduce maintenance costs and simplify, the functionality has been reduced compared to the official.
Includes:
- 8-point sinc interporation.
- Low-pass filter used in the actual device.
- Same noise generation algorithm as in the actual device.
- Additional DSP options.
- BASS boost.
- Surround canceller.
- Disable pitch modulation, pitch bend, FIR, envelope, and noise.
- Script700/TimerTrick compatible.
- Data transfer to actual APU using external equipment.
- Switching context.
Excludes:
- Mixing routines with integer and MMX. (Using floating-point only)
- API to retrieve BRR-decoded waveforms.
To emulate SPC700 and DSP, call the SNESAPU APIs in the following order:
void SetAPUOpt(u32 mixType, u32 numChn, u32 bits, u32 rate, u32 inter, u32 opts);
void LoadSPCFile(void *pFile);
void* EmuAPU(void *pBuf, u32 len, u8 type);
See APU.h for a description of each API.
The Script700 is an auxiliary script of SPC700 used in Japan.
Some songs (ex. PuyoPuyo series, RPG tsukuru 2, Furai no shiren, etc.) are not played simply by saving a SPC, because SFC main CPU transfers additional data in real time.
Script700 allows you to play these special SPCs by mimicking main CPU instructions.
KUROHANE Works has made a summary page for the list of known Script700.
See also: About special SPC (in Japanese)
For using Script700, save Script700 code to a file with same name as the SPC file, and change extension to '700'.
For example, if you want to apply Script700 to 'sample.spc', write a code in 'sample.700'.
For coding Script700, provided an extension plugin for VSCode.
This plug-in provides functions such as instruction highlighting.
See also: Script700 Helper
Improved SNESAPU.DLL supports data transfer to SHVC-SOUND using parallel port.
Refer to the following pages for electronic circuits for transfer.
See also: Snes APU on a PC
To transfer data, install "GiveIO" or "InpOut32" first, and call the SNESAPU APIs in the following order:
void LoadSPCFile(void *pFile);
-
s32 TransmitSPC(u32 addr);
- addr: Data address of parallel port. (ex. 0x378)
-
Result:
- 0 = Successful transfer
- not 0 = Failed, see below for the meaning of numbers.
Result | Cause |
---|---|
-1 | Not installed GiveIO or InpOut32. |
-2 | Not supported EPP/ECP mode. |
-3 | No space available for boot loader. |
1 ~ 9 | Failed reset SHVC-SOUND. |
10 ~ 19 -10 ~ -19 |
Failed transfer memory loader. |
20 ~ 29 -20 ~ -29 |
Failed transfer SPC buffer. |
In Japan, there is Dojin hardware called G.I.M.I.C which operates a retro music chip and outputs high quality sound.
This device with GMC-SPC2 module can output SFC music without need for make electronic circuitry.
The improved SNESAPU.DLL supports SPC playing using G.I.M.I.C and fast transfer.
Transfer time of this function is about 1.7 seconds, because unique boot code increases transfer capacity 3 times.