aboutsummaryrefslogtreecommitdiff
path: root/examples/demos/n00bdemo/logo.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/demos/n00bdemo/logo.c')
-rw-r--r--examples/demos/n00bdemo/logo.c242
1 files changed, 121 insertions, 121 deletions
diff --git a/examples/demos/n00bdemo/logo.c b/examples/demos/n00bdemo/logo.c
index 784c9e1..c6faf51 100644
--- a/examples/demos/n00bdemo/logo.c
+++ b/examples/demos/n00bdemo/logo.c
@@ -5,7 +5,7 @@
#include <psxgte.h>
#include <psxgpu.h>
#include <inline_c.h>
-#include "smd.h"
+#include <smd/smd.h>
#include <lzp/lzp.h>
#include "disp.h"
@@ -54,29 +54,29 @@ typedef struct {
extern NODE _end[];
void DumpHeap() {
-
+
NODE *n = _end;
-
+
printf( "--\n" );
-
+
while( 1 ) {
-
- printf( "B:%08p P:%08p N:%08p SZ:%d BS:%d\n",
- n, n->prev, n->next, n->size,
+
+ printf( "B:%08p P:%08p N:%08p SZ:%d BS:%d\n",
+ n, n->prev, n->next, n->size,
((unsigned int)n->next - (unsigned int)n) );
-
+
if ( !n->next )
break;
-
+
n = (NODE*)n->next;
-
+
}
-
+
}
void intro() {
-
+
SVECTOR quad_coords[] = {
{ -100, -100, 0, 0 },
{ 100, -100, 0, 0 },
@@ -85,18 +85,18 @@ void intro() {
};
PARTICLE stars[MAX_STARS];
-
+
VECTOR mpos;
SVECTOR mrot,trot;
SC_OT s_ot;
-
+
SMD *o_disk, *o_star, *o_text, *o_psn00b, *o_n00blogo;
-
+
int i,count = 0;
-
+
int logo_scale;
int logo_rot;
-
+
int logo_yvel;
int logo_ypos;
int logo_step;
@@ -104,10 +104,10 @@ void intro() {
int logo_svel;
int logo_count = 0;
int logo_tscale;
-
+
int logo_n00b_spin;
int logo_fade = 0;
-
+
struct {
int step;
int yvel;
@@ -129,7 +129,7 @@ void intro() {
3072,
0
};
-
+
struct {
VECTOR pos;
int scale;
@@ -139,180 +139,180 @@ void intro() {
ONE,
1024
};
-
-
+
+
i = lzpSearchFile( "mtekdisk", lz_resources );
o_disk = (SMD*)malloc( lzpFileSize( lz_resources, i ) );
lzpUnpackFile( o_disk, lz_resources, i );
smdInitData( o_disk );
-
+
i = lzpSearchFile( "mtektext", lz_resources );
o_text = (SMD*)malloc( lzpFileSize( lz_resources, i ) );
lzpUnpackFile( o_text, lz_resources, i );
smdInitData( o_text );
-
+
i = lzpSearchFile( "starsprite", lz_resources );
o_star = (SMD*)malloc( lzpFileSize( lz_resources, i ) );
lzpUnpackFile( o_star, lz_resources, i );
smdInitData( o_star );
-
+
i = lzpSearchFile( "psn00blogo", lz_resources );
o_psn00b = (SMD*)malloc( lzpFileSize( lz_resources, i ) );
lzpUnpackFile( o_psn00b, lz_resources, i );
smdInitData( o_psn00b );
-
+
i = lzpSearchFile( "n00blogo", lz_resources );
o_n00blogo = (SMD*)malloc( lzpFileSize( lz_resources, i ) );
lzpUnpackFile( o_n00blogo, lz_resources, i );
smdInitData( o_n00blogo );
-
+
//DumpHeap();
-
-
+
+
// Set some Scarlet global parameters
smdSetBaseTPage( 0x200 );
-
+
// Change clear color
setRGB0( &draw, 255, 255, 255 );
-
+
setVector( &trot, 0, 0, 0 );
-
-
+
+
// Initialize stars
for( i=0; i<MAX_STARS; i++ ) {
-
+
stars[i].x = ONE*(-200+(rand()%400));
stars[i].y = ONE*(80+(rand()%100));
-
+
stars[i].yvel = -(rand()%32768);
stars[i].xvel = -(ONE*(10-(rand()%20)));
-
+
stars[i].scale = 2048+(rand()%2048);
stars[i].rot = ONE*(rand()%4096);
stars[i].rotv = ONE*(-40+(rand()%80));
-
+
}
-
+
logo_n00b_spin = ONE+1024;
-
+
while( logo_count < 1320 ) {
-
+
if( logo_count < 700 ) {
-
+
if( logo_count > 360 ) {
mtek.spin -= mtek.spinvel;
mtek.spinvel += 1280;
}
-
+
setVector( &mpos, 0, -(mtek.ypos>>12)-20, 400 );
setVector( &mrot, 0, mtek.spin>>12, mtek.rot>>12 );
-
+
RotMatrix( &mrot, &mtx );
TransMatrix( &mtx, &mpos );
setVector( &mpos, mtek.scale, mtek.scale, 4096 );
ScaleMatrix( &mtx, &mpos );
-
+
gte_SetRotMatrix( &mtx );
gte_SetTransMatrix( &mtx );
-
+
nextpri = smdSortModelFlat( ot[db]+10, nextpri, o_disk );
-
+
if( mtek.step > 0 ) {
-
+
setVector( &mpos, 0, 180, 400 );
TransMatrix( &mtx, &mpos );
gte_SetTransMatrix( &mtx );
-
+
nextpri = smdSortModelFlat( ot[db]+8, nextpri, o_text );
-
+
if( logo_count < 480 ) {
-
+
SVECTOR srot;
-
+
for( i=0; i<MAX_STARS; i++ ) {
-
+
setVector( &mpos, stars[i].x>>12, stars[i].y>>12, 320 );
setVector( &srot, 0, 0, stars[i].rot>>12 );
-
+
stars[i].x += stars[i].xvel;
stars[i].y += stars[i].yvel;
-
+
stars[i].yvel += 512;
stars[i].rot += stars[i].rotv;
-
+
RotMatrix( &srot, &mtx );
TransMatrix( &mtx, &mpos );
-
+
setVector( &mpos, stars[i].scale, stars[i].scale, 4096 );
ScaleMatrix( &mtx, &mpos );
-
+
gte_SetRotMatrix( &mtx );
gte_SetTransMatrix( &mtx );
-
+
nextpri = smdSortModelFlat( ot[db]+6, nextpri, o_star );
-
+
}
-
+
}
-
+
}
-
+
if( !mtek.step ) {
mtek.rot -= ONE*20;
} else if( mtek.step == 1 ) {
mtek.rot += ( -mtek.rot )>>4;
}
-
-
+
+
if( mtek.step < 2 ) {
mtek.scale += (ONE-mtek.scale )>>5;
mtek.yvel += 512;
mtek.ypos -= mtek.yvel;
}
-
-
+
+
if( ( mtek.ypos <= 0 ) && ( mtek.yvel > 0 ) ) {
mtek.yvel = -ONE*6;
mtek.step++;
}
-
+
// Does the transition effect
if( logo_count > 480 ) {
-
+
TILE *rect = (TILE*)nextpri;
-
+
mtek.trot += 16;
-
+
setTile( rect );
setXY0( rect, 0, 0 );
setWH( rect, 640, 511 );
setRGB0( rect, 0, 0, 0 );
addPrim( ot[db]+4, rect );
nextpri += sizeof(TILE);
-
+
setVector( &mrot, 0, 0, mtek.trot );
setVector( &mpos, mtek.tscale, mtek.tscale, 4096 );
-
+
RotMatrix( &mrot, &mtx );
ScaleMatrix( &mtx, &mpos );
-
+
gte_SetRotMatrix( &mtx );
-
+
for( i=0; i<6; i++ ) {
-
+
MASKP_F4 *pol4 = (MASKP_F4*)nextpri;
-
+
setVector( &mpos, -100+(100*(i%3)), -60+(120*(i/3)), 160 );
TransMatrix( &mtx, &mpos );
gte_SetTransMatrix( &mtx );
-
+
pol4->tag = 0x08000000;
pol4->tpage = 0xe1000020;
pol4->mask1 = 0xe6000001;
pol4->mask2 = 0xe6000002;
pol4->code = 0x2A;
-
+
gte_ldv3( &quad_coords[0], &quad_coords[1], &quad_coords[2] );
gte_rtpt();
gte_stsxy0( &pol4->x0 );
@@ -320,111 +320,111 @@ void intro() {
gte_rtps();
gte_stsxy3( &pol4->x1, &pol4->x2, &pol4->x3 );
setRGB0( pol4, 0, 0, 0 );
-
+
addPrim( ot[db]+4, pol4 );
nextpri += sizeof(MASKP_F4);
-
+
}
-
+
mtek.tscale += ( -mtek.tscale )>>6;
-
+
}
-
+
} else {
-
+
setRGB0( &draw, 0, 0, 0 );
-
+
}
-
+
if( logo_count >= 480 ) {
-
+
if( logo_count > 840 ) {
-
+
psn00b.pos.vx += ((ONE*-450)-psn00b.pos.vx)>>4;
psn00b.pos.vy += ((ONE*350)-psn00b.pos.vy)>>4;
-
+
setVector( &mpos, 0, 0, 600 );
mpos.vx = psn00b.pos.vx>>12;
mpos.vy = psn00b.pos.vy>>12;
-
+
psn00b.scale += ( 1536-psn00b.scale )>>4;
-
+
setVector( &mrot, 0, 0, 0 );
-
+
RotMatrix( &mrot, &mtx );
TransMatrix( &mtx, &mpos );
-
+
setVector( &mpos, psn00b.scale, psn00b.scale, ONE );
-
+
ScaleMatrix( &mtx, &mpos );
-
+
} else {
-
+
setVector( &mpos, 0, 0, 600 );
setVector( &mrot, 0, logo_n00b_spin, 0 );
-
+
RotMatrix( &mrot, &mtx );
TransMatrix( &mtx, &mpos );
-
+
logo_n00b_spin += ( -logo_n00b_spin )>>6;
-
+
}
-
+
gte_SetRotMatrix( &mtx );
gte_SetTransMatrix( &mtx );
-
+
nextpri = smdSortModelFlat( ot[db]+3, nextpri, o_psn00b );
-
+
if( logo_count > 900 ) {
-
+
setVector( &mpos, 0, 0, 250 );
setVector( &mrot, psn00b.scarlet_spin, 0, 0 );
-
+
RotMatrix( &mrot, &mtx );
TransMatrix( &mtx, &mpos );
-
+
gte_SetRotMatrix( &mtx );
gte_SetTransMatrix( &mtx );
-
+
nextpri = smdSortModelFlat( ot[db]+3, nextpri, o_n00blogo );
-
+
psn00b.scarlet_spin += ( -psn00b.scarlet_spin )>>6;
-
+
}
-
+
}
-
+
if( logo_count > 1200 ) {
-
+
FADERECT *fade = (FADERECT*)nextpri;
-
+
fade->tag = 0x04000000;
fade->tpage = 0xe1000040;
fade->code = 0x62;
-
+
setRGB0( fade, logo_fade, logo_fade, logo_fade );
setXY0( fade, 0, 0 );
setWH( fade, 640, 480 );
addPrim( ot[db]+2, fade );
-
+
if( logo_fade < 250 ) {
logo_fade += 4;
}
-
+
nextpri += sizeof(FADERECT);
-
+
}
-
+
display();
-
+
logo_count++;
-
+
}
-
+
free( o_disk );
free( o_text );
free( o_star );
free( o_psn00b );
free( o_n00blogo );
-
+
}