aboutsummaryrefslogtreecommitdiff
path: root/examples/n00bdemo/logo.c
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2020-04-24 19:01:28 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2020-04-24 19:01:28 +0800
commit1aa0e17df7c325a41de8cf8a57f52ed853f08bf3 (patch)
tree5ec7f69ca0104f2b0a41e2ee7d3cb0cf0c9c54c5 /examples/n00bdemo/logo.c
parente82da2abe4c264d4b48a48d79cf9b8e4c4fb8ab6 (diff)
downloadpsn00bsdk-1aa0e17df7c325a41de8cf8a57f52ed853f08bf3.tar.gz
Refined toolchain instructions, organized examples, added automatic retry for CdRead(), added FIOCSCAN ioctl in psxsio TTY driver, added tty and console examples.
Diffstat (limited to 'examples/n00bdemo/logo.c')
-rw-r--r--examples/n00bdemo/logo.c428
1 files changed, 0 insertions, 428 deletions
diff --git a/examples/n00bdemo/logo.c b/examples/n00bdemo/logo.c
deleted file mode 100644
index 3fdef5e..0000000
--- a/examples/n00bdemo/logo.c
+++ /dev/null
@@ -1,428 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <psxetc.h>
-#include <psxgte.h>
-#include <psxgpu.h>
-#include <inline_c.h>
-#include "malloc.h"
-#include "smd.h"
-#include "lzp.h"
-
-#include "disp.h"
-#include "data.h"
-
-#define MAX_STARS 64
-
-
-typedef struct {
- int x,y;
- int xvel,yvel;
- int scale;
- int rot,rotv;
-} PARTICLE;
-
-typedef struct {
- unsigned int tag;
- unsigned int tpage;
- unsigned int mask1;
- unsigned char r0,g0,b0,code;
- short x0,y0;
- short x1,y1;
- short x2,y2;
- short x3,y3;
- unsigned int mask2;
-} MASKP_F4;
-
-typedef struct {
- unsigned int tag;
- unsigned int tpage;
- unsigned char r0,g0,b0,code;
- short x0,y0;
- short w,h;
-} FADERECT;
-
-
-SMD *o_psn00b, *o_n00blogo;
-
-
-typedef struct {
- unsigned int *prev;
- unsigned int *next;
- int size;
-} NODE;
-
-void DumpHeap() {
-
- NODE *n = (NODE*)GetBSSend();
-
- printf( "--\n" );
-
- while( 1 ) {
-
- 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 },
- { -100, 100, 0, 0 },
- { 100, 100, 0, 0 }
- };
-
- 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;
- int logo_spin;
- int logo_svel;
- int logo_count = 0;
- int logo_tscale;
-
- int logo_n00b_spin;
- int logo_fade = 0;
-
- struct {
- int step;
- int yvel;
- int ypos;
- int rot;
- int scale;
- int spin;
- int spinvel;
- int tscale;
- int trot;
- } mtek = {
- 0,
- 0,
- ONE*750,
- -ONE*512,
- ONE*7,
- 0,
- 0,
- 3072,
- 0
- };
-
- struct {
- VECTOR pos;
- int scale;
- int scarlet_spin;
- } psn00b = {
- { 0, 0, 0 },
- 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 );
- gte_ldv0( &quad_coords[3] );
- 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 );
-
-}