105 lines
1.8 KiB
C
105 lines
1.8 KiB
C
#include <psx.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
unsigned int prim_list[0x4000];
|
|
unsigned char filebuf[0x40000];
|
|
|
|
volatile int display_is_old = 0;
|
|
|
|
void prog_vblank_handler()
|
|
{
|
|
display_is_old = 1;
|
|
}
|
|
|
|
int main()
|
|
{
|
|
FILE *f;
|
|
GsSprite my_sprite;
|
|
GsImage my_image;
|
|
int y = 0;
|
|
int ro = 0;
|
|
int sc_x = SCALE_ONE;
|
|
int sc_y = SCALE_ONE;
|
|
unsigned short padbuf;
|
|
|
|
PSX_Init();
|
|
|
|
GsInit();
|
|
GsSetList(prim_list);
|
|
GsSetVideoMode(320, 240, EXAMPLES_VMODE);
|
|
|
|
GsClearMem();
|
|
GsSetDrawEnvSimple(0, 256, 320, 240);
|
|
GsSetDispEnvSimple(0, 0);
|
|
|
|
f = fopen("cdrom:\\IMAGE.TIM;1", "rb");
|
|
fseek(f, 0, SEEK_END);
|
|
y = ftell(f);
|
|
fseek(f, 0, SEEK_SET);
|
|
fread(filebuf, sizeof(char), y, f);
|
|
fclose(f);
|
|
|
|
GsImageFromTim(&my_image, filebuf);
|
|
GsSpriteFromImage(&my_sprite, &my_image, 1);
|
|
|
|
SetVBlankHandler(prog_vblank_handler);
|
|
|
|
GsLoadFont(768, 0, 768, 128);
|
|
while(GsIsWorking());
|
|
|
|
while(1)
|
|
{
|
|
if(display_is_old)
|
|
{
|
|
PSX_ReadPad(&padbuf, NULL);
|
|
if(padbuf & PAD_LEFT)
|
|
{
|
|
ro--;
|
|
if(ro < 0) ro = 359;
|
|
}
|
|
|
|
if(padbuf & PAD_RIGHT)
|
|
{
|
|
ro++;
|
|
if(ro>=360) ro = 0;
|
|
}
|
|
|
|
if(padbuf & PAD_UP)
|
|
sc_x+=128;
|
|
|
|
if(padbuf & PAD_DOWN)
|
|
sc_x-=128;
|
|
|
|
if(padbuf & PAD_CROSS)
|
|
sc_y-=128;
|
|
|
|
if(padbuf & PAD_CIRCLE)
|
|
sc_y+=128;
|
|
|
|
GsSortCls(0, 0, 0);
|
|
|
|
my_sprite.x = 100;
|
|
my_sprite.y = 100;
|
|
my_sprite.r = my_sprite.g = my_sprite.b = NORMAL_LUMINOSITY;
|
|
my_sprite.rotate = ROTATE_ONE*ro;
|
|
my_sprite.scalex = sc_x;
|
|
my_sprite.scaley = sc_y;
|
|
my_sprite.mx = (my_sprite.w/2) * (my_sprite.scalex / 4096);
|
|
my_sprite.my = (my_sprite.h/2) * (my_sprite.scaley / 4096);
|
|
GsSortSprite(&my_sprite);
|
|
|
|
GsPrintFont(0, 0, "ro=%d\nsc_x=%d\nsc_y=%d", ro, sc_x, sc_y);
|
|
|
|
GsDrawList();
|
|
while(GsIsWorking());
|
|
|
|
y=!y;
|
|
GsSetDrawEnvSimple(0, y?0:256, 320, 240);
|
|
GsSetDispEnvSimple(0, y?256:0);
|
|
display_is_old = 0;
|
|
}
|
|
}
|
|
}
|