diff options
Diffstat (limited to 'examples/demos/n00bdemo/logo.c')
| -rw-r--r-- | examples/demos/n00bdemo/logo.c | 242 |
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 ); - + } |
