/*============================================================================ NuSYSTEM sample program SNAKE TAIL HACK gamepakrwerr.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 ReadFlg; void DrawRwErr( void ); extern void ContPakOpenAll( void ); extern void NoteOpenAll( 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[]; extern void SaveContPak( void ); extern int ChkPakStat( void ); /*--------------------------------------------------------------*/ /* Make the display list and activate the graphic task */ /* IN: None */ /* RET:None */ /*--------------------------------------------------------------*/ void makepakrwerrDL(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 ); DrawRwErr(); 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 updateRwPakErr(void) { /* A BUTTON */ if(ContTriger[0].trigger & A_BUTTON){ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* Specify next stage to main */ stage = 0; /* Play effect of OK */ nuAuSndPlayerPlay(EFF_OK); nuAuSndPlayerSetPitch(44100.0/32000); } /* B BUTTON */ if(ContTriger[0].trigger & B_BUTTON){ ContPakOpenAll(); if(ChkPakStat() != -1){ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* To the pack error screen */ stage = 4; }else{ NoteOpenAll(); /* Save data of the controller pack */ SaveContPak(); if(ChkPakStat() == -1){ /* Remove the call-back function.*/ nuGfxFuncRemove(); /* Indicate next stage to main */ stage = 0; }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 Pak error screen */ /* IN: None */ /* RET:None */ /*------------------------------*/ void DrawRwErr( 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 RUMBLE_PAK: sprintf(outstring,"PACK%d:RUMBLE PACK DETECTED", idx+1); break; default: if(ReadFlg){ sprintf(outstring,"PACK%d:LOAD FAIL", idx+1); }else{ sprintf(outstring,"PACK%d:SAVE FAIL", idx+1); } 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); if(ReadFlg){ sprintf(outstring,"PUSH B LOAD RETRY"); }else{ sprintf(outstring,"PUSH B SAVE RETRY"); } Draw8Font(50,200, TEX_COL_WHITE, 0); }