-= UPDATED =- [VIDEO DEMULTIPLEXER] - Added CRI USM format demultiplexing. These have been seen in Crysis 2 and Ultimate Spider Man. - Added Microsoft XMV demultiplexing. These are found on Xbox games. This type can supposedly have raw PCM audio, but I haven't seen it yet; and consequently cannot automatically add the GENH headers for output. Video is currently unplayable. - Currently supported demux formats: DVD Video (VOB), MPEG1, MPEG2, PAM (PS3), PMF (PSP), PSS (PS2), SFD, USM, XMV (XBOX)
-= FIXED =-
-= THANKS =- Thanks to hcs for his usm_deinterleave source.
@SnakeMeat - I have updated my generic PSF1 driver to ver.3, and it includes some big changes. :)
1 - The overall file size of MAIN.EXE has shrunk from 104Kb to just 82Kb. No compression!
2 - I added ResetCallback and SetMem functions at the beginning of the Main loop for proper execution sequence. The SetMem function is set to 0x00200000, for retail PSone executables. Hopefully, future PSF players can utilize a DEV-unit's memory, which is 0x00800000 :D
3 - Some work was redone with the Reverb Engine, making it complete, meaning that every possible Reverb function is available to the end-user (via PSF-o-Cycle).
4 - The 'popping' and 'crackling' issues that some seem to experience have been fixed, finally.
5 - Proper CRC info has been added to the EXE header during compilation, fixing the "CRC error" that occurred with some PSFs when trying to playback with FooBar.
6 - The PSF Driver Stub is no longer erased when using PSF-o-Cycle's 'Optimize' option. The user must select 'Do not optimize song-specific regions'.
7 - The PSF Driver Stub is now proper initialized in the Main loop, before song playback.
8 - The parameter types have been fixed. Before they were all 'char' when they should have varied (long , short, etc).
9 - The customizable options with PSF-o-Cycle have been renamed to be more user-friendly.
10 - A lot of redundant and unused functions have been removed.
11 - Proper looping support. If a PSF fails to loop, set the 'Playback Amount' option to 0 (Infinity).
12 - Updated SEP support - can now support a SEP that includes up to 16 tracks (PSone MAX). Also included is the ability to play multiple tracks at once (SEP only!).
13 - Volume levels have been corrected, eliminating the need to adjust via PSF-o-Cycle, unless desired.
14 - Three new customizable options have been added, and they are as follows:
SEQ/SEP Address - Define where the sequence is located in executable memory. It must be at least 80030000 or above. VH Memory Address - Define where the VAB header is located in executable memory. It must be atleast 80030000 or above. VB Memory Address - Define where the VAB bank is located in executable memory. It must be at least 80030000 or above.
DOWNLOAD: http://www.the-coroner.com/PSF/MAIN.EXE
TODO: I am going to add support for 'auto shutoff', which will stop a track from playing silence (once playback is complete), allowing for automatic advance to the next track. This feature can be used for either non/looping PSFs, and overrides the "Play Forever" feature present in all PSF players.
Proper release information and details will soon follow in the form of a PDF.
I hope you can add it and it's new functions to VGMToolBox, soon. ;)
@MarkGrass: That's some good news! I'll see what I can do to add it soon. Is that compiled version set to loop forever? Also, what are the default adresses?
@Polokus: I'll add it to my todo list, but my first instinct is to say that will be beyond my abilities or something else will come first. You may want to explore how VFSs work if you have not already. Many archives can be extracted easily that way.
Unfortunately the archive i'm trying to extract has no file table. I thought that it wouldn't be too difficult to create an extractor that extracted from 6 bytes before the fc01 flag (Stereo) or the fc03 (Mono). Maybe I'm just getting way ahead of myself. I'm sure you will do your best and for that I thank you.
Sorry, I should have mentioned this stuff before. >.<
The function SsSeqPlay is set to 1 (SSPLAY_PLAY). This option will playback a sequence, only once. Almost every bgm-type PSF i've ever ripped has loop points in the MIDI data, thus making the music loop, automatically.
If there is an issue with a non-sfx PSF (background music) that doesn't loop when it should, change the "Playback Amount" variable to 0 (SSPLAY_INFINITY) using PSF-0-Cycle.
The only game i've ripped that requires SSPLAY_INFINITY was Mortal Kombat II, but that set was strange, anyhow (random bass fluctuations, irregularly low volume, etc.)
0x800104DC /* Jump Patch Address (jal main) */
Below are the defaults for data location, same as before.
unsigned long SEQ_DATA = 0x800A0000 unsigned long VH_DATA = 0x800E0000 unsigned long VB_DATA = 0x80160000