/*============================================================================ NuSYSTEM sample program SNAKE TAIL HACK gametitle.c Copyright (C) 1997, NINTENDO Co,Ltd. ============================================================================*/ #include <assert.h> #include <nusys.h> #include <nualsgi_n.h> #include "main.h" #include "graphic.h" #include "font.h" #include "para.h" /*nusys*/ extern u32 nuScRetraceCounter; /* The retrace counter */ /* gamemain.c */ extern void InitGame( void ); /* main.c */ extern void LoadContPak( void ); extern void ContPakOpenAll( void ); extern void NoteOpenAll( void ); extern int ChkPakStat( void ); extern int ReplayMode; extern NUContData ContTriger[]; volatile extern int stage; extern int ContPakError; extern NUContPakFile pakFile[4]; /* view.c */ extern void SetViewMtx( Dynamic* dynamicp ); /* gamepakrwerr.c */ extern int ReadFlg; void DrawTitle( void ); /*--------------------------------------------------------------*/ /* Make the display list and activate the graphic task */ /* IN: None */ /* RET:None */ /*--------------------------------------------------------------*/ void maketitleDL(void) { Dynamic* dynamicp; /* Specify the dynamic buffer */ dynamicp = &gfx_dynamic[gfx_gtask_no]; /* Specify the display list buffer */ glistp = &gfx_glist[gfx_gtask_no][0]; /* The initialization of RSP and RDP */ gfxRCPInit(); /* Clear the frame and Z-buffer */ gfxClearCfb(); /* Setting the view-matrix */ SetViewMtx( dynamicp ); DrawTitle(); gDPFullSync(glistp++); gSPEndDisplayList(glistp++); assert((glistp - gfx_glist[gfx_gtask_no]) < GFX_GLIST_LEN); /* Activate the RSP task and switch display buffers*/ nuGfxTaskStart(&gfx_glist[gfx_gtask_no][0], (s32)(glistp - gfx_glist[gfx_gtask_no]) * sizeof (Gfx), NU_GFX_UCODE_F3DEX , NU_SC_SWAPBUFFER); /* Indicate next graphic task number*/ gfx_gtask_no++; gfx_gtask_no %= GFX_GTASK_NUM; } /*----------------------*/ /* The title progressing process */ /* IN: None */ /* RET:None */ /*----------------------*/ void updateTitle(void) { #if 0 int idx; if(ContTriger[0].trigger & L_TRIG){ for(idx = 0; idx < 4; idx++){ nuContPakOpen(&pakFile[idx], idx); switch(pakFile[idx].error){ case 0: osSyncPrintf("PACK%d\tOK\n",idx); break; case PFS_ERR_NOPACK: osSyncPrintf("PACK%d\tPFS_ERR_NOPACK\n",idx); break; case PFS_ERR_NEW_PACK: osSyncPrintf("PACK%d\tPFS_ERR_NEW_PACK\n",idx); break; case PFS_ERR_CONTRFAIL: osSyncPrintf("PACK%d\tPFS_ERR_CONTRFAIL\n",idx); break; case PFS_ERR_ID_FATAL: osSyncPrintf("PACK%d\tPFS_ERR_ID_FATAL\n",idx); break; case PFS_ERR_DEVICE: osSyncPrintf("PACK%d\tPFS_ERR_DEVICE\n",idx); break; default: break; } } osSyncPrintf("\n"); } #endif /* A BUTTON */ if(ContTriger[0].trigger & A_BUTTON){ ContPakOpenAll(); if(ChkPakStat() == -1){ NoteOpenAll(); if(ChkPakStat() != -1){ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* To the pack error screen*/ stage = 3; }else{ /* Remove the call-back function. */ nuGfxFuncRemove(); /* Indicate next stage to main*/ stage = 1; /*The initialization for this game volume*/ InitGame(); ReplayMode = 0; } }else{ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* Indicate next stage to main*/ stage = 3; } /* Play effect of OK */ nuAuSndPlayerPlay(EFF_OK); nuAuSndPlayerSetPitch(44100.0/32000); } if(ContTriger[0].trigger & B_BUTTON){ ContPakOpenAll(); if(ChkPakStat() != -1){ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* To the pack error screen */ stage = 3; }else{ NoteOpenAll(); /* The initialization for this game volume */ InitGame(); ReplayMode = 1; /* Play effect of OK*/ nuAuSndPlayerPlay(EFF_OK); nuAuSndPlayerSetPitch(44100.0/32000); /*Load data of the controller pack */ LoadContPak(); if(ChkPakStat() == -1){ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* Indicate next stage to main */ stage = 1; }else{ /* Remove the call-back function.*/ nuGfxFuncRemove(); ReadFlg = 1; /* Indicate next stage to main*/ stage = 4; } } /* Play effect of OK*/ nuAuSndPlayerPlay(EFF_OK); nuAuSndPlayerSetPitch(44100.0/32000); } } /*----------------------*/ /* Draw the title screen */ /* IN: None */ /* RET:None */ /*----------------------*/ void DrawTitle( void ) { sprintf(outstring,"SNAKE TAIL HACK"); Draw8Font(100,70, TEX_COL_WHITE, 0); if(0x30 > (nuScRetraceCounter & 0x30)){ sprintf(outstring,"PUSH A PADDATA SAVE MODE"); Draw8Font(50,130, TEX_COL_WHITE, 0); sprintf(outstring,"PUSH B REPLAY MODE"); Draw8Font(50,150, TEX_COL_WHITE, 0); } }