/*============================================================================
NuSYSTEM sample program SNAKE TAIL HACK
gamepakerr.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"
int NoSave;
void DrawErr( void );
extern int ReplayMode;
extern void SetViewMtx( Dynamic* dynamicp );
extern NUContData ContTriger[];
extern u32 nuScRetraceCounter; /* The retrace counter */
extern void InitGame( void );
volatile extern int stage;
extern int ContPakError;
extern NUContPakFile pakFile[];
extern int ContPakOpen[];
/*--------------------------------------------------------------*/
/* Make the display list and activate the graphic task */
/* IN: None */
/* RET:None */
/*--------------------------------------------------------------*/
void
makepakerrDL(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 );
DrawErr();
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);
/* Specify next graphic task number */
gfx_gtask_no++;
gfx_gtask_no %= GFX_GTASK_NUM;
}
/*------------------------------*/
/* The Pak error progressing process */
/* IN: None */
/* RET:None */
/*------------------------------*/
void
updatePakErr(void)
{
/* A BUTTON */
if(ContTriger[0].trigger & A_BUTTON){
/* Remove the call-back function.*/
nuGfxFuncRemove();
/* Indicate next stage to main*/
stage = 0;
NoSave = 0;
/*Play effect of OK */
nuAuSndPlayerPlay(EFF_OK);
nuAuSndPlayerSetPitch(44100.0/32000);
}
/* B BUTTON */
if(ContTriger[0].trigger & B_BUTTON){
/* Remove the call-back function.*/
nuGfxFuncRemove();
/* Indicate next stage to main */
stage = 1;
NoSave = 1;
ReplayMode = 0;
InitGame();
/* Play effect of OK */
nuAuSndPlayerPlay(EFF_OK);
nuAuSndPlayerSetPitch(44100.0/32000);
}
}
/*------------------------------*/
/* Draw the Pak error screen */
/* IN: None */
/* RET:None */
/*------------------------------*/
void
DrawErr( void )
{
int idx;
sprintf(outstring,"CONTROLLER PACK ERROR!!");
Draw8Font(60,70, TEX_COL_RED, 0);
for(idx = 0; idx < 4; idx++){
switch(ContPakOpen[idx]){
case 0:
sprintf(outstring,"PACK%d:OK", idx+1);
break;
case PFS_ERR_NOPACK:
sprintf(outstring,"PACK%d:NOPACK", idx+1);
break;
case PFS_ERR_NEW_PACK:
sprintf(outstring,"PACK%d:NEW_PACK", idx+1);
break;
case PFS_ERR_CONTRFAIL:
sprintf(outstring,"PACK%d:CONTROLLER PACK FAIL", idx+1);
break;
case PFS_ERR_ID_FATAL:
sprintf(outstring,"PACK%d:PACK ID FATAL", idx+1);
break;
case PFS_ERR_DEVICE:
sprintf(outstring,"PACK%d:DEVICE ERROR", idx+1);
break;
case NOT_CREAT:
sprintf(outstring,"PACK%d:FILE FULL OR PACK FULL", idx+1);
break;
case RUMBLE_PAK:
sprintf(outstring,"PACK%d:RUMBLE PACK DETECTED", idx+1);
break;
default:
break;
}
Draw8Font(50,90+idx*10, TEX_COL_WHITE, 0);
}
sprintf(outstring,"PLEASE CHECK CONTROLLER PACK");
Draw8Font(50,160, TEX_COL_WHITE, 0);
sprintf(outstring,"PUSH A RETURN TITLE");
Draw8Font(50,180, TEX_COL_WHITE, 0);
sprintf(outstring,"PUSH B PLAY NOSAVE");
Draw8Font(50,200, TEX_COL_WHITE, 0);
}