/*============================================================================
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);
}
}