Also my library was updated with some additional samples for using Sprites, Sound and BS Image.
Enjoy
Full Tutorial: http://onorisoft.free.fr/psx/tutorial/tuto.htm
My lib: http://onorisoft.free.fr/psx/tutorial/psxlib.zip
With my lib, Loading and drawing a sprite is as simple as that:
Code: Select all
DataManager_Files game_datas[] =
{
{"sprite.tim", 0},
{NULL, 0}
};
#define SPRITE_TIM 0
int main(void)
{
GsOT *ot;
int cputime, gputime;
System_Init(MODE_PAL, VMODE_16BITS, 320, 240, GsNONINTER, 0);
DataManager_Init();
DataManager_LoadDatas("DATA", game_datas);
Tim_Load(&TIMimage, game_datas[SPRITE_TIM].address);
Sprite_Init(&Sprite, &TIMimage, SPRITE_NORMAL, 0, 0, 26, 26);
Sprite_SetPosition(&Sprite, (320-26)/2, (240-26)/2);
while (!IsPadPress(Pad1Start))
{
ot = System_InitFrame();
Sprite_DrawFast(&Sprite, ot);
System_DrawFrame(ot, &cputime, &gputime);
}
System_Exit();
}
Code: Select all
u_char bsdata[32*1024]; // BS encoded Image
u_char imgdata[320*240*3]; // Raw 24 bits decoded Image
u_char rle_buffer[BS_RLE_BUFFER_SIZE]; // Decode Buffer
int main(void)
{
int i, j = 0;
GsOT *ot;
int cputime, gputime;
// Set 24bits mode
System_Init(MODE_PAL, VMODE_24BITS, 320, 240, GsNONINTER, 0);
DataManager_Init();
DataManager_Load("DATA\\EL1_3.BS", bsdata);
BS_SetClipping(320, 240);
BS_Decode((u_long *)bsdata, (u_long *)rle_buffer, (u_long *)imgdata, 320, 240, BS_OUTPUT_24BITS);
BS_Display((u_long *)imgdata, 0, 0, 320, 240, BS_OUTPUT_24BITS, false);
while (!IsPadPress(Pad1Start))
{
}
System_Exit();
return (0);
}