Skip to content

ps2homebrew/isjpcm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Independent SjPCM 2.2 (iSjPCM)
===========================================================

This is an modification of SjPCM 2.1 which does not require
LIBSD nor freesd, which means its a standalone irx module
without any spu2 module dependencies.

It requires the ps2sdk source to build.

EE:
Nothing changed, just "ported" over to ps2sdk.

IOP:
iSjPCM is now able to resample the sound buffer in case 
the sample rate is not 48Khz (IOP mem cost is 3840 bytes)

Resampling is made based on the sample size passed to 
the SjPCM_Enqueue(..) function (EE side). Conversion 
algo is very basic and only works with the following 
sample size :
- 960 for 48Khz (PAL) > no resampling in this case
- 480 for 24Khz (PAL)
- 320 for 16Khz (PAL)
- 240 for 12Khz (PAL)
- 120 for  8Khz (PAL)
		
- 800 for 48Khz (NTSC) > no resampling in this case		
- 400 for 24Khz (NTSC)
- 266 for 16Khz (NTSC) 
- 200 for 12Khz (NTSC)
- 100 for  8Khz (NTSC)

other values didnt' tested, so don't try it won't work!

All spu2 code is based on freesd source and is #ifdef'ed
to only contain the parts of each function required by
iSjPCM, if you compile without -DISJPCM it will include
all the spu2 code, in case you want to use spu2.c for 
something else.

You can also compile without -DNOPRINT, this will cause
iSjPCM to print info to the console (like the original 
SjPCM did).

All the optimizations were done to keep the size
of the irx to a minimum.

You can also build with -DLIBSD and it will compile
like the original SjPCM which depends on LIBSD/freesd

You can reduce the size of iSjPCM further by removing
the functions you don't need for your application. Like
SjPCM_Pause/Quit/etc.

I hope this releases will helpe some with sound coding :)

Lukasz Bruun (26th August 2004)